@mnbny/woof 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -4
- package/cli/templates/add-draft.md +4 -3
- package/cli/templates/add-result.md +1 -0
- package/cli/templates/edit-draft.md +4 -2
- package/cli/templates/export-result.md +2 -0
- package/cli/templates/import-decision.md +3 -1
- package/cli/templates/import-private.md +6 -0
- package/cli/templates/private-value.md +1 -0
- package/cli/templates/private-warning.md +1 -0
- package/cli/woof.bundle.mjs +156 -154
- package/package.json +2 -2
package/cli/woof.bundle.mjs
CHANGED
|
@@ -1,144 +1,144 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import{createRequire as __woofRequire}from'node:module';const require=__woofRequire(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`)}function
|
|
5
|
-
`)}catch(n){console.error(n)}}async function
|
|
6
|
-
`)}function
|
|
7
|
-
`),process.exit(1)}}async function df(e){let t=await Ce(e.args||{}),n=new Set,r=new Set;for(let[i,o]of Object.entries(t)){n.add(i);for(let s of Mn(o.alias))r.add(s)}return{help:Vs("help","h",n,r),version:Vs("version","v",n,r)}}function Vs(e,t,n,r){return n.has(e)||r.has(e)?[]:n.has(t)||r.has(t)?[`--${e}`]:[`--${e}`,`-${t}`]}var At,af,jr,Cr,ut,Rr,Ar,ff,Js=G(()=>{Hs();At=class extends Error{code;constructor(e,t){super(e),this.name="CLIError",this.code=t}};af=(()=>{let e=globalThis.process?.env??{};return e.NO_COLOR==="1"||e.TERM==="dumb"||e.TEST||e.CI})(),jr=(e,t=39)=>n=>af?n:`\x1B[${e}m${n}\x1B[${t}m`,Cr=jr(1,22),ut=jr(36),Rr=jr(90),Ar=jr(4,24);ff=/^no[-A-Z]/});var Fn,Bi=G(()=>{Fn={name:"@mnbny/woof",version:"0.1.0",description:"Local CLI for reusable instructions, prompts, and computed resources",homepage:"https://github.com/mnbny/woof#readme",bugs:{url:"https://github.com/mnbny/woof/issues"},repository:{type:"git",url:"git+https://github.com/mnbny/woof.git"},license:"MIT",type:"module",bin:{woof:"./cli/woof.bundle.mjs"},files:["cli/woof.bundle.mjs","cli/templates/*.md","cli/templates/editor.html","skills/woof-execution/SKILL.md"],scripts:{build:"tsx .tools/scripts/build.ts",prepack:"pnpm build","pack:check":"tsx .tools/scripts/pack-check.ts",test:"vitest run --config .tools/tests/vitest.config.ts",validate:"tsx .tools/scripts/scripty.ts --sequential && pnpm build","validate:format":"SCRIPTY=1 prettier --write . --ignore-unknown --cache --log-level=error","validate:lint":"SCRIPTY=2 eslint --fix --cache --format=pretty .","validate:typecheck":"SCRIPTY=3 tsc --noEmit"},devDependencies:{"@chatwoot/pico-search":"0.6.2","@clack/prompts":"1.8.1","@eslint/js":"10.0.1","@tsconfig/strictest":"2.0.8","@types/node":"26.6.6","@types/picomatch":"4.0.3",ansis:"4.4.0","change-case":"5.4.4",citty:"0.2.2",diff:"9.0.0",esbuild:"0.28.2",eslint:"10.13.0","eslint-config-prettier":"10.1.8","eslint-formatter-pretty":"7.1.0","eslint-plugin-import":"2.32.0","eslint-plugin-prettier":"5.5.7","eslint-plugin-simple-import-sort":"14.0.0",fflate:"0.8.3",globals:"17.13.0",marked:"18.1.2",picomatch:"4.0.3",playwright:"1.64.1",prettier:"3.9.10","prettier-plugin-packagejson":"3.0.3","prettier-plugin-sh":"0.20.2",sharp:"0.35.5",tsx:"4.23.15",typescript:"6.0.3","typescript-eslint":"8.72.1",valibot:"1.5.0",vitest:"5.0.5",yaml:"2.9.1"},packageManager:"pnpm@12.16.1",engines:{node:"^22.13.0 || ^24.0.0 || >=26.0.0"},publishConfig:{access:"public"}}});function Ys(e){return!e&&!Ir?gf:{lang:e?.lang??Ir?.lang,message:e?.message,abortEarly:e?.abortEarly??Ir?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Ir?.abortPipeEarly}}function vf(e){return yf?.get(e)}function kf(e){return wf?.get(e)}function xf(e,t){return $f?.get(e)?.get(t)}function Qs(e){let t=typeof e;return t==="string"?`"${e}"`:t==="number"||t==="bigint"||t==="boolean"?`${e}`:t==="object"||t==="function"?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":t}function qe(e,t,n,r,i){let o=i&&"input"in i?i.input:n.value,s=i?.expected??e.expects??null,a=i?.received??Qs(o),c={kind:e.kind,type:e.type,input:o,expected:s,received:a,message:`Invalid ${t}: ${s?`Expected ${s} but r`:"R"}eceived ${a}`,requirement:e.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},u=e.kind==="schema",l=i?.message??e.message??xf(e.reference,c.lang)??(u?kf(c.lang):null)??r.message??vf(c.lang);l!==void 0&&(c.message=typeof l=="function"?l(c):l),u&&(n.typed=!1),n.issues?n.issues.push(c):n.issues=[c]}function bf(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function ea(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&t!=="__proto__"&&t!=="prototype"&&t!=="constructor"}function Ef(e,t){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function yt(e){return e["~standard"]={version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},Ys())},e}function Gi(e,t){return{kind:"validation",type:"min_length",reference:Gi,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(n,r){return n.typed&&n.value.length<this.requirement&&qe(this,"length",n,r,{received:`${n.value.length}`}),n}}}function Ui(e,t){return{kind:"validation",type:"regex",reference:Ui,async:!1,expects:`${e}`,requirement:e,message:t,"~run"(n,r){return n.typed&&!this.requirement.test(n.value)&&qe(this,"format",n,r),n}}}function ta(e,t,n){return typeof e.fallback=="function"?e.fallback(t,n):e.fallback}function na(e,t,n){return typeof e.default=="function"?e.default(t,n):e.default}function ra(e,t){return!e["~run"]({value:t},Sf).issues}function tn(e,t){return yt({kind:"schema",type:"array",reference:tn,expects:"Array",async:!1,item:e,message:t,"~run"(n,r){let i=n.value;if(Array.isArray(i)){n.typed=!0,n.value=[];for(let o=0;o<i.length;o++){let s=i[o],a=this.item["~run"]({value:s},r);if(a.issues){let c={type:"array",origin:"value",input:i,key:o,value:s};for(let u of a.issues)u.path?u.path.unshift(c):u.path=[c],n.issues?.push(u);if(n.issues||(n.issues=a.issues),r.abortEarly){n.typed=!1;break}}a.typed||(n.typed=!1),n.value.push(a.value)}}else qe(this,"type",n,r);return n}})}function lt(e,t){return yt({kind:"schema",type:"exact_optional",reference:lt,expects:e.expects,async:!1,wrapped:e,default:t,"~run"(n,r){return this.wrapped["~run"](n,r)}})}function Hi(e){return yt({kind:"schema",type:"lazy",reference:Hi,expects:"unknown",async:!1,getter:e,"~run"(t,n){return this.getter(t.value)["~run"](t,n)}})}function Rt(e,t){return yt({kind:"schema",type:"literal",reference:Rt,expects:Qs(e),async:!1,literal:e,message:t,"~run"(n,r){return bf(n.value,this.literal)?n.typed=!0:qe(this,"type",n,r),n}})}function zn(e,t,n){return yt({kind:"schema",type:"object_with_rest",reference:zn,expects:"Object",async:!1,entries:e,rest:t,message:n,"~run"(r,i){let o=r.value;if(o&&typeof o=="object"){r.typed=!0,r.value={};for(let s in this.entries){let a=this.entries[s];if(s in o||(a.type==="exact_optional"||a.type==="optional"||a.type==="nullish")&&a.default!==void 0){let c=s in o?o[s]:na(a),u=a["~run"]({value:c},i);if(u.issues){let l={type:"object",origin:"value",input:o,key:s,value:c};for(let p of u.issues)p.path?p.path.unshift(l):p.path=[l],r.issues?.push(p);if(r.issues||(r.issues=u.issues),i.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),r.value[s]=u.value}else if(a.fallback!==void 0)r.value[s]=ta(a);else if(a.type!=="exact_optional"&&a.type!=="optional"&&a.type!=="nullish"&&(qe(this,"key",r,i,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:o,key:s,value:o[s]}]}),i.abortEarly))break}if(!r.issues||!i.abortEarly){for(let s in o)if(ea(o,s)&&!Object.prototype.hasOwnProperty.call(this.entries,s)){let a=this.rest["~run"]({value:o[s]},i);if(a.issues){let c={type:"object",origin:"value",input:o,key:s,value:o[s]};for(let u of a.issues)u.path?u.path.unshift(c):u.path=[c],r.issues?.push(u);if(r.issues||(r.issues=a.issues),i.abortEarly){r.typed=!1;break}}a.typed||(r.typed=!1),r.value[s]=a.value}}}else qe(this,"type",r,i);return r}})}function _r(e,t,n){return yt({kind:"schema",type:"record",reference:_r,expects:"Object",async:!1,key:e,value:t,message:n,"~run"(r,i){let o=r.value;if(o&&typeof o=="object"){r.typed=!0,r.value={};for(let s in o)if(ea(o,s)){let a=o[s],c=this.key["~run"]({value:s},i);if(c.issues){let l={type:"object",origin:"key",input:o,key:s,value:a};for(let p of c.issues)p.path=[l],r.issues?.push(p);if(r.issues||(r.issues=c.issues),i.abortEarly){r.typed=!1;break}}let u=this.value["~run"]({value:a},i);if(u.issues){let l={type:"object",origin:"value",input:o,key:s,value:a};for(let p of u.issues)p.path?p.path.unshift(l):p.path=[l],r.issues?.push(p);if(r.issues||(r.issues=u.issues),i.abortEarly){r.typed=!1;break}}(!c.typed||!u.typed)&&(r.typed=!1),c.typed&&(r.value[c.value]=u.value)}}else qe(this,"type",r,i);return r}})}function Bn(e,t){return yt({kind:"schema",type:"strict_object",reference:Bn,expects:"Object",async:!1,entries:e,message:t,"~run"(n,r){let i=n.value;if(i&&typeof i=="object"){n.typed=!0,n.value={};for(let o in this.entries){let s=this.entries[o];if(o in i||(s.type==="exact_optional"||s.type==="optional"||s.type==="nullish")&&s.default!==void 0){let a=o in i?i[o]:na(s),c=s["~run"]({value:a},r);if(c.issues){let u={type:"object",origin:"value",input:i,key:o,value:a};for(let l of c.issues)l.path?l.path.unshift(u):l.path=[u],n.issues?.push(l);if(n.issues||(n.issues=c.issues),r.abortEarly){n.typed=!1;break}}c.typed||(n.typed=!1),n.value[o]=c.value}else if(s.fallback!==void 0)n.value[o]=ta(s);else if(s.type!=="exact_optional"&&s.type!=="optional"&&s.type!=="nullish"&&(qe(this,"key",n,r,{input:void 0,expected:`"${o}"`,path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]}),r.abortEarly))break}if(!n.issues||!r.abortEarly){for(let o in i)if(!Object.prototype.hasOwnProperty.call(this.entries,o)){qe(this,"key",n,r,{input:o,expected:"never",path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]});break}}}else qe(this,"type",n,r);return n}})}function Fe(e){return yt({kind:"schema",type:"string",reference:Fe,expects:"string",async:!1,message:e,"~run"(t,n){return typeof t.value=="string"?t.typed=!0:qe(this,"type",t,n),t}})}function Xs(e){let t;if(e)for(let n of e)if(t)for(let r of n.issues)t.push(r);else t=n.issues;return t}function nn(e,t){return yt({kind:"schema",type:"union",reference:nn,expects:Ef(e.map(n=>n.expects),"|"),async:!1,options:e,message:t,"~run"(n,r){let i,o,s;for(let a of this.options){let c=a["~run"]({value:n.value},r);if(c.typed)if(c.issues)o?o.push(c):o=[c];else{i=c;break}else s?s.push(c):s=[c]}if(i)return i;if(o){if(o.length===1)return o[0];qe(this,"type",n,r,{issues:Xs(o)}),n.typed=!0}else{if(s?.length===1)return s[0];qe(this,"type",n,r,{issues:Xs(s)})}return n}})}function Wi(...e){return yt({...e[0],pipe:e,"~run"(t,n){for(let r of e)if(r.kind!=="metadata"){if(t.issues&&(r.kind==="schema"||r.kind==="transformation")){t.typed=!1;break}(!t.issues||!n.abortEarly&&!n.abortPipeEarly)&&(t=r["~run"](t,n))}return t}})}function Pr(e,t,n){let r=e["~run"]({value:t},Ys(n));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}var Ir,gf,yf,wf,$f,Dv,Sf,Or=G(()=>{gf={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};Dv=new RegExp("^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$","u");Sf={abortEarly:!0}});var vn,Nr=G(()=>{vn={$schemaVersion:2}});var Ae,Gn,ia,Cf,Af,Rf,Lr,jf,If,oa,sa,Un=G(()=>{"use strict";Or();Nr();Ae=vn.$schemaVersion,Gn=Wi(Fe(),Ui(/^[A-Za-z0-9_-]+$/,"Token names contain only ASCII letters, digits, underscores and hyphens.")),ia=Bn({$basePaths:lt(tn(Fe())),$worktreePaths:lt(tn(Fe()))}),Cf=Bn({$type:Rt("prompt"),$exec:Fe(),$description:lt(Fe()),$tags:lt(tn(Fe()))}),Af=Bn({$type:nn([Rt("bash"),Rt("node"),Rt("tsx"),Rt("bun")]),$exec:nn([Fe(),Wi(tn(Fe()),Gi(1))]),$description:lt(Fe()),$tags:lt(tn(Fe()))}),Rf=nn([Cf,Af]),Lr=Hi(()=>nn([Fe(),Rf,jf])),jf=_r(Gn,Lr),If=zn({$metadata:lt(ia)},Lr),oa=zn({$schemaVersion:Rt(Ae),$metadata:lt(ia)},Lr),sa=zn({$schemaVersion:Rt(Ae),$projects:lt(_r(Gn,nn([Fe(),If])))},Lr)});import{randomUUID as _f}from"node:crypto";import{chmodSync as Pf,readFileSync as Of,renameSync as Nf,rmSync as Lf,statSync as Df,writeFileSync as Mf}from"node:fs";import{basename as Ff,dirname as zf,join as Bf}from"node:path";function wn(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Zi(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Hn(e,t){return e?`${e}.${t}`:t}function Fr(e,t,n){if(Gf.has(e))throw new nt(n,`${t} uses a prototype-sensitive name, which is not supported.`);if(!/^[A-Za-z0-9_-]+$/.test(e))throw new nt(n,`${t} must contain only ASCII letters, digits, underscores and hyphens.`)}function Ji(e,t,n){if(wn(e)){if(Zi(e,"$type")||Zi(e,"$exec")){for(let r of Object.keys(e))if(!Uf.has(r))throw new nt(n,`${Hn(t,r)} is not a supported resource field.`);return}Wf(e,t,n)}}function Wf(e,t,n){for(let[r,i]of Object.entries(e)){let o=Hn(t,r);if(r.startsWith("$"))throw new nt(n,`${o} is an unknown reserved field.`);Fr(r,o,n),Ji(i,o,n)}}function aa(e,t,n){for(let r of Object.keys(e))if(!Hf.has(r))throw new nt(n,`${Hn(t,r)} is not a supported metadata field.`)}function Vf(e,t,n){for(let[r,i]of Object.entries(e)){let o=Hn(t,r);if(r==="$metadata"){wn(i)&&aa(i,o,n);continue}if(r.startsWith("$"))throw new nt(n,`${o} is not valid in an inline project.`);Fr(r,o,n),Ji(i,o,n)}}function qf(e,t,n){for(let[r,i]of Object.entries(e))if(r!=="$schemaVersion"){if(t==="root"&&r==="$projects"){if(wn(i))for(let[o,s]of Object.entries(i)){let a=Hn("$projects",o);if(Fr(o,a,n),typeof s=="string"&&!s.startsWith("<root>/"))throw new nt(n,`${a} must be inline or reference a <root>/ configuration file.`);wn(s)&&Vf(s,a,n)}continue}if(t==="project"&&r==="$metadata"){wn(i)&&aa(i,r,n);continue}if(t==="repository"&&r==="$metadata")throw new nt(n,"$metadata is not valid in repository configuration. The checkout selects it, so it takes no paths.");if(r.startsWith("$"))throw new nt(n,`${r} is not valid in ${t} configuration.`);Fr(r,r,n),Ji(i,r,n)}}function ze(e,t,n="<configuration>"){if(wn(e)){if(!Zi(e,"$schemaVersion"))throw new Dr(n,"missing");if(e.$schemaVersion!==Ae)throw new Dr(n,"mismatch",e.$schemaVersion);qf(e,t,n)}let r=Pr(t==="root"?sa:oa,e);if(!r.success){let i=r.issues.map(o=>{let s=o.path?.map(a=>String(a.key)).join(".");return s?`${s}: ${o.message}`:o.message}).join("; ");throw new nt(n,i)}return r.output}function Ke(e,t,n="<configuration>"){let r;try{r=JSON.parse(e)}catch(i){throw new qi(n,{cause:i})}return ze(r,t,n)}function Dt(e,t){let n;try{n=Of(e,"utf8")}catch(r){let i={cause:r};throw r.code==="ENOENT"?new Ki(e,i):new Mr(e,i)}return Ke(n,t,e)}function zr(e,t){let n=Bf(zf(e),`.${Ff(e)}.${_f()}.tmp`),{mode:r}=Df(e);try{Mf(n,t,{flag:"wx",mode:r}),Pf(n,r&4095),Nf(n,e)}finally{Lf(n,{force:!0})}}function Wn(e,t){zr(e,`${JSON.stringify(t,null,2)}
|
|
8
|
-
`)}var
|
|
9
|
-
`)?
|
|
3
|
+
var Yp=Object.create;var qs=Object.defineProperty;var Qp=Object.getOwnPropertyDescriptor;var ef=Object.getOwnPropertyNames;var tf=Object.getPrototypeOf,nf=Object.prototype.hasOwnProperty;var U=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var zt=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var rf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ef(t))!nf.call(e,i)&&i!==n&&qs(e,i,{get:()=>t[i],enumerable:!(r=Qp(t,i))||r.enumerable});return e};var Rr=(e,t,n)=>(n=e!=null?Yp(tf(e)):{},rf(t||!e||!e.__esModule?qs(n,"default",{value:e,enumerable:!0}):n,e));function fe(e=process.env){if(e.CLAUDECODE)return"Claude Code";if(e.CODEX_THREAD_ID||e.CODEX_CI||e.CODEX_SANDBOX||e.CODEX_SANDBOX_NETWORK_DISABLED)return"Codex";if(e.ANTIGRAVITY_AGENT||e.ANTIGRAVITY_CONVERSATION_ID)return"Antigravity CLI";if(e.GEMINI_CLI)return"Gemini CLI";if(e.CURSOR_AGENT)return"Cursor";if(e.COPILOT_CLI)return"GitHub Copilot CLI";if(e.OPENCODE||e.OPENCODE_CLIENT)return"OpenCode";if(e.CLINE_ACTIVE)return"Cline";if(e.PI_CODING_AGENT||e.PI_SESSION_ID)return"pi";if(e.ROO_ACTIVE||e.ROO_CLI_RUNTIME)return"Roo Code";if(e.AGENT_CONTEXT_OUT&&e.AGENT_DISPLAY_OUT)return"Kiro";if(/^devin_[^\s]+_agent$/.test(e.AI_AGENT??""))return"Devin CLI";if(e.AI_AGENT||e.AGENT)return"AI agent"}var qe=U(()=>{"use strict"});function af(e=""){if(!of.test(e))return e!==e.toLowerCase()}function Ks(e,t){let n=t??sf,r=[];if(!e||typeof e!="string")return r;let i="",o,s;for(let a of e){let c=n.includes(a);if(c===!0){r.push(i),i="",o=void 0;continue}let u=af(a);if(s===!1){if(o===!1&&u===!0){r.push(i),i=a,o=u;continue}if(o===!0&&u===!1&&i.length>1){let p=i.at(-1);r.push(i.slice(0,Math.max(0,i.length-1))),i=p+a,o=u;continue}}i+=a,o=u,s=c}return r.push(i),r}function cf(e){return e?e[0].toUpperCase()+e.slice(1):""}function uf(e){return e?e[0].toLowerCase()+e.slice(1):""}function lf(e,t){return e?(Array.isArray(e)?e:Ks(e)).map(n=>cf(t?.normalize?n.toLowerCase():n)).join(""):""}function zn(e,t){return uf(lf(e||"",t))}function Cr(e,t){return e?(Array.isArray(e)?e:Ks(e)).map(n=>n.toLowerCase()).join(t??"-"):""}function Zs(e){return Cr(e||"","_")}var of,sf,Js=U(()=>{of=/\d/,sf=["-","_","/","."]});import{parseArgs as pf}from"node:util";function Bn(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Bi(e,t=""){let n=[];for(let r of e)for(let[i,o]of r.entries())n[i]=Math.max(n[i]||0,o.length);return e.map(r=>r.map((i,o)=>t+i[o===0?"padStart":"padEnd"](n[o])).join(" ")).join(`
|
|
4
|
+
`)}function Re(e){return typeof e=="function"?e():e}function ff(e=[],t={}){let n=new Set(t.boolean||[]),r=new Set(t.string||[]),i=t.alias||{},o=t.default||{},s=new Map,a=new Map;for(let[g,v]of Object.entries(i)){let y=v;for(let R of y)s.set(g,R),a.has(R)||a.set(R,[]),a.get(R).push(g),s.set(R,g),a.has(g)||a.set(g,[]),a.get(g).push(R)}let c={};function u(g){if(n.has(g))return"boolean";let v=a.get(g)||[];for(let y of v)if(n.has(y))return"boolean";return"string"}function p(g){if(r.has(g))return!0;let v=a.get(g)||[];for(let y of v)if(r.has(y))return!0;return!1}let l=new Set([...n,...r,...Object.keys(i),...Object.values(i).flat(),...Object.keys(o)]);for(let g of l)c[g]||(c[g]={type:u(g),default:o[g]});for(let[g,v]of s.entries())g.length===1&&c[v]&&!c[v].short&&(c[v].short=g);let f=[],d={};for(let g=0;g<e.length;g++){let v=e[g];if(v==="--"){f.push(...e.slice(g));break}if(v.startsWith("--no-")){let y=v.slice(5);d[y]=!0;continue}f.push(v)}let m;try{m=pf({args:f,options:Object.keys(c).length>0?c:void 0,allowPositionals:!0,strict:!1})}catch{m={values:{},positionals:f}}let h={_:[]};h._=m.positionals;for(let[g,v]of Object.entries(m.values)){let y=v;u(g)==="boolean"&&typeof v=="string"?y=v!=="false":p(g)&&typeof v=="boolean"&&(y=""),h[g]=y}for(let[g]of Object.entries(d)){h[g]=!1;let v=s.get(g);v&&(h[v]=!1);let y=a.get(g);if(y)for(let R of y)h[R]=!1}for(let[g,v]of s.entries())h[g]!==void 0&&h[v]===void 0&&(h[v]=h[g]),h[v]!==void 0&&h[g]===void 0&&(h[g]=h[v]),h[g]!==h[v]&&o[v]===h[v]&&(h[v]=h[g]);return h}function df(e,t){let n={boolean:[],string:[],alias:{},default:{}},r=Qs(t);for(let a of r){if(a.type==="positional")continue;a.type==="string"||a.type==="enum"?n.string.push(a.name):a.type==="boolean"&&n.boolean.push(a.name),a.default!==void 0&&(n.default[a.name]=a.default),a.alias&&(n.alias[a.name]=a.alias);let c=zn(a.name),u=Cr(a.name);if(c!==a.name||u!==a.name){let p=Bn(n.alias[a.name]||[]);c!==a.name&&!p.includes(c)&&p.push(c),u!==a.name&&!p.includes(u)&&p.push(u),p.length>0&&(n.alias[a.name]=p)}}let i=ff(e,n),[...o]=i._,s=new Proxy(i,{get(a,c){return a[c]??a[zn(c)]??a[Cr(c)]}});for(let[,a]of r.entries())if(a.type==="positional"){let c=o.shift();if(c!==void 0)s[a.name]=c;else{if(a.default===void 0&&a.required!==!1)throw new jt(`Missing required positional argument: ${a.name.toUpperCase()}`,"EARG");s[a.name]=a.default}}else if(a.type==="enum"){let c=s[a.name],u=a.options||[];if(c!==void 0&&u.length>0&&!u.includes(c))throw new jt(`Invalid value for argument: ${pt(`--${a.name}`)} (${pt(c)}). Expected one of: ${u.map(p=>pt(p)).join(", ")}.`,"EARG")}else if(a.required&&s[a.name]===void 0)throw new jt(`Missing required argument: --${a.name}`,"EARG");return s}function Qs(e){let t=[];for(let[n,r]of Object.entries(e||{}))t.push({...r,name:n,alias:Bn(r.alias)});return t}async function mf(e){return Promise.all(e.map(t=>Re(t)))}async function Gi(e,t){let n=await Re(e.args||{}),r=df(t.rawArgs,n),i={rawArgs:t.rawArgs,args:r,data:t.data,cmd:e},o=await mf(e.plugins??[]),s,a;try{for(let p of o)await p.setup?.(i);typeof e.setup=="function"&&await e.setup(i);let u=await Re(e.subCommands);if(u&&Object.keys(u).length>0){let p=ea(t.rawArgs,n),l=t.rawArgs[p];if(l){let f=await Wi(u,l);if(!f)throw new jt(`Unknown command ${pt(l)}`,"E_UNKNOWN_COMMAND");await Gi(f,{rawArgs:t.rawArgs.slice(p+1)})}else{let f=await Re(e.default);if(f){if(e.run)throw new jt("Cannot specify both 'run' and 'default' on the same command.","E_DEFAULT_CONFLICT");let d=await Wi(u,f);if(!d)throw new jt(`Default sub command ${pt(f)} not found in subCommands.`,"E_UNKNOWN_COMMAND");await Gi(d,{rawArgs:t.rawArgs})}else if(!e.run)throw new jt("No command specified.","E_NO_COMMAND")}}typeof e.run=="function"&&(s=await e.run(i))}catch(u){a=u}let c=[];if(typeof e.cleanup=="function")try{await e.cleanup(i)}catch(u){c.push(u)}for(let u of[...o].reverse())try{await u.cleanup?.(i)}catch(p){c.push(p)}if(a)throw a;if(c.length===1)throw c[0];if(c.length>1)throw new Error("Multiple cleanup errors",{cause:c});return{result:s}}async function Hi(e,t,n){let r=await Re(e.subCommands);if(r&&Object.keys(r).length>0){let i=ea(t,await Re(e.args||{})),o=t[i],s=await Wi(r,o);if(s)return Hi(s,t.slice(i+1),e)}return[e,n]}async function Wi(e,t){if(t in e)return Re(e[t]);for(let n of Object.values(e)){let r=await Re(n),i=await Re(r?.meta);if(i?.alias&&Bn(i.alias).includes(t))return r}}function ea(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r==="--")return-1;if(r.startsWith("-")){!r.includes("=")&&gf(r,t)&&n++;continue}return n}return-1}function gf(e,t){let n=e.replace(/^-{1,2}/,""),r=zn(n);for(let[i,o]of Object.entries(t))if(!(o.type!=="string"&&o.type!=="enum")&&(r===zn(i)||(Array.isArray(o.alias)?o.alias:o.alias?[o.alias]:[]).includes(n)))return!0;return!1}async function yf(e,t){try{console.log(await wf(e,t)+`
|
|
5
|
+
`)}catch(n){console.error(n)}}async function wf(e,t){let n=await Re(e.meta||{}),r=Qs(await Re(e.args||{})),i=await Re(t?.meta||{}),o=`${i.name?`${i.name} `:""}`+(n.name||process.argv[1]),s=[],a=[],c=[],u=[];for(let d of r)if(d.type==="positional"){let m=d.name.toUpperCase(),h=d.required!==!1&&d.default===void 0;a.push([pt(m+Ui(d)),Xs(d,h)]),u.push(h?`<${m}>`:`[${m}]`)}else{let m=d.required===!0&&d.default===void 0,h=[...(d.alias||[]).map(g=>`-${g}`),`--${d.name}`].join(", ")+Ui(d);if(s.push([pt(h),Xs(d,m)]),d.type==="boolean"&&(d.default===!0||d.negativeDescription)&&!vf.test(d.name)){let g=[...(d.alias||[]).map(v=>`--no-${v}`),`--no-${d.name}`].join(", ");s.push([pt(g),[d.negativeDescription,m?_r("(Required)"):""].filter(Boolean).join(" ")])}m&&u.push(`--${d.name}`+Ui(d))}if(e.subCommands){let d=[],m=await Re(e.subCommands);for(let[h,g]of Object.entries(m)){let v=await Re((await Re(g))?.meta);if(v?.hidden)continue;let y=Bn(v?.alias),R=[h,...y].join(", ");c.push([pt(R),v?.description||""]),d.push(h,...y)}u.push(d.join("|"))}let p=[],l=n.version||i.version;p.push(_r(`${n.description} (${o+(l?` v${l}`:"")})`),"");let f=s.length>0||a.length>0;return p.push(`${Ir(jr("USAGE"))} ${pt(`${o}${f?" [OPTIONS]":""} ${u.join(" ")}`)}`,""),a.length>0&&(p.push(Ir(jr("ARGUMENTS")),""),p.push(Bi(a," ")),p.push("")),s.length>0&&(p.push(Ir(jr("OPTIONS")),""),p.push(Bi(s," ")),p.push("")),c.length>0&&(p.push(Ir(jr("COMMANDS")),""),p.push(Bi(c," ")),p.push("",`Use ${pt(`${o} <command> --help`)} for more information about a command.`)),p.filter(d=>typeof d=="string").join(`
|
|
6
|
+
`)}function Ui(e){let t=e.valueHint?`=<${e.valueHint}>`:"",n=t||`=<${Zs(e.name)}>`;return!e.type||e.type==="positional"||e.type==="boolean"?t:e.type==="enum"&&e.options?.length?`=<${e.options.join("|")}>`:n}function Xs(e,t){let n=t?_r("(Required)"):"",r=e.default===void 0?"":_r(`(Default: ${e.default})`);return[e.description,n,r].filter(Boolean).join(" ")}async function ta(e,t={}){let n=t.rawArgs||process.argv.slice(2),r=t.showUsage||yf;try{let i=await kf(e);if(i.help.length>0&&n.some(o=>i.help.includes(o)))await r(...await Hi(e,n)),process.exit(0);else if(n.length===1&&i.version.includes(n[0])){let o=typeof e.meta=="function"?await e.meta():await e.meta;if(!o?.version)throw new jt("No version specified","E_NO_VERSION");console.log(o.version)}else await Gi(e,{rawArgs:n})}catch(i){i instanceof jt?(await r(...await Hi(e,n)),console.error(i.message)):console.error(i,`
|
|
7
|
+
`),process.exit(1)}}async function kf(e){let t=await Re(e.args||{}),n=new Set,r=new Set;for(let[i,o]of Object.entries(t)){n.add(i);for(let s of Bn(o.alias))r.add(s)}return{help:Ys("help","h",n,r),version:Ys("version","v",n,r)}}function Ys(e,t,n,r){return n.has(e)||r.has(e)?[]:n.has(t)||r.has(t)?[`--${e}`]:[`--${e}`,`-${t}`]}var jt,hf,Pr,jr,pt,_r,Ir,vf,na=U(()=>{Js();jt=class extends Error{code;constructor(e,t){super(e),this.name="CLIError",this.code=t}};hf=(()=>{let e=globalThis.process?.env??{};return e.NO_COLOR==="1"||e.TERM==="dumb"||e.TEST||e.CI})(),Pr=(e,t=39)=>n=>hf?n:`\x1B[${e}m${n}\x1B[${t}m`,jr=Pr(1,22),pt=Pr(36),_r=Pr(90),Ir=Pr(4,24);vf=/^no[-A-Z]/});var Un,Vi=U(()=>{Un={name:"@mnbny/woof",version:"0.1.1",description:"Local CLI for reusable instructions, prompts, and computed resources",homepage:"https://github.com/mnbny/woof#readme",bugs:{url:"https://github.com/mnbny/woof/issues"},repository:{type:"git",url:"git+https://github.com/mnbny/woof.git"},license:"MIT",type:"module",bin:{woof:"cli/woof.bundle.mjs"},files:["cli/woof.bundle.mjs","cli/templates/*.md","cli/templates/editor.html","skills/woof-execution/SKILL.md"],scripts:{build:"tsx .tools/scripts/build.ts",prepack:"pnpm build","pack:check":"tsx .tools/scripts/pack-check.ts",test:"vitest run --config .tools/tests/vitest.config.ts",validate:"tsx .tools/scripts/scripty.ts --sequential && pnpm build","validate:format":"SCRIPTY=1 prettier --write . --ignore-unknown --cache --log-level=error","validate:lint":"SCRIPTY=2 eslint --fix --cache --format=pretty .","validate:typecheck":"SCRIPTY=3 tsc --noEmit"},devDependencies:{"@chatwoot/pico-search":"0.6.2","@clack/prompts":"1.8.1","@eslint/js":"10.0.1","@tsconfig/strictest":"2.0.8","@types/node":"26.6.6","@types/picomatch":"4.0.3",ansis:"4.4.0","change-case":"5.4.4",citty:"0.2.2",diff:"9.0.0",esbuild:"0.28.2",eslint:"10.13.0","eslint-config-prettier":"10.1.8","eslint-formatter-pretty":"7.1.0","eslint-plugin-import":"2.32.0","eslint-plugin-prettier":"5.5.7","eslint-plugin-simple-import-sort":"14.0.0",fflate:"0.8.3",globals:"17.13.0",marked:"18.1.2",picomatch:"4.0.3",playwright:"1.64.1",prettier:"3.9.10","prettier-plugin-packagejson":"3.0.3","prettier-plugin-sh":"0.20.2",sharp:"0.35.5",tsx:"4.23.15",typescript:"6.0.3","typescript-eslint":"8.72.1",valibot:"1.5.0",vitest:"5.0.5",yaml:"2.9.1"},packageManager:"pnpm@12.16.1",engines:{node:"^22.13.0 || ^24.0.0 || >=26.0.0"},publishConfig:{access:"public"}}});function ia(e){return!e&&!Or?xf:{lang:e?.lang??Or?.lang,message:e?.message,abortEarly:e?.abortEarly??Or?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Or?.abortPipeEarly}}function Ef(e){return bf?.get(e)}function Tf(e){return Sf?.get(e)}function Rf(e,t){return Af?.get(e)?.get(t)}function oa(e){let t=typeof e;return t==="string"?`"${e}"`:t==="number"||t==="bigint"||t==="boolean"?`${e}`:t==="object"||t==="function"?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":t}function ze(e,t,n,r,i){let o=i&&"input"in i?i.input:n.value,s=i?.expected??e.expects??null,a=i?.received??oa(o),c={kind:e.kind,type:e.type,input:o,expected:s,received:a,message:`Invalid ${t}: ${s?`Expected ${s} but r`:"R"}eceived ${a}`,requirement:e.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},u=e.kind==="schema",p=i?.message??e.message??Rf(e.reference,c.lang)??(u?Tf(c.lang):null)??r.message??Ef(c.lang);p!==void 0&&(c.message=typeof p=="function"?p(c):p),u&&(n.typed=!1),n.issues?n.issues.push(c):n.issues=[c]}function Cf(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function sa(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&t!=="__proto__"&&t!=="prototype"&&t!=="constructor"}function jf(e,t){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function ft(e){return e["~standard"]={version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},ia())},e}function qi(e,t){return{kind:"validation",type:"min_length",reference:qi,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(n,r){return n.typed&&n.value.length<this.requirement&&ze(this,"length",n,r,{received:`${n.value.length}`}),n}}}function Ki(e,t){return{kind:"validation",type:"regex",reference:Ki,async:!1,expects:`${e}`,requirement:e,message:t,"~run"(n,r){return n.typed&&!this.requirement.test(n.value)&&ze(this,"format",n,r),n}}}function aa(e,t,n){return typeof e.fallback=="function"?e.fallback(t,n):e.fallback}function ca(e,t,n){return typeof e.default=="function"?e.default(t,n):e.default}function ua(e,t){return!e["~run"]({value:t},If).issues}function on(e,t){return ft({kind:"schema",type:"array",reference:on,expects:"Array",async:!1,item:e,message:t,"~run"(n,r){let i=n.value;if(Array.isArray(i)){n.typed=!0,n.value=[];for(let o=0;o<i.length;o++){let s=i[o],a=this.item["~run"]({value:s},r);if(a.issues){let c={type:"array",origin:"value",input:i,key:o,value:s};for(let u of a.issues)u.path?u.path.unshift(c):u.path=[c],n.issues?.push(u);if(n.issues||(n.issues=a.issues),r.abortEarly){n.typed=!1;break}}a.typed||(n.typed=!1),n.value.push(a.value)}}else ze(this,"type",n,r);return n}})}function Nr(e){return ft({kind:"schema",type:"boolean",reference:Nr,expects:"boolean",async:!1,message:e,"~run"(t,n){return typeof t.value=="boolean"?t.typed=!0:ze(this,"type",t,n),t}})}function Ke(e,t){return ft({kind:"schema",type:"exact_optional",reference:Ke,expects:e.expects,async:!1,wrapped:e,default:t,"~run"(n,r){return this.wrapped["~run"](n,r)}})}function Zi(e){return ft({kind:"schema",type:"lazy",reference:Zi,expects:"unknown",async:!1,getter:e,"~run"(t,n){return this.getter(t.value)["~run"](t,n)}})}function It(e,t){return ft({kind:"schema",type:"literal",reference:It,expects:oa(e),async:!1,literal:e,message:t,"~run"(n,r){return Cf(n.value,this.literal)?n.typed=!0:ze(this,"type",n,r),n}})}function Gn(e,t,n){return ft({kind:"schema",type:"object_with_rest",reference:Gn,expects:"Object",async:!1,entries:e,rest:t,message:n,"~run"(r,i){let o=r.value;if(o&&typeof o=="object"){r.typed=!0,r.value={};for(let s in this.entries){let a=this.entries[s];if(s in o||(a.type==="exact_optional"||a.type==="optional"||a.type==="nullish")&&a.default!==void 0){let c=s in o?o[s]:ca(a),u=a["~run"]({value:c},i);if(u.issues){let p={type:"object",origin:"value",input:o,key:s,value:c};for(let l of u.issues)l.path?l.path.unshift(p):l.path=[p],r.issues?.push(l);if(r.issues||(r.issues=u.issues),i.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),r.value[s]=u.value}else if(a.fallback!==void 0)r.value[s]=aa(a);else if(a.type!=="exact_optional"&&a.type!=="optional"&&a.type!=="nullish"&&(ze(this,"key",r,i,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:o,key:s,value:o[s]}]}),i.abortEarly))break}if(!r.issues||!i.abortEarly){for(let s in o)if(sa(o,s)&&!Object.prototype.hasOwnProperty.call(this.entries,s)){let a=this.rest["~run"]({value:o[s]},i);if(a.issues){let c={type:"object",origin:"value",input:o,key:s,value:o[s]};for(let u of a.issues)u.path?u.path.unshift(c):u.path=[c],r.issues?.push(u);if(r.issues||(r.issues=a.issues),i.abortEarly){r.typed=!1;break}}a.typed||(r.typed=!1),r.value[s]=a.value}}}else ze(this,"type",r,i);return r}})}function Lr(e,t,n){return ft({kind:"schema",type:"record",reference:Lr,expects:"Object",async:!1,key:e,value:t,message:n,"~run"(r,i){let o=r.value;if(o&&typeof o=="object"){r.typed=!0,r.value={};for(let s in o)if(sa(o,s)){let a=o[s],c=this.key["~run"]({value:s},i);if(c.issues){let p={type:"object",origin:"key",input:o,key:s,value:a};for(let l of c.issues)l.path=[p],r.issues?.push(l);if(r.issues||(r.issues=c.issues),i.abortEarly){r.typed=!1;break}}let u=this.value["~run"]({value:a},i);if(u.issues){let p={type:"object",origin:"value",input:o,key:s,value:a};for(let l of u.issues)l.path?l.path.unshift(p):l.path=[p],r.issues?.push(l);if(r.issues||(r.issues=u.issues),i.abortEarly){r.typed=!1;break}}(!c.typed||!u.typed)&&(r.typed=!1),c.typed&&(r.value[c.value]=u.value)}}else ze(this,"type",r,i);return r}})}function Hn(e,t){return ft({kind:"schema",type:"strict_object",reference:Hn,expects:"Object",async:!1,entries:e,message:t,"~run"(n,r){let i=n.value;if(i&&typeof i=="object"){n.typed=!0,n.value={};for(let o in this.entries){let s=this.entries[o];if(o in i||(s.type==="exact_optional"||s.type==="optional"||s.type==="nullish")&&s.default!==void 0){let a=o in i?i[o]:ca(s),c=s["~run"]({value:a},r);if(c.issues){let u={type:"object",origin:"value",input:i,key:o,value:a};for(let p of c.issues)p.path?p.path.unshift(u):p.path=[u],n.issues?.push(p);if(n.issues||(n.issues=c.issues),r.abortEarly){n.typed=!1;break}}c.typed||(n.typed=!1),n.value[o]=c.value}else if(s.fallback!==void 0)n.value[o]=aa(s);else if(s.type!=="exact_optional"&&s.type!=="optional"&&s.type!=="nullish"&&(ze(this,"key",n,r,{input:void 0,expected:`"${o}"`,path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]}),r.abortEarly))break}if(!n.issues||!r.abortEarly){for(let o in i)if(!Object.prototype.hasOwnProperty.call(this.entries,o)){ze(this,"key",n,r,{input:o,expected:"never",path:[{type:"object",origin:"key",input:i,key:o,value:i[o]}]});break}}}else ze(this,"type",n,r);return n}})}function Be(e){return ft({kind:"schema",type:"string",reference:Be,expects:"string",async:!1,message:e,"~run"(t,n){return typeof t.value=="string"?t.typed=!0:ze(this,"type",t,n),t}})}function ra(e){let t;if(e)for(let n of e)if(t)for(let r of n.issues)t.push(r);else t=n.issues;return t}function sn(e,t){return ft({kind:"schema",type:"union",reference:sn,expects:jf(e.map(n=>n.expects),"|"),async:!1,options:e,message:t,"~run"(n,r){let i,o,s;for(let a of this.options){let c=a["~run"]({value:n.value},r);if(c.typed)if(c.issues)o?o.push(c):o=[c];else{i=c;break}else s?s.push(c):s=[c]}if(i)return i;if(o){if(o.length===1)return o[0];ze(this,"type",n,r,{issues:ra(o)}),n.typed=!0}else{if(s?.length===1)return s[0];ze(this,"type",n,r,{issues:ra(s)})}return n}})}function Ji(...e){return ft({...e[0],pipe:e,"~run"(t,n){for(let r of e)if(r.kind!=="metadata"){if(t.issues&&(r.kind==="schema"||r.kind==="transformation")){t.typed=!1;break}(!t.issues||!n.abortEarly&&!n.abortPipeEarly)&&(t=r["~run"](t,n))}return t}})}function Dr(e,t,n){let r=e["~run"]({value:t},ia(n));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}var Or,xf,bf,Sf,Af,Wv,If,Mr=U(()=>{xf={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};Wv=new RegExp("^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$","u");If={abortEarly:!0}});var kn,Fr=U(()=>{kn={$schemaVersion:2}});var Ce,Wn,la,Pf,Of,Nf,zr,Lf,Df,pa,fa,Vn=U(()=>{"use strict";Mr();Fr();Ce=kn.$schemaVersion,Wn=Ji(Be(),Ki(/^[A-Za-z0-9_-]+$/,"Token names contain only ASCII letters, digits, underscores and hyphens.")),la=Hn({$basePaths:Ke(on(Be())),$worktreePaths:Ke(on(Be()))}),Pf=Hn({$type:It("prompt"),$exec:Be(),$description:Ke(Be()),$tags:Ke(on(Be())),$private:Ke(Nr())}),Of=Hn({$type:sn([It("bash"),It("node"),It("tsx"),It("bun")]),$exec:sn([Be(),Ji(on(Be()),qi(1))]),$description:Ke(Be()),$tags:Ke(on(Be())),$private:Ke(Nr())}),Nf=sn([Pf,Of]),zr=Zi(()=>sn([Be(),Nf,Lf])),Lf=Lr(Wn,zr),Df=Gn({$metadata:Ke(la)},zr),pa=Gn({$schemaVersion:It(Ce),$metadata:Ke(la)},zr),fa=Gn({$schemaVersion:It(Ce),$projects:Ke(Lr(Wn,sn([Be(),Df])))},zr)});import{randomUUID as Mf}from"node:crypto";import{chmodSync as Ff,readFileSync as zf,renameSync as Bf,rmSync as Uf,statSync as Gf,writeFileSync as Hf}from"node:fs";import{basename as Wf,dirname as Vf,join as qf}from"node:path";function $n(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function eo(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function qn(e,t){return e?`${e}.${t}`:t}function Gr(e,t,n){if(Kf.has(e))throw new it(n,`${t} uses a prototype-sensitive name, which is not supported.`);if(!/^[A-Za-z0-9_-]+$/.test(e))throw new it(n,`${t} must contain only ASCII letters, digits, underscores and hyphens.`)}function to(e,t,n){if($n(e)){if(eo(e,"$type")||eo(e,"$exec")){for(let r of Object.keys(e))if(!Zf.has(r))throw new it(n,`${qn(t,r)} is not a supported resource field.`);return}Xf(e,t,n)}}function Xf(e,t,n){for(let[r,i]of Object.entries(e)){let o=qn(t,r);if(r.startsWith("$"))throw new it(n,`${o} is an unknown reserved field.`);Gr(r,o,n),to(i,o,n)}}function ha(e,t,n){for(let r of Object.keys(e))if(!Jf.has(r))throw new it(n,`${qn(t,r)} is not a supported metadata field.`)}function Yf(e,t,n){for(let[r,i]of Object.entries(e)){let o=qn(t,r);if(r==="$metadata"){$n(i)&&ha(i,o,n);continue}if(r.startsWith("$"))throw new it(n,`${o} is not valid in an inline project.`);Gr(r,o,n),to(i,o,n)}}function Qf(e,t,n){for(let[r,i]of Object.entries(e))if(r!=="$schemaVersion"){if(t==="root"&&r==="$projects"){if($n(i))for(let[o,s]of Object.entries(i)){let a=qn("$projects",o);if(Gr(o,a,n),typeof s=="string"&&!s.startsWith("<root>/"))throw new it(n,`${a} must be inline or reference a <root>/ configuration file.`);$n(s)&&Yf(s,a,n)}continue}if(t==="project"&&r==="$metadata"){$n(i)&&ha(i,r,n);continue}if(t==="repository"&&r==="$metadata")throw new it(n,"$metadata is not valid in repository configuration. The checkout selects it, so it takes no paths.");if(r.startsWith("$"))throw new it(n,`${r} is not valid in ${t} configuration.`);Gr(r,r,n),to(i,r,n)}}function Ze(e,t,n="<configuration>"){if($n(e)){if(!eo(e,"$schemaVersion"))throw new Br(n,"missing");if(e.$schemaVersion!==Ce)throw new Br(n,"mismatch",e.$schemaVersion);Qf(e,t,n)}let r=Dr(t==="root"?fa:pa,e);if(!r.success){let i=r.issues.map(o=>{let s=o.path?.map(a=>String(a.key)).join(".");return s?`${s}: ${o.message}`:o.message}).join("; ");throw new it(n,i)}return r.output}function Je(e,t,n="<configuration>"){let r;try{r=JSON.parse(e)}catch(i){throw new Yi(n,{cause:i})}return Ze(r,t,n)}function Bt(e,t){let n;try{n=zf(e,"utf8")}catch(r){let i={cause:r};throw r.code==="ENOENT"?new Qi(e,i):new Ur(e,i)}return Je(n,t,e)}function Hr(e,t){let n=qf(Vf(e),`.${Wf(e)}.${Mf()}.tmp`),{mode:r}=Gf(e);try{Hf(n,t,{flag:"wx",mode:r}),Ff(n,r&4095),Bf(n,e)}finally{Uf(n,{force:!0})}}function Kn(e,t){Hr(e,`${JSON.stringify(t,null,2)}
|
|
8
|
+
`)}var Br,Yi,it,Ur,Qi,Kf,Zf,Jf,kt=U(()=>{"use strict";Mr();Vn();Br=class extends Error{actual;reason;constructor(t,n,r){let i=n==="missing"?`Configuration at ${t} requires an explicit $schemaVersion of ${Ce}.`:`Configuration at ${t} uses unsupported $schemaVersion ${JSON.stringify(r)}; expected ${Ce}. Explicit migration is required.`;super(i),this.name="ConfigurationVersionError",this.actual=r,this.reason=n}},Yi=class extends Error{constructor(t,n){super(`Could not parse configuration at ${t} as JSON.`,n),this.name="ConfigurationSyntaxError"}},it=class extends Error{constructor(t,n){super(`Invalid configuration at ${t}: ${n}`),this.name="ConfigurationShapeError"}},Ur=class extends Error{file;constructor(t,n){let r=n.cause instanceof Error?n.cause.message:String(n.cause);super(`Could not read configuration at ${t}: ${r}`,n),this.name="ConfigurationReadError",this.file=t}},Qi=class extends Ur{constructor(t,n){super(t,n),this.name="ConfigurationNotFoundError"}},Kf=new Set(["__proto__","prototype","constructor"]),Zf=new Set(["$type","$exec","$description","$tags","$private"]),Jf=new Set(["$basePaths","$worktreePaths"])});var ka=zt((ew,wa)=>{var no,{defineProperty:eh,getPrototypeOf:th,setPrototypeOf:va,create:nh,keys:rh}=Object,ot="",{round:Wr,max:ih}=Math,ro=e=>{let t=/([a-f\d]{3,6})/i.exec(e)?.[0],n=t?.length,r="0x"+(6^n?3^n?"0":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t)|0;return[r>>16,r>>8&255,255&r]},da=e=>{if(8>e)return 30+e;if(16>e)return 82+e;if(e>231)return e>243?37:30;let t=(e-=16)%36,n=e/36|0,r=t/6|0,i=t%6;return 30+(n>2|(r>2)<<1|(i>2)<<2)+(ih(n,r,i)>4?60:0)},ma={open:ot,close:ot},ga=(e,{open:t="",close:n="",f:r})=>{let i=(e.open||ot)+t,o=n+(e.close||ot),s=(a,...c)=>{if(!a){if(!n)return t;if((a??ot)===ot)return ot}let u,p=r?r(a,...c):a.raw?String.raw({raw:a},...c):ot+a,l=s;if(p.includes("\x1B"))for(;l=l.p;){let{t:f,o:d}=l,m=d.length,h=ot,g=0;if(m)for(;~(u=p.indexOf(d,g));g=u+m)h+=p.slice(g,u)+f;p=h+p.slice(g)}return i+(p.includes(`
|
|
9
|
+
`)?p.replace(/(\r?\n)/g,o+"$1"+i):p)+o};return va(s,th(e)).p={t,o:n,p:e.p},s.open=i,s.close=o,s},ya=new function e(t=globalThis){let n=typeof t=="number"?t:(A=>{let k=A.process??{},w=k.argv??[],T=k.env??{},S=0;try{S=((x,b,O)=>(no=b.TERM,no==="dumb"?0:{"24bit":3,truecolor:3,ansi256:2,ansi:1}[b.COLORTERM]||(b.CI?/,GITHUB/.test(O)?3:1:x.stdout?.isTTY||b.PM2_HOME||/edge/.test(b.NEXT_RUNTIME)?x.platform==="win32"?3:/-256/.test(no)?2:1:0)))(k,T,","+rh(T).join(","))}catch{T={}}let C,$=S||1,E="FORCE_COLOR",j={false:0,0:0,1:1,2:2,3:3}[T[E]]??$,_=-1;for(C of w)/^--color=?(true|always)?$/.test(C)&&(_=$),/^--(no-color|color=(false|never))$/.test(C)&&(_=0);return A.window?.chrome?3:E in T?j:~_?_:T.NO_COLOR?0:S})(t),r={},i={Ansis:e,level:n,isSupported:()=>c,strip:A=>A.replace(/][^]*|[][[()#;?]*(?:\d+(?:;\d*)*)?[\dA-ORZcf-nqry=><]/g,ot),extend(A){for(let k in A){let w=A[k];(typeof w)[0]==="s"&&(o(p(k),v(...ro(w))),w=g(...ro(w))),o(k,w)}return va(i,nh({},r))}},o=(A,k)=>{r[A]={get(){return eh(this,A,{value:k.call?(...w)=>ga(this,k(...w)):ga(this,k)})[A]}}},s=1^n,a=n>2,c=n>0,u=(A,k)=>c?{open:`\x1B[${A}m`,close:k?`\x1B[${k}m`:ot}:ma,p=A=>"bg"+A[0].toUpperCase()+A.slice(1),l=A=>k=>A(...ro(k)),f=(A,k)=>(w,T,S)=>u(`${A}8;2;${w};${T};${S}`,k),d=A=>(k,w,T)=>A(((S,C,$)=>S^C|C^$?16+36*Wr(S/51)+6*Wr(C/51)+Wr($/51):8>S?16:S>248?231:Wr(24*(S-8)/247)+232)(k,w,T)),m=A=>u(s?"38;5;"+A:da(A),39),h=A=>u(s?"48;5;"+A:da(A)+10,49),g=a?f(3,39):d(m),v=a?f(4,49):d(h),y={fg:m,bg:h,rgb:g,bgRgb:v,hex:l(g),bgHex:l(v),visible:ma,reset:u(0,ot),bold:u(1,22),dim:u(2,22),italic:u(3,23),underline:u(4,24),inverse:u(7,27),hidden:u(8,28),strikethrough:u(9,29),link:{f:(A,k=A)=>c?`\x1B]8;;${A}\x07${k}\x1B]8;;\x07`:k!=A?k+` (\u200B${A}\u200B)`:A}},R=(A,k)=>{y[A]=u(k,39),y[p(A)]=u(k+10,49)};return"gray,black,red,green,yellow,blue,magenta,cyan,white".split(",").map(((A,k)=>{k?R(A+"Bright",89+k):k=61,R(A,29+k)})),i.extend(y)};wa.exports=ya.default=ya});var io,Ue,tw,nw,rw,iw,ow,sw,aw,cw,uw,lw,pw,fw,hw,dw,mw,gw,yw,vw,ww,kw,$w,xw,bw,Ew,Sw,Tw,Aw,Rw,Cw,jw,Iw,_w,Pw,Ow,Nw,Lw,Dw,Mw,Fw,zw,Bw,Uw,Gw,Hw,Ww,Vw,qw,Kw,Zw,Vr=U(()=>{io=Rr(ka(),1),Ue=io.default,{Ansis:tw,fg:nw,bg:rw,rgb:iw,bgRgb:ow,hex:sw,bgHex:aw,reset:cw,inverse:uw,hidden:lw,visible:pw,link:fw,bold:hw,dim:dw,italic:mw,underline:gw,strikethrough:yw,black:vw,red:ww,green:kw,yellow:$w,blue:xw,magenta:bw,cyan:Ew,white:Sw,gray:Tw,redBright:Aw,greenBright:Rw,yellowBright:Cw,blueBright:jw,magentaBright:Iw,cyanBright:_w,whiteBright:Pw,bgBlack:Ow,bgRed:Nw,bgGreen:Lw,bgYellow:Dw,bgBlue:Mw,bgMagenta:Fw,bgCyan:zw,bgWhite:Bw,bgGray:Uw,bgRedBright:Gw,bgGreenBright:Hw,bgYellowBright:Ww,bgBlueBright:Vw,bgMagentaBright:qw,bgCyanBright:Kw,bgWhiteBright:Zw}=io.default});function Ne(){return process.stdout.isTTY===!0}function $a(){return Ue.level>0}var an=U(()=>{"use strict";Vr()});import{AsyncLocalStorage as oh}from"node:async_hooks";function Z(e){return`'${e.replaceAll("'","'\\''")}'`}function xa(e,{compact:t=!1}={}){if(!Ne()||!$a())return e;let n="\x1B[K",r=` ${e.replaceAll(`
|
|
10
10
|
`,`${n}
|
|
11
|
-
`)}${n}`;return
|
|
11
|
+
`)}${n}`;return Ue.bgHex("#262626").hex("#eeeeee")(t?r:`${n}
|
|
12
12
|
${r}
|
|
13
|
-
${n}`)}function
|
|
14
|
-
`);let t=Math.max(...e.map(([n])=>n.length));return e.map(([n,r])=>`${`${n}:`.padEnd(t+2)}${
|
|
15
|
-
`)}function
|
|
16
|
-
`).map(t=>t.startsWith("+")?
|
|
17
|
-
`)}function
|
|
18
|
-
`}function wa(e){if(oo(e.target,"utf8")!==e.source)throw new it(e.target,"Configuration changed during migration; retry without overwriting either version.")}function uh(e){let t=Vr(Wr(e.target),`.${Hr(e.target)}.${no()}.rollback.tmp`);try{if(oo(e.target,"utf8")!==Ea(e))throw new Error("The migrated destination changed again before rollback.");io(t,e.source,{flag:"wx",mode:e.mode}),ro(t,e.mode&4095),$a(t,e.target)}catch(n){let r=Vr(Wr(e.target),`.${Hr(e.target)}.${no()}.recovery.json`);try{io(r,e.source,{flag:"wx",mode:e.mode}),ro(r,e.mode&4095)}catch(i){throw new Error(`Could not restore ${e.target} or retain ${r}: ${String(i)}`,{cause:i})}throw new Error(`Could not restore ${e.target}; original bytes were retained at ${r}.`,{cause:n})}finally{xa(t,{force:!0})}}async function Sa(e){let t=e.documents.filter(n=>n.changed);return ba(e.documents.map(n=>n.target),()=>{for(let o of e.documents)wa(o);let n=t.map(o=>({...o,staging:Vr(Wr(o.target),`.${Hr(o.target)}.${no()}.migration.tmp`)})),r=()=>{for(let o of n)xa(o.staging,{force:!0})};try{for(let o of n)io(o.staging,Ea(o),{flag:"wx",mode:o.mode}),ro(o.staging,o.mode&4095);for(let o of e.documents)wa(o)}catch(o){r();let s=o instanceof Error?o.message:String(o);throw new it(t[0]?.file??"configuration set",`Migration staging failed; no configuration was replaced. ${s}`,{cause:o})}let i=[];try{for(let o of n)$a(o.staging,o.target),i.push(o)}catch(o){let s=[];for(let c of i.reverse())try{uh(c)}catch(u){s.push(u instanceof Error?u.message:String(u))}r();let a=o instanceof Error?o.message:String(o);throw new it(t[0]?.file??"configuration set",s.length?`Migration failed and recovery is incomplete. ${s.join("; ")}`:`Migration failed; every replaced configuration was restored. ${a}`,{cause:o})}finally{r()}return n.map(o=>({file:o.target,source:o.file,from:o.from,to:`$schemaVersion:${Ae}`}))})}var it,oh,qr=G(()=>{"use strict";vt();Un();it=class extends Error{constructor(t,n,r){super(`${t}: ${n}`,r),this.name="ConfigurationMigrationError"}},oh={}});import{readFileSync as lh}from"node:fs";import{homedir as ph}from"node:os";import{dirname as Ta,join as Kr}from"node:path";import{fileURLToPath as fh}from"node:url";function J(...e){return Kr(process.env.WOOF_HOME?.trim()||Kr(ph(),".woof"),...e)}function hh(){let e=Ta(fh(import.meta.url));for(;;){try{let{name:n}=JSON.parse(lh(Kr(e,"package.json"),"utf8"));if(n===Fn.name)return e}catch{}let t=Ta(e);if(t===e)throw new Error("woof could not find its package root above the running entry. Reinstall or relink woof.");e=t}}function Mt(...e){return Ca??=hh(),Kr(Ca,...e)}var Ca,je=G(()=>{"use strict";Bi()});var qn=Lt((lk,_a)=>{"use strict";var Aa="[^\\\\/]",dh="(?=.)",Ra="[^/]",ao="(?:\\/|$)",ja="(?:^|\\/)",co=`\\.{1,2}${ao}`,mh="(?!\\.)",gh=`(?!${ja}${co})`,yh=`(?!\\.{0,1}${ao})`,vh=`(?!${co})`,wh="[^.\\/]",kh=`${Ra}*?`,$h="/",Ia={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:dh,QMARK:Ra,END_ANCHOR:ao,DOTS_SLASH:co,NO_DOT:mh,NO_DOTS:gh,NO_DOT_SLASH:yh,NO_DOTS_SLASH:vh,QMARK_NO_DOT:wh,STAR:kh,START_ANCHOR:ja,SEP:$h},xh={...Ia,SLASH_LITERAL:"[\\\\/]",QMARK:Aa,STAR:`${Aa}*?`,DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)",SEP:"\\"},bh={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};_a.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:bh,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?xh:Ia}}});var Kn=Lt(Ue=>{"use strict";var{REGEX_BACKSLASH:Eh,REGEX_REMOVE_BACKSLASH:Sh,REGEX_SPECIAL_CHARS:Th,REGEX_SPECIAL_CHARS_GLOBAL:Ch}=qn();Ue.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);Ue.hasRegexChars=e=>Th.test(e);Ue.isRegexChar=e=>e.length===1&&Ue.hasRegexChars(e);Ue.escapeRegex=e=>e.replace(Ch,"\\$1");Ue.toPosixSlashes=e=>e.replace(Eh,"/");Ue.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){let e=navigator.platform.toLowerCase();return e==="win32"||e==="windows"}return typeof process<"u"&&process.platform?process.platform==="win32":!1};Ue.removeBackslashes=e=>e.replace(Sh,t=>t==="\\"?"":t);Ue.escapeLast=(e,t,n)=>{let r=e.lastIndexOf(t,n);return r===-1?e:e[r-1]==="\\"?Ue.escapeLast(e,t,r-1):`${e.slice(0,r)}\\${e.slice(r)}`};Ue.removePrefix=(e,t={})=>{let n=e;return n.startsWith("./")&&(n=n.slice(2),t.prefix="./"),n};Ue.wrapOutput=(e,t={},n={})=>{let r=n.contains?"":"^",i=n.contains?"":"$",o=`${r}(?:${e})${i}`;return t.negated===!0&&(o=`(?:^(?!${o}).*$)`),o};Ue.basename=(e,{windows:t}={})=>{let n=e.split(t?/[\\/]/:"/"),r=n[n.length-1];return r===""?n[n.length-2]:r}});var za=Lt((fk,Fa)=>{"use strict";var Pa=Kn(),{CHAR_ASTERISK:uo,CHAR_AT:Ah,CHAR_BACKWARD_SLASH:Zn,CHAR_COMMA:Rh,CHAR_DOT:lo,CHAR_EXCLAMATION_MARK:po,CHAR_FORWARD_SLASH:Ma,CHAR_LEFT_CURLY_BRACE:fo,CHAR_LEFT_PARENTHESES:ho,CHAR_LEFT_SQUARE_BRACKET:jh,CHAR_PLUS:Ih,CHAR_QUESTION_MARK:Oa,CHAR_RIGHT_CURLY_BRACE:_h,CHAR_RIGHT_PARENTHESES:Na,CHAR_RIGHT_SQUARE_BRACKET:Ph}=qn(),La=e=>e===Ma||e===Zn,Da=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},Oh=(e,t)=>{let n=t||{},r=e.length-1,i=n.parts===!0||n.scanToEnd===!0,o=[],s=[],a=[],c=e,u=-1,l=0,p=0,f=!1,m=!1,d=!1,h=!1,y=!1,v=!1,w=!1,A=!1,S=!1,g=!1,E=0,C,T,R={value:"",depth:0,isGlob:!1},$=()=>u>=r,x=()=>c.charCodeAt(u+1),j=()=>(C=T,c.charCodeAt(++u));for(;u<r;){T=j();let _;if(T===Zn){w=R.backslashes=!0,T=j(),T===fo&&(v=!0);continue}if(v===!0||T===fo){for(E++;$()!==!0&&(T=j());){if(T===Zn){w=R.backslashes=!0,j();continue}if(T===fo){E++;continue}if(v!==!0&&T===lo&&(T=j())===lo){if(f=R.isBrace=!0,d=R.isGlob=!0,g=!0,i===!0)continue;break}if(v!==!0&&T===Rh){if(f=R.isBrace=!0,d=R.isGlob=!0,g=!0,i===!0)continue;break}if(T===_h&&(E--,E===0)){v=!1,f=R.isBrace=!0,g=!0;break}}if(i===!0)continue;break}if(T===Ma){if(o.push(u),s.push(R),R={value:"",depth:0,isGlob:!1},g===!0)continue;if(C===lo&&u===l+1){l+=2;continue}p=u+1;continue}if(n.noext!==!0&&(T===Ih||T===Ah||T===uo||T===Oa||T===po)===!0&&x()===ho){if(d=R.isGlob=!0,h=R.isExtglob=!0,g=!0,T===po&&u===l&&(S=!0),i===!0){for(;$()!==!0&&(T=j());){if(T===Zn){w=R.backslashes=!0,T=j();continue}if(T===Na){d=R.isGlob=!0,g=!0;break}}continue}break}if(T===uo){if(C===uo&&(y=R.isGlobstar=!0),d=R.isGlob=!0,g=!0,i===!0)continue;break}if(T===Oa){if(d=R.isGlob=!0,g=!0,i===!0)continue;break}if(T===jh){for(;$()!==!0&&(_=j());){if(_===Zn){w=R.backslashes=!0,j();continue}if(_===Ph){m=R.isBracket=!0,d=R.isGlob=!0,g=!0;break}}if(i===!0)continue;break}if(n.nonegate!==!0&&T===po&&u===l){A=R.negated=!0,l++;continue}if(n.noparen!==!0&&T===ho){if(d=R.isGlob=!0,i===!0){for(;$()!==!0&&(T=j());){if(T===ho){w=R.backslashes=!0,T=j();continue}if(T===Na){g=!0;break}}continue}break}if(d===!0){if(g=!0,i===!0)continue;break}}n.noext===!0&&(h=!1,d=!1);let P=c,k="",b="";l>0&&(k=c.slice(0,l),c=c.slice(l),p-=l),P&&d===!0&&p>0?(P=c.slice(0,p),b=c.slice(p)):d===!0?(P="",b=c):P=c,P&&P!==""&&P!=="/"&&P!==c&&La(P.charCodeAt(P.length-1))&&(P=P.slice(0,-1)),n.unescape===!0&&(b&&(b=Pa.removeBackslashes(b)),P&&w===!0&&(P=Pa.removeBackslashes(P)));let N={prefix:k,input:e,start:l,base:P,glob:b,isBrace:f,isBracket:m,isGlob:d,isExtglob:h,isGlobstar:y,negated:A,negatedExtglob:S};if(n.tokens===!0&&(N.maxDepth=0,La(T)||s.push(R),N.tokens=s),n.parts===!0||n.tokens===!0){let _;for(let O=0;O<o.length;O++){let z=_?_+1:l,B=o[O],W=e.slice(z,B);n.tokens&&(O===0&&l!==0?(s[O].isPrefix=!0,s[O].value=k):s[O].value=W,Da(s[O]),N.maxDepth+=s[O].depth),(O!==0||W!=="")&&a.push(W),_=B}if(_&&_+1<e.length){let O=e.slice(_+1);a.push(O),n.tokens&&(s[s.length-1].value=O,Da(s[s.length-1]),N.maxDepth+=s[s.length-1].depth)}N.slashes=o,N.parts=a}return N};Fa.exports=Oh});var Ua=Lt((hk,Ga)=>{"use strict";var Zr=qn(),wt=Kn(),{MAX_LENGTH:Jr,POSIX_REGEX_SOURCE:Nh,REGEX_NON_SPECIAL_CHARS:Lh,REGEX_SPECIAL_CHARS_BACKREF:Dh,REPLACEMENTS:Ba}=Zr,Mh=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let n=`[${e.join("-")}]`;try{new RegExp(n)}catch{return e.map(i=>wt.escapeRegex(i)).join("..")}return n},En=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,mo=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=Ba[e]||e;let n={...t},r=typeof n.maxLength=="number"?Math.min(Jr,n.maxLength):Jr,i=e.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);let o={type:"bos",value:"",output:n.prepend||""},s=[o],a=n.capture?"":"?:",c=Zr.globChars(n.windows),u=Zr.extglobChars(c),{DOT_LITERAL:l,PLUS_LITERAL:p,SLASH_LITERAL:f,ONE_CHAR:m,DOTS_SLASH:d,NO_DOT:h,NO_DOT_SLASH:y,NO_DOTS_SLASH:v,QMARK:w,QMARK_NO_DOT:A,STAR:S,START_ANCHOR:g}=c,E=M=>`(${a}(?:(?!${g}${M.dot?d:l}).)*?)`,C=n.dot?"":h,T=n.dot?w:A,R=n.bash===!0?E(n):S;n.capture&&(R=`(${R})`),typeof n.noext=="boolean"&&(n.noextglob=n.noext);let $={input:e,index:-1,start:0,dot:n.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:s};e=wt.removePrefix(e,$),i=e.length;let x=[],j=[],P=[],k=o,b,N=()=>$.index===i-1,_=$.peek=(M=1)=>e[$.index+M],O=$.advance=()=>e[++$.index]||"",z=()=>e.slice($.index+1),B=(M="",Y=0)=>{$.consumed+=M,$.index+=Y},W=M=>{$.output+=M.output!=null?M.output:M.value,B(M.value)},q=()=>{let M=1;for(;_()==="!"&&(_(2)!=="("||_(3)==="?");)O(),$.start++,M++;return M%2===0?!1:($.negated=!0,$.start++,!0)},U=M=>{$[M]++,P.push(M)},H=M=>{$[M]--,P.pop()},F=M=>{if(k.type==="globstar"){let Y=$.braces>0&&(M.type==="comma"||M.type==="brace"),D=M.extglob===!0||x.length&&(M.type==="pipe"||M.type==="paren");M.type!=="slash"&&M.type!=="paren"&&!Y&&!D&&($.output=$.output.slice(0,-k.output.length),k.type="star",k.value="*",k.output=R,$.output+=k.output)}if(x.length&&M.type!=="paren"&&(x[x.length-1].inner+=M.value),(M.value||M.output)&&W(M),k&&k.type==="text"&&M.type==="text"){k.output=(k.output||k.value)+M.value,k.value+=M.value;return}M.prev=k,s.push(M),k=M},pe=(M,Y)=>{let D={...u[Y],conditions:1,inner:""};D.prev=k,D.parens=$.parens,D.output=$.output;let V=(n.capture?"(":"")+D.open;U("parens"),F({type:M,value:Y,output:$.output?"":m}),F({type:"paren",extglob:!0,value:O(),output:V}),x.push(D)},re=M=>{let Y=M.close+(n.capture?")":""),D;if(M.type==="negate"){let V=R;if(M.inner&&M.inner.length>1&&M.inner.includes("/")&&(V=E(n)),(V!==R||N()||/^\)+$/.test(z()))&&(Y=M.close=`)$))${V}`),M.inner.includes("*")&&(D=z())&&/^\.[^\\/.]+$/.test(D)){let Q=mo(D,{...t,fastpaths:!1}).output;Y=M.close=`)${Q})${V})`}M.prev.type==="bos"&&($.negatedExtglob=!0)}F({type:"paren",extglob:!0,value:b,output:Y}),H("parens")};if(n.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let M=!1,Y=e.replace(Dh,(D,V,Q,te,ie,Ni)=>te==="\\"?(M=!0,D):te==="?"?V?V+te+(ie?w.repeat(ie.length):""):Ni===0?T+(ie?w.repeat(ie.length):""):w.repeat(Q.length):te==="."?l.repeat(Q.length):te==="*"?V?V+te+(ie?R:""):R:V?D:`\\${D}`);return M===!0&&(n.unescape===!0?Y=Y.replace(/\\/g,""):Y=Y.replace(/\\+/g,D=>D.length%2===0?"\\\\":D?"\\":"")),Y===e&&n.contains===!0?($.output=e,$):($.output=wt.wrapOutput(Y,$,t),$)}for(;!N();){if(b=O(),b==="\0")continue;if(b==="\\"){let D=_();if(D==="/"&&n.bash!==!0||D==="."||D===";")continue;if(!D){b+="\\",F({type:"text",value:b});continue}let V=/^\\+/.exec(z()),Q=0;if(V&&V[0].length>2&&(Q=V[0].length,$.index+=Q,Q%2!==0&&(b+="\\")),n.unescape===!0?b=O():b+=O(),$.brackets===0){F({type:"text",value:b});continue}}if($.brackets>0&&(b!=="]"||k.value==="["||k.value==="[^")){if(n.posix!==!1&&b===":"){let D=k.value.slice(1);if(D.includes("[")&&(k.posix=!0,D.includes(":"))){let V=k.value.lastIndexOf("["),Q=k.value.slice(0,V),te=k.value.slice(V+2),ie=Nh[te];if(ie){k.value=Q+ie,$.backtrack=!0,O(),!o.output&&s.indexOf(k)===1&&(o.output=m);continue}}}(b==="["&&_()!==":"||b==="-"&&_()==="]")&&(b=`\\${b}`),b==="]"&&(k.value==="["||k.value==="[^")&&(b=`\\${b}`),n.posix===!0&&b==="!"&&k.value==="["&&(b="^"),k.value+=b,W({value:b});continue}if($.quotes===1&&b!=='"'){b=wt.escapeRegex(b),k.value+=b,W({value:b});continue}if(b==='"'){$.quotes=$.quotes===1?0:1,n.keepQuotes===!0&&F({type:"text",value:b});continue}if(b==="("){U("parens"),F({type:"paren",value:b});continue}if(b===")"){if($.parens===0&&n.strictBrackets===!0)throw new SyntaxError(En("opening","("));let D=x[x.length-1];if(D&&$.parens===D.parens+1){re(x.pop());continue}F({type:"paren",value:b,output:$.parens?")":"\\)"}),H("parens");continue}if(b==="["){if(n.nobracket===!0||!z().includes("]")){if(n.nobracket!==!0&&n.strictBrackets===!0)throw new SyntaxError(En("closing","]"));b=`\\${b}`}else U("brackets");F({type:"bracket",value:b});continue}if(b==="]"){if(n.nobracket===!0||k&&k.type==="bracket"&&k.value.length===1){F({type:"text",value:b,output:`\\${b}`});continue}if($.brackets===0){if(n.strictBrackets===!0)throw new SyntaxError(En("opening","["));F({type:"text",value:b,output:`\\${b}`});continue}H("brackets");let D=k.value.slice(1);if(k.posix!==!0&&D[0]==="^"&&!D.includes("/")&&(b=`/${b}`),k.value+=b,W({value:b}),n.literalBrackets===!1||wt.hasRegexChars(D))continue;let V=wt.escapeRegex(k.value);if($.output=$.output.slice(0,-k.value.length),n.literalBrackets===!0){$.output+=V,k.value=V;continue}k.value=`(${a}${V}|${k.value})`,$.output+=k.value;continue}if(b==="{"&&n.nobrace!==!0){U("braces");let D={type:"brace",value:b,output:"(",outputIndex:$.output.length,tokensIndex:$.tokens.length};j.push(D),F(D);continue}if(b==="}"){let D=j[j.length-1];if(n.nobrace===!0||!D){F({type:"text",value:b,output:b});continue}let V=")";if(D.dots===!0){let Q=s.slice(),te=[];for(let ie=Q.length-1;ie>=0&&(s.pop(),Q[ie].type!=="brace");ie--)Q[ie].type!=="dots"&&te.unshift(Q[ie].value);V=Mh(te,n),$.backtrack=!0}if(D.comma!==!0&&D.dots!==!0){let Q=$.output.slice(0,D.outputIndex),te=$.tokens.slice(D.tokensIndex);D.value=D.output="\\{",b=V="\\}",$.output=Q;for(let ie of te)$.output+=ie.output||ie.value}F({type:"brace",value:b,output:V}),H("braces"),j.pop();continue}if(b==="|"){x.length>0&&x[x.length-1].conditions++,F({type:"text",value:b});continue}if(b===","){let D=b,V=j[j.length-1];V&&P[P.length-1]==="braces"&&(V.comma=!0,D="|"),F({type:"comma",value:b,output:D});continue}if(b==="/"){if(k.type==="dot"&&$.index===$.start+1){$.start=$.index+1,$.consumed="",$.output="",s.pop(),k=o;continue}F({type:"slash",value:b,output:f});continue}if(b==="."){if($.braces>0&&k.type==="dot"){k.value==="."&&(k.output=l);let D=j[j.length-1];k.type="dots",k.output+=b,k.value+=b,D.dots=!0;continue}if($.braces+$.parens===0&&k.type!=="bos"&&k.type!=="slash"){F({type:"text",value:b,output:l});continue}F({type:"dot",value:b,output:l});continue}if(b==="?"){if(!(k&&k.value==="(")&&n.noextglob!==!0&&_()==="("&&_(2)!=="?"){pe("qmark",b);continue}if(k&&k.type==="paren"){let V=_(),Q=b;(k.value==="("&&!/[!=<:]/.test(V)||V==="<"&&!/<([!=]|\w+>)/.test(z()))&&(Q=`\\${b}`),F({type:"text",value:b,output:Q});continue}if(n.dot!==!0&&(k.type==="slash"||k.type==="bos")){F({type:"qmark",value:b,output:A});continue}F({type:"qmark",value:b,output:w});continue}if(b==="!"){if(n.noextglob!==!0&&_()==="("&&(_(2)!=="?"||!/[!=<:]/.test(_(3)))){pe("negate",b);continue}if(n.nonegate!==!0&&$.index===0){q();continue}}if(b==="+"){if(n.noextglob!==!0&&_()==="("&&_(2)!=="?"){pe("plus",b);continue}if(k&&k.value==="("||n.regex===!1){F({type:"plus",value:b,output:p});continue}if(k&&(k.type==="bracket"||k.type==="paren"||k.type==="brace")||$.parens>0){F({type:"plus",value:b});continue}F({type:"plus",value:p});continue}if(b==="@"){if(n.noextglob!==!0&&_()==="("&&_(2)!=="?"){F({type:"at",extglob:!0,value:b,output:""});continue}F({type:"text",value:b});continue}if(b!=="*"){(b==="$"||b==="^")&&(b=`\\${b}`);let D=Lh.exec(z());D&&(b+=D[0],$.index+=D[0].length),F({type:"text",value:b});continue}if(k&&(k.type==="globstar"||k.star===!0)){k.type="star",k.star=!0,k.value+=b,k.output=R,$.backtrack=!0,$.globstar=!0,B(b);continue}let M=z();if(n.noextglob!==!0&&/^\([^?]/.test(M)){pe("star",b);continue}if(k.type==="star"){if(n.noglobstar===!0){B(b);continue}let D=k.prev,V=D.prev,Q=D.type==="slash"||D.type==="bos",te=V&&(V.type==="star"||V.type==="globstar");if(n.bash===!0&&(!Q||M[0]&&M[0]!=="/")){F({type:"star",value:b,output:""});continue}let ie=$.braces>0&&(D.type==="comma"||D.type==="brace"),Ni=x.length&&(D.type==="pipe"||D.type==="paren");if(!Q&&D.type!=="paren"&&!ie&&!Ni){F({type:"star",value:b,output:""});continue}for(;M.slice(0,3)==="/**";){let Er=e[$.index+4];if(Er&&Er!=="/")break;M=M.slice(3),B("/**",3)}if(D.type==="bos"&&N()){k.type="globstar",k.value+=b,k.output=E(n),$.output=k.output,$.globstar=!0,B(b);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&!te&&N()){$.output=$.output.slice(0,-(D.output+k.output).length),D.output=`(?:${D.output}`,k.type="globstar",k.output=E(n)+(n.strictSlashes?")":"|$)"),k.value+=b,$.globstar=!0,$.output+=D.output+k.output,B(b);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&M[0]==="/"){let Er=M[1]!==void 0?"|$":"";$.output=$.output.slice(0,-(D.output+k.output).length),D.output=`(?:${D.output}`,k.type="globstar",k.output=`${E(n)}${f}|${f}${Er})`,k.value+=b,$.output+=D.output+k.output,$.globstar=!0,B(b+O()),F({type:"slash",value:"/",output:""});continue}if(D.type==="bos"&&M[0]==="/"){k.type="globstar",k.value+=b,k.output=`(?:^|${f}|${E(n)}${f})`,$.output=k.output,$.globstar=!0,B(b+O()),F({type:"slash",value:"/",output:""});continue}$.output=$.output.slice(0,-k.output.length),k.type="globstar",k.output=E(n),k.value+=b,$.output+=k.output,$.globstar=!0,B(b);continue}let Y={type:"star",value:b,output:R};if(n.bash===!0){Y.output=".*?",(k.type==="bos"||k.type==="slash")&&(Y.output=C+Y.output),F(Y);continue}if(k&&(k.type==="bracket"||k.type==="paren")&&n.regex===!0){Y.output=b,F(Y);continue}($.index===$.start||k.type==="slash"||k.type==="dot")&&(k.type==="dot"?($.output+=y,k.output+=y):n.dot===!0?($.output+=v,k.output+=v):($.output+=C,k.output+=C),_()!=="*"&&($.output+=m,k.output+=m)),F(Y)}for(;$.brackets>0;){if(n.strictBrackets===!0)throw new SyntaxError(En("closing","]"));$.output=wt.escapeLast($.output,"["),H("brackets")}for(;$.parens>0;){if(n.strictBrackets===!0)throw new SyntaxError(En("closing",")"));$.output=wt.escapeLast($.output,"("),H("parens")}for(;$.braces>0;){if(n.strictBrackets===!0)throw new SyntaxError(En("closing","}"));$.output=wt.escapeLast($.output,"{"),H("braces")}if(n.strictSlashes!==!0&&(k.type==="star"||k.type==="bracket")&&F({type:"maybe_slash",value:"",output:`${f}?`}),$.backtrack===!0){$.output="";for(let M of $.tokens)$.output+=M.output!=null?M.output:M.value,M.suffix&&($.output+=M.suffix)}return $};mo.fastpaths=(e,t)=>{let n={...t},r=typeof n.maxLength=="number"?Math.min(Jr,n.maxLength):Jr,i=e.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);e=Ba[e]||e;let{DOT_LITERAL:o,SLASH_LITERAL:s,ONE_CHAR:a,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:l,NO_DOTS_SLASH:p,STAR:f,START_ANCHOR:m}=Zr.globChars(n.windows),d=n.dot?l:u,h=n.dot?p:u,y=n.capture?"":"?:",v={negated:!1,prefix:""},w=n.bash===!0?".*?":f;n.capture&&(w=`(${w})`);let A=C=>C.noglobstar===!0?w:`(${y}(?:(?!${m}${C.dot?c:o}).)*?)`,S=C=>{switch(C){case"*":return`${d}${a}${w}`;case".*":return`${o}${a}${w}`;case"*.*":return`${d}${w}${o}${a}${w}`;case"*/*":return`${d}${w}${s}${a}${h}${w}`;case"**":return d+A(n);case"**/*":return`(?:${d}${A(n)}${s})?${h}${a}${w}`;case"**/*.*":return`(?:${d}${A(n)}${s})?${h}${w}${o}${a}${w}`;case"**/.*":return`(?:${d}${A(n)}${s})?${o}${a}${w}`;default:{let T=/^(.*?)\.(\w+)$/.exec(C);if(!T)return;let R=S(T[1]);return R?R+o+T[2]:void 0}}},g=wt.removePrefix(e,v),E=S(g);return E&&n.strictSlashes!==!0&&(E+=`${s}?`),E};Ga.exports=mo});var Va=Lt((dk,Wa)=>{"use strict";var Fh=za(),go=Ua(),Ha=Kn(),zh=qn(),Bh=e=>e&&typeof e=="object"&&!Array.isArray(e),ge=(e,t,n=!1)=>{if(Array.isArray(e)){let l=e.map(f=>ge(f,t,n));return f=>{for(let m of l){let d=m(f);if(d)return d}return!1}}let r=Bh(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!r)throw new TypeError("Expected pattern to be a non-empty string");let i=t||{},o=i.windows,s=r?ge.compileRe(e,t):ge.makeRe(e,t,!1,!0),a=s.state;delete s.state;let c=()=>!1;if(i.ignore){let l={...t,ignore:null,onMatch:null,onResult:null};c=ge(i.ignore,l,n)}let u=(l,p=!1)=>{let{isMatch:f,match:m,output:d}=ge.test(l,s,t,{glob:e,posix:o}),h={glob:e,state:a,regex:s,posix:o,input:l,output:d,match:m,isMatch:f};return typeof i.onResult=="function"&&i.onResult(h),f===!1?(h.isMatch=!1,p?h:!1):c(l)?(typeof i.onIgnore=="function"&&i.onIgnore(h),h.isMatch=!1,p?h:!1):(typeof i.onMatch=="function"&&i.onMatch(h),p?h:!0)};return n&&(u.state=a),u};ge.test=(e,t,n,{glob:r,posix:i}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let o=n||{},s=o.format||(i?Ha.toPosixSlashes:null),a=e===r,c=a&&s?s(e):e;return a===!1&&(c=s?s(e):e,a=c===r),(a===!1||o.capture===!0)&&(o.matchBase===!0||o.basename===!0?a=ge.matchBase(e,t,n,i):a=t.exec(c)),{isMatch:!!a,match:a,output:c}};ge.matchBase=(e,t,n)=>(t instanceof RegExp?t:ge.makeRe(t,n)).test(Ha.basename(e));ge.isMatch=(e,t,n)=>ge(t,n)(e);ge.parse=(e,t)=>Array.isArray(e)?e.map(n=>ge.parse(n,t)):go(e,{...t,fastpaths:!1});ge.scan=(e,t)=>Fh(e,t);ge.compileRe=(e,t,n=!1,r=!1)=>{if(n===!0)return e.output;let i=t||{},o=i.contains?"":"^",s=i.contains?"":"$",a=`${o}(?:${e.output})${s}`;e&&e.negated===!0&&(a=`^(?!${a}).*$`);let c=ge.toRegex(a,t);return r===!0&&(c.state=e),c};ge.makeRe=(e,t={},n=!1,r=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(i.output=go.fastpaths(e,t)),i.output||(i=go(e,t)),ge.compileRe(i,t,n,r)};ge.toRegex=(e,t)=>{try{let n=t||{};return new RegExp(e,n.flags||(n.nocase?"i":""))}catch(n){if(t&&t.debug===!0)throw n;return/$^/}};ge.constants=zh;Wa.exports=ge});var Ja=Lt((mk,Za)=>{"use strict";var qa=Va(),Gh=Kn();function Ka(e,t,n=!1){return t&&(t.windows===null||t.windows===void 0)&&(t={...t,windows:Gh.isWindows()}),qa(e,t,n)}Object.assign(Ka,qa);Za.exports=Ka});import{execFileSync as Uh}from"node:child_process";import{readFileSync as Xa,realpathSync as Jn,statSync as Ya}from"node:fs";import{isAbsolute as Qa,relative as Hh,resolve as ec,sep as yo,win32 as Wh}from"node:path";function tc(e){return e.code==="ENOENT"?"the file does not exist.":e instanceof Error?e.message:String(e)}function ve(e=process.cwd()){try{let t=Uh("git",["-C",e,"rev-parse","--show-toplevel"],{encoding:"utf8",env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","ignore"]}).trim();return t?Jn(t):void 0}catch{return}}function ot(e){return e.startsWith("<root>/")||e.startsWith("<repo>/")}function Vh(e,t){let n=Hh(e,t);return n===""||!n.startsWith(`..${yo}`)&&n!==".."&&!Qa(n)}function qh(e,t,n){try{let r=Jn(e),i=Jn(t);if(!Vh(r,i))throw new xe(n,"the resolved path escapes its declared root.");if(!Ya(i).isFile())throw new xe(n,"the marked resource is not a regular file.");return{file:i,root:r}}catch(r){throw r instanceof xe?r:new xe(n,tc(r),{cause:r})}}function vo(e,t){let n=e.startsWith("<root>/")?"root":e.startsWith("<repo>/")?"repo":void 0;if(!n)throw new xe(e,"expected a path beginning with <root>/ or <repo>/.");if(n==="repo"&&!t)throw new xe(e,"no active checkout or worktree supplies <repo>; there is no filesystem fallback.");let r=n==="root"?J():t,i=e.slice(7);if(!i||yo==="\\"&&i.includes("\\")||i.includes("\0")||Qa(i)||yo==="\\"&&Wh.isAbsolute(i)||i.split("/").some(a=>!a||a==="."||a===".."))throw new xe(e,"the marked path contains an absolute, empty, backslash or traversal component.");let{file:o,root:s}=qh(r,ec(r,i),e);return{file:o,root:s,rootKind:n,markedPath:e}}function Kh(e,t,n){let r=t==="root"?J():n;if(!r)throw new xe(e,"no active checkout or worktree supplies the configuration root.");try{let i=Jn(r),o=Jn(ec(r,e));if(!Ya(o).isFile())throw new xe(e,"the configuration is not a regular file.");return{file:o,root:i,rootKind:t,markedPath:e}}catch(i){throw i instanceof xe?i:new xe(e,tc(i),{cause:i})}}function kt(e,t={}){return vo(e,t.repoRoot??ve(t.cwd))}function nc(e,t={}){let n=kt(e,t);return{content:Xa(n.file,"utf8"),provenance:n}}function se(e={}){let t=e.repoRoot??ve(e.cwd),n=new Map,r=[];function i(o,s,a){let c=a?Kh(o,a,t):vo(o,t);if(r.includes(c.file)||s!=="root"&&n.has(`root:${c.file}`))throw new xe(o,`configuration-reference cycle: ${[...r,c.file].join(" -> ")}`);let u=`${s}:${c.file}`,l=n.get(u);if(l)return l;r.push(c.file);try{let f={data:s==="root"?Dt(c.file,s):Dt(c.file,s),source:{...c,kind:s}};return n.set(u,f),f}finally{r.pop()}}return{repoRoot:t,loadRootConfiguration(o=J("woof.config.json")){return i(o,"root","root")},loadProjectConfiguration(o){return i(o,"project")},loadRepositoryConfiguration(o){if(!t)throw new xe(o,"no active checkout or worktree supplies <repo>.");return i(o,"repository","repo")},readResource(o){let s=vo(o,t);return{content:Xa(s.file,"utf8"),provenance:s}}}}var xe,be=G(()=>{"use strict";vt();je();xe=class extends Error{reference;detail;constructor(t,n,r){super(`Could not load ${t}: ${n}`,r),this.name="ResourceLoadError",this.reference=t,this.detail=n}}});import{existsSync as Zh,realpathSync as Ft,statSync as Jh}from"node:fs";import{homedir as rc}from"node:os";import{basename as ic,dirname as oc,isAbsolute as sc,normalize as Xh,relative as Yh,resolve as Xn,sep as Qh,win32 as ed}from"node:path";function cc(e,t){let n=Yh(e,t);return n===""||!n.startsWith(`..${Qh}`)&&n!==".."&&!sc(n)}function zt(e){try{return cc(Ft(J()),Ft(e))}catch{return!1}}function Bt(e){let t=[Xn(e,"woof.config.json"),Xn(e,".agents/woof.config.json"),Xn(e,".claude/woof.config.json")],n=new Map;for(let r of t)try{let i=Ft(r);if(!Jh(i).isFile())throw new on(`Repository configuration is not a file: ${I(r)}`);n.set(i,r)}catch(i){if(i.code==="ENOENT")continue;throw i}if(n.size>1)throw new on(`Multiple distinct repository configurations exist: ${[...n.values()].map(r=>I(r)).join(", ")}. Keep only one of ${I("woof.config.json")} at the checkout root, ${I(".agents/woof.config.json")} or ${I(".claude/woof.config.json")}.`);return n.keys().next().value}function uc(e,t,n){let r=e.data.$projects??{};if(!Object.prototype.hasOwnProperty.call(r,n))throw new on(`Project ${I(n)} is not registered. See the registered projects with ${I("woof projects")}.`);let i=r[n];if(typeof i=="string"){let o=t.loadProjectConfiguration(i);return{kind:"registered",name:n,data:o.data,source:o.source,inline:!1}}return{kind:"registered",name:n,data:i,source:e.source,inline:!0}}function $t(e,t){return Object.keys(e.data.$projects??{}).map(n=>uc(e,t,n))}function Yn(e,t){let n=e==="~"?rc():e.startsWith("~/")?Xn(rc(),e.slice(2)):e;if(!sc(n)&&!ed.isAbsolute(n))throw new on(`Project ${I(t)} metadata path must be absolute or begin with ${I("~/")}: ${I(e)}`);return Xh(n)}function td(e){try{return Ft(e)}catch{return e}}function nd(e){let t=[],n=e;for(;;)try{return Xn(Ft(n),...t)}catch{let r=oc(n);if(r===n)return e;t.unshift(ic(n)),n=r}}function rd(e,t){let n=td(e);return cc(n,t)}function id(e,t,n){try{let r=(0,ac.default)(e,{dot:!0}),i=t;for(;i;){if(r(i))return!0;let o=oc(i);i=o===i?void 0:o}return!1}catch(r){throw new on(`Project ${I(n)} has an invalid worktree glob: ${I(e)}`,{cause:r})}}function Sn(e){let t="project"in e?e.project:void 0;if(t)return t.kind==="repository"?`${ic(e.checkoutRoot)} (repo config)`:e.selection==="explicit"?`${t.name} (chosen for this command)`:`${t.name} (its paths match this directory)`}function Ie(e){return(e.data.$metadata?.$basePaths??[]).map(t=>Yn(t,e.name)).find(t=>Zh(t))}function Qn(e,t,n){if(wo(e,Ft(t)))return n;let r=Ie(e);return r?ve(r)??r:void 0}function lc(e,t){return wo(e,Ft(t))}function wo(e,t){let n=e.data.$metadata;if(!n)return!1;let r=(n.$basePaths??[]).map(o=>Yn(o,e.name)),i=(n.$worktreePaths??[]).map(o=>nd(Yn(o,e.name)));return r.some(o=>rd(o,t))||i.some(o=>id(o,t,e.name))}function ye(e={}){let t=e.cwd??process.cwd(),n=e.loader??se({cwd:t}),r=n.loadRootConfiguration(),i=ve(t);if(e.project){let a=uc(r,n,e.project);return{root:r,project:a,candidates:[],checkoutRoot:Qn(a,t,i),selection:"explicit"}}if(i&&!zt(t)){let a=Bt(i);if(a){let c=n.loadRepositoryConfiguration(a);return{root:r,project:{kind:"repository",name:void 0,data:c.data,source:c.source,inline:!1},candidates:[],checkoutRoot:i,selection:"repository"}}}let o=Ft(t),s=$t(r,n).filter(a=>wo(a,o));return s.length===1?{root:r,project:s[0],candidates:s,checkoutRoot:i,selection:"metadata"}:s.length>1?{root:r,candidates:s,checkoutRoot:i,selection:"ambiguous"}:{root:r,candidates:s,checkoutRoot:i,selection:"root"}}var ac,on,Ze=G(()=>{"use strict";ac=Sr(Ja(),1);Ge();je();be();on=class extends Error{constructor(t,n){super(t,n),this.name="ProjectSelectionError"}}});function od(e){return typeof e=="string"||!!e&&typeof e=="object"&&!Array.isArray(e)}function fc(e,t,n,r){let i=new Map,o=new Set;function s(a,c){for(let[u,l]of Object.entries(a)){if(r.has(u))continue;let p=c?`${c}.${u}`:u;od(l)&&(typeof l=="string"||"$type"in l||"$exec"in l)?i.set(p,{path:p,value:l,origin:n,source:t,overridden:void 0}):(o.add(p),s(l,p))}}return s(e,""),{tokens:i,namespaces:o}}function we(e){let t=fc(e.root.data,e.root.source,"root",new Set(["$schemaVersion","$projects"])),n=e.project?fc(e.project.data,e.project.source,"project",new Set(["$schemaVersion","$metadata"])):{tokens:new Map,namespaces:new Set};for(let[i,o]of n.tokens){if(t.namespaces.has(i))throw new Ee(`Project token ${I(i)} is a leaf but the shared definition is a namespace.`);let s=t.tokens.get(i);n.tokens.set(i,{...o,overridden:s})}for(let i of n.namespaces)if(t.tokens.has(i))throw new Ee(`Project namespace ${I(i)} conflicts with a shared leaf of the same name.`);let r=new Map(t.tokens);for(let[i,o]of n.tokens)r.set(i,o);return{context:e,tokens:r,rootTokens:t.tokens,rootNamespaces:t.namespaces,projectNamespaces:n.namespaces}}function er(e){let t=[];function n(i){if(!i)return;let o=t.at(-1);o?.kind==="literal"?o.text+=i:t.push({kind:"literal",text:i})}let r=0;for(;r<e.length;){if(e.startsWith("{{{{",r)){let i=e.indexOf("}}}}",r+4);if(i!==-1){let o=e.slice(r+4,i);if(tr.test(o)&&e[i+4]!=="}"){n(`{{${o}}}`),r=i+4;continue}}}if(e.startsWith("{{",r)){let i=e.indexOf("}}",r+2);if(i!==-1){let o=e.slice(r+2,i);if(tr.test(o)&&e[r-1]!=="$"&&e[r-1]!=="{"&&e[i+2]!=="}"){t.push({kind:"reference",path:o}),r=i+2;continue}}}n(e[r]),r+=1}return t}function Xr(e){return er(e).flatMap(t=>t.kind==="reference"?[t.path]:[])}function Yr(e,t){let n="",r=0;for(;r<e.length;){if(e.startsWith("{{{{",r)){let i=e.indexOf("}}}}",r+4);if(i!==-1){let o=e.slice(r+4,i);if(tr.test(o)&&e[i+4]!=="}"){n+=e.slice(r,i+4),r=i+4;continue}}}if(e.startsWith("{{",r)){let i=e.indexOf("}}",r+2);if(i!==-1){let o=e.slice(r+2,i);if(tr.test(o)&&e[r-1]!=="$"&&e[r-1]!=="{"&&e[i+2]!=="}"){n+=`{{${t.get(o)??o}}}`,r=i+2;continue}}}n+=e[r],r+=1}return n}function jt(e){if(!e.startsWith("$projects.")){if(!tr.test(e))throw new Ee(`Invalid token address: ${I(e)}`);return{path:e}}let[,t,...n]=e.split(".");if(!t||!pc.test(t)||!n.length||n.some(r=>!pc.test(r)))throw new Ee(`Invalid qualified project address: ${I(e)}`);return{project:t,path:n.join(".")}}function hc(e,t){let n=jt(t);if(n.project){let r=e.context.project;if(r?.kind!=="registered"||r.name!==n.project)throw new Ee(`Address ${I(t)} contradicts the selected project; select ${I(n.project)} explicitly instead of mixing scopes.`)}return n.path}function dc(e){return typeof e.value=="string"?{description:void 0,tags:void 0}:{description:e.value.$description,tags:e.value.$tags}}function ko(e){let t=er(e),n=t[0];return t.length===1&&n?.kind==="reference"?n.path:void 0}function mc(e){return[...e.tokens.values()].map(t=>{let n=typeof t.value=="string"?ko(t.value):void 0;return{path:t.path,kind:n?"alias":typeof t.value=="string"?"prompt":t.value.$type,target:n,...dc(t),origin:t.origin,source:t.source}})}function gc(e){let t=new Map,n=new Map,r=new Map;function i(p,f){if(f.origin==="root"&&p.startsWith("<repo>/"))throw new Ee(`Global token ${I(f.path)} cannot depend on repository resource ${I(p)}.`);let m=e.context.checkoutRoot,d=e.context.project;if(p.startsWith("<repo>/")&&!m)throw new Ee(`${I(f.path)} reads ${I(p)}, but ${d?.name?`project ${I(d.name)} has no base path on this machine`:"no checkout is available"}.`);return o(f,()=>kt(p,m?{repoRoot:m}:{}))}function o(p,f){try{return f()}catch(m){throw m instanceof xe?new Ee(`${I(p.path)} in ${I(p.source.file)} cannot load ${I(m.reference)}: ${m.detail}`):m}}function s(p){if(typeof p.value!="string"&&p.value.$type!=="prompt")throw new Ee(`Token ${I(p.path)} is not a prompt.`);let f=typeof p.value=="string"?p.value:p.value.$exec;if(!ot(f))return{content:f,parts:er(f),files:[]};let m=i(f,p),d=n.get(f);if(d)return{content:d.content,parts:er(d.content),files:[d.provenance]};let h=e.context.checkoutRoot,y=o(p,()=>nc(f,h?{repoRoot:h}:{})).content;return n.set(f,{content:y,provenance:m}),{content:y,parts:er(y),files:[m]}}function a(p,f,m){let d=f.at(-1),h=m?` in ${I(m.source.file)}`:"",y=d?` ${I(d)}${h} references it.`:"";throw e.rootNamespaces.has(p)||e.projectNamespaces.has(p)?new Ee(`${I(p)} is a namespace, not a token.${y}`):m?.origin==="root"&&e.context.project&&!e.rootTokens.has(p)?new Ee(`Shared token ${I(m.path)} depends on project-only token ${I(p)}.`):new Ee(`Token ${I(p)} does not exist.${y}`)}function c(p,f){if(f.includes(p))throw new Ee(`Circular token reference: ${I([...f,p].join(" -> "))}`);let m=e.tokens.get(p);if(!m)return a(p,f,f.length?e.tokens.get(f.at(-1)):void 0);if(t.has(p))return;let d=[],h=[];if(typeof m.value=="string"||m.value.$type==="prompt"){let y=s(m);h.push(...y.files);for(let v of y.parts)v.kind==="reference"&&(d.push(v.path),m.origin==="root"&&!e.rootTokens.has(v.path)&&a(v.path,[...f,p],m),c(v.path,[...f,p]))}else{let y=Array.isArray(m.value.$exec)?m.value.$exec:[m.value.$exec];for(let v of y)ot(v)&&h.push(i(v,m))}t.set(p,{path:p,origin:m.origin,source:m.source,...dc(m),references:d,files:h,overridden:m.overridden?{path:m.overridden.path,source:m.overridden.source}:void 0})}async function u(p){let f=r.get(p);if(f)return f;let m=(async()=>{let d=e.tokens.get(p);if(typeof d.value!="string"&&d.value.$type!=="prompt"){if(!l)throw new Ee(`Computed token ${I(p)} requires an evaluation hook.`);let v=d.value,A=(Array.isArray(v.$exec)?v.$exec:[v.$exec]).map(g=>ot(g)?i(g,d):void 0),S=await l({token:d,resource:v,locations:A});if(typeof S!="string")throw new Ee(`Computed token ${I(p)} returned non-text output.`);return S}let h=s(d),y="";for(let v of h.parts)v.kind==="literal"?y+=v.text:y+=await u(v.path);return y})();return r.set(p,m),m}let l;return{visit:c,evaluate:u,setEvaluator(p){l=p},traces(){return[...t.values()]}}}function yc(e,t,n){return{requested:t,selection:e.context.selection,project:e.context.project?{kind:e.context.project.kind,name:e.context.project.name,source:e.context.project.source}:void 0,tokens:n.traces()}}function Gt(e,t){let n=hc(e,t),r=gc(e);return r.visit(n,[]),yc(e,n,r)}function vc(e,t){return Gt(e,t)}async function $o(e,t,n,r){let i=hc(e,t),o=gc(e);return o.setEvaluator(n),o.visit(i,[]),r?.(yc(e,i,o)),o.evaluate(i)}function nr(e,t){return t?[Gt(e,t)]:[...e.tokens.keys()].map(n=>Gt(e,n))}var Ee,pc,tr,Je=G(()=>{"use strict";Ge();be();Ee=class extends Error{constructor(t,n){super(t,n),this.name="TokenResolutionError"}},pc=/^[A-Za-z0-9_-]+$/,tr=/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/});import{createHash as sd}from"node:crypto";import{chmodSync as ad,constants as Ec,copyFileSync as Sc,existsSync as cd,mkdirSync as Tc,readFileSync as ir,realpathSync as Qr,rmSync as Cc,statSync as wc}from"node:fs";import{homedir as ud}from"node:os";import{basename as ld,dirname as xo,extname as Ac,isAbsolute as pd,join as sn,relative as ei,resolve as fd,sep as ti}from"node:path";import{isDeepStrictEqual as kc}from"node:util";function an(e){return e.kind==="shared"?"shared tokens (global)":e.kind==="repository"?"repo tokens (project)":`${e.name} tokens (project)`}function Rc(e,t){if(e.kind==="shared")return J("woof.config.json");if(e.kind==="repository")return ve(t);let n=se({cwd:t}),r=$t(n.loadRootConfiguration(),n).find(i=>i.name===e.name);return r&&Ie(r)}function $c(e,t){let n=ei(e,t);return n!==""&&!n.startsWith(`..${ti}`)&&n!==".."&&!pd(n)}function xc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!("$type"in e||"$exec"in e)}function sr(e,t){let n=J("woof.config.json");if(e.kind==="shared")return{file:n,kind:"root",base:[]};if(e.kind==="repository"){let s=ve(t),a=s&&!zt(t)?Bt(s):void 0;if(!a)throw new Error(`This checkout has no repository configuration. Create one with ${I("woof init --repo")}.`);return{file:a,kind:"repository",base:[]}}let r=se({cwd:t}),i=r.loadRootConfiguration().data.$projects??{};if(!Object.hasOwn(i,e.name))throw new Error(`Project ${I(e.name)} is not registered. See the registered projects with ${I("woof projects")}.`);let o=i[e.name];return typeof o=="string"?{file:r.loadProjectConfiguration(o).source.file,kind:"project",base:[]}:{file:n,kind:"root",base:["$projects",e.name]}}function So(e,t,n,r,i=!1){let o=structuredClone(e),s=t.reduce((c,u)=>c[u],o),a=n.split(".");for(let[c,u]of a.entries()){let l=a.slice(0,c+1).join("."),p=Object.hasOwn(s,u)?s[u]:void 0;if(c===a.length-1){if(i&&(p===void 0||xc(p)))throw new Error(`Token ${I(l)} does not exist in this configuration.`);if(!i&&p!==void 0)throw new Error(`Token ${I(l)} already exists in this configuration.`);s[u]=r}else if(p===void 0){if(i)throw new Error(`Token ${I(n)} does not exist in this configuration.`);s=s[u]={}}else if(xc(p))s=p;else throw new Error(`Token ${I(l)} already exists, so it cannot hold ${I(n)}.`)}return o}function bo(e,t,n,r){return e==="prompt"&&typeof t=="string"&&!n&&!r.length?t:{$type:e,$exec:t,...n?{$description:n}:{},...r.length?{$tags:r}:{}}}function Eo(e){return bo(e.type,e.content.exec,e.description,e.tags)}function md(e){if(!e.content.copy)return Eo(e);let t=e.type==="prompt"?ir(e.content.file,"utf8"):"";return Eo({...e,content:{exec:t}})}function To(e){if(!e.split(".").every(n=>hd.test(n)&&!dd.has(n)))throw new Error(`Token path ${I(e)} must be dot-separated names that contain only ASCII letters, digits, underscores and hyphens.`)}function Co(e,t){if(!e.trim())throw new Error("The token content is empty.");if(e.includes(`
|
|
19
|
-
`)
|
|
20
|
-
`)
|
|
21
|
-
`)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`),o=0,s=e;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+t;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}function Ld(e){if(e!==void 0)return e;if(Xe.accessible!==void 0)return Xe.accessible;let t=process.env.ACCESSIBLE;return t!==void 0&&t!==""&&t!=="0"&&t!=="false"}function Jc(e,t){if(typeof e=="string")return Xe.aliases.get(e)===t;for(let n of e)if(n!==void 0&&Jc(n,t))return!0;return!1}function Dd(e,t){if(e===t)return;let n=e.split(`
|
|
13
|
+
${n}`)}function so(e){return oo.run(!0,e)}function xn(){return!!fe()||process.argv.includes("--agent")||oo.getStore()===!0}function I(e){return oo.getStore()?`\`${e}\``:xn()?e:Ue.bgHex("#262626").hex("#eeeeee")(` ${e} `)}function Le(e){return xn()?e:Ue.dim(e)}function De(e){return Le(`(${e})`)}function je(e){if(xn())return e.map(([n,r])=>`${n}: ${r}`).join(`
|
|
14
|
+
`);let t=Math.max(...e.map(([n])=>n.length));return e.map(([n,r])=>`${`${n}:`.padEnd(t+2)}${Le(r)}`).join(`
|
|
15
|
+
`)}function Zn(e,t){return xn()?`[${e}]`:Ue.bgHex(t).black(` ${e} `)}function Me(e,t,n=`${e}s`){if(!t.length)return[];let r=t.length===1?e:n;return xn()?[`${r}: ${t.join(", ")}`]:[`${r}:`,...t.map(i=>` - ${Le(i)}`)]}function bn(e){return e==="prompt"?"":Zn(e,"#ffd787")}function ba(e){return xn()?e:e.split(`
|
|
16
|
+
`).map(t=>t.startsWith("+")?Ue.hex("#87d787")(t):t.startsWith("-")?Ue.hex("#ff8787")(t):t.startsWith("@@")?Ue.dim(t):t).join(`
|
|
17
|
+
`)}function qr(){return Zn("inline","#dadada")}function En(e){let t=e==="root"?"global":"project";return Zn(t,sh[t])}var oo,sh,Ge=U(()=>{"use strict";Vr();qe();an();oo=new oh;sh={global:"#dadada",project:"#afd7ff"}});import{randomUUID as ao}from"node:crypto";import{chmodSync as co,readFileSync as lo,realpathSync as Ta,renameSync as Aa,rmSync as Ra,statSync as ah,writeFileSync as uo}from"node:fs";import{mkdir as ch,rm as uh}from"node:fs/promises";import{basename as Kr,dirname as Zr,join as Jr}from"node:path";import{setTimeout as lh}from"node:timers/promises";function fh(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ea(e){let t=e.$schemaVersion;if(typeof t!="number"||!Number.isInteger(t)||t<1)throw new Error("$schemaVersion must be a positive integer; no source version was inferred for migration.");return t}function hh(e,t){return t>Ce?new st(e,`$schemaVersion:${t} is newer than this CLI supports. Install a compatible woof release; no downgrade or guessed migration was attempted.`):new st(e,`No migration is available from $schemaVersion:${t} to $schemaVersion:${Ce}. Use a compatible release or restore a supported configuration.`)}async function Sn(e,t){let n=Ta(e),r=Jr(Zr(n),`.${Kr(n)}.woof-migration.lock`),i=Date.now()+5e3;for(;;)try{await ch(r);break}catch(o){if(o.code!=="EEXIST")throw o;if(Date.now()>=i)throw new Error(`Configuration lock timed out: ${r}`,{cause:o});await lh(20)}try{return await t(n)}finally{await uh(r,{recursive:!0,force:!0})}}async function Ca(e,t){let n=[...new Set(e)].sort(),[r,...i]=n;return r?Sn(r,()=>Ca(i,t)):t()}function dh({file:e,kind:t="root"}){try{let n=Ta(e),r=lo(n,"utf8"),i;try{i=JSON.parse(r)}catch(u){throw new st(n,"Configuration is not valid JSON.",{cause:u})}if(!fh(i))throw new st(n,"Configuration must be an object.");let o=Ea(i),s=i,a=o;for(;a!==Ce;){let u=ph[a];if(!u)throw hh(n,a);s=u(s),a=Ea(s)}let c=Ze(s,t,n);return{file:e,target:n,kind:t,source:r,mode:ah(n).mode,from:`$schemaVersion:${o}`,changed:o!==Ce,migrated:c}}catch(n){if(n instanceof st)throw n;let r=n instanceof Error?n.message:String(n);throw new st(e,r,{cause:n})}}function po(e){let t=e.map(dh),n=new Set;for(let r of t){if(n.has(r.target))throw new st(r.file,"The same physical configuration was supplied more than once.");n.add(r.target)}return{documents:t}}function ja(e){return`${JSON.stringify(e.migrated,null,2)}
|
|
18
|
+
`}function Sa(e){if(lo(e.target,"utf8")!==e.source)throw new st(e.target,"Configuration changed during migration; retry without overwriting either version.")}function mh(e){let t=Jr(Zr(e.target),`.${Kr(e.target)}.${ao()}.rollback.tmp`);try{if(lo(e.target,"utf8")!==ja(e))throw new Error("The migrated destination changed again before rollback.");uo(t,e.source,{flag:"wx",mode:e.mode}),co(t,e.mode&4095),Aa(t,e.target)}catch(n){let r=Jr(Zr(e.target),`.${Kr(e.target)}.${ao()}.recovery.json`);try{uo(r,e.source,{flag:"wx",mode:e.mode}),co(r,e.mode&4095)}catch(i){throw new Error(`Could not restore ${e.target} or retain ${r}: ${String(i)}`,{cause:i})}throw new Error(`Could not restore ${e.target}; original bytes were retained at ${r}.`,{cause:n})}finally{Ra(t,{force:!0})}}async function Ia(e){let t=e.documents.filter(n=>n.changed);return Ca(e.documents.map(n=>n.target),()=>{for(let o of e.documents)Sa(o);let n=t.map(o=>({...o,staging:Jr(Zr(o.target),`.${Kr(o.target)}.${ao()}.migration.tmp`)})),r=()=>{for(let o of n)Ra(o.staging,{force:!0})};try{for(let o of n)uo(o.staging,ja(o),{flag:"wx",mode:o.mode}),co(o.staging,o.mode&4095);for(let o of e.documents)Sa(o)}catch(o){r();let s=o instanceof Error?o.message:String(o);throw new st(t[0]?.file??"configuration set",`Migration staging failed; no configuration was replaced. ${s}`,{cause:o})}let i=[];try{for(let o of n)Aa(o.staging,o.target),i.push(o)}catch(o){let s=[];for(let c of i.reverse())try{mh(c)}catch(u){s.push(u instanceof Error?u.message:String(u))}r();let a=o instanceof Error?o.message:String(o);throw new st(t[0]?.file??"configuration set",s.length?`Migration failed and recovery is incomplete. ${s.join("; ")}`:`Migration failed; every replaced configuration was restored. ${a}`,{cause:o})}finally{r()}return n.map(o=>({file:o.target,source:o.file,from:o.from,to:`$schemaVersion:${Ce}`}))})}var st,ph,Xr=U(()=>{"use strict";kt();Vn();st=class extends Error{constructor(t,n,r){super(`${t}: ${n}`,r),this.name="ConfigurationMigrationError"}},ph={}});import{readFileSync as gh}from"node:fs";import{homedir as yh}from"node:os";import{dirname as _a,join as Yr}from"node:path";import{fileURLToPath as vh}from"node:url";function J(...e){return Yr(process.env.WOOF_HOME?.trim()||Yr(yh(),".woof"),...e)}function wh(){let e=_a(vh(import.meta.url));for(;;){try{let{name:n}=JSON.parse(gh(Yr(e,"package.json"),"utf8"));if(n===Un.name)return e}catch{}let t=_a(e);if(t===e)throw new Error("woof could not find its package root above the running entry. Reinstall or relink woof.");e=t}}function Ut(...e){return Pa??=wh(),Yr(Pa,...e)}var Pa,Ie=U(()=>{"use strict";Vi()});var Jn=zt((vk,Ma)=>{"use strict";var Oa="[^\\\\/]",kh="(?=.)",Na="[^/]",fo="(?:\\/|$)",La="(?:^|\\/)",ho=`\\.{1,2}${fo}`,$h="(?!\\.)",xh=`(?!${La}${ho})`,bh=`(?!\\.{0,1}${fo})`,Eh=`(?!${ho})`,Sh="[^.\\/]",Th=`${Na}*?`,Ah="/",Da={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:kh,QMARK:Na,END_ANCHOR:fo,DOTS_SLASH:ho,NO_DOT:$h,NO_DOTS:xh,NO_DOT_SLASH:bh,NO_DOTS_SLASH:Eh,QMARK_NO_DOT:Sh,STAR:Th,START_ANCHOR:La,SEP:Ah},Rh={...Da,SLASH_LITERAL:"[\\\\/]",QMARK:Oa,STAR:`${Oa}*?`,DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)",SEP:"\\"},Ch={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Ma.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:Ch,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(e){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(e){return e===!0?Rh:Da}}});var Xn=zt(He=>{"use strict";var{REGEX_BACKSLASH:jh,REGEX_REMOVE_BACKSLASH:Ih,REGEX_SPECIAL_CHARS:_h,REGEX_SPECIAL_CHARS_GLOBAL:Ph}=Jn();He.isObject=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);He.hasRegexChars=e=>_h.test(e);He.isRegexChar=e=>e.length===1&&He.hasRegexChars(e);He.escapeRegex=e=>e.replace(Ph,"\\$1");He.toPosixSlashes=e=>e.replace(jh,"/");He.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){let e=navigator.platform.toLowerCase();return e==="win32"||e==="windows"}return typeof process<"u"&&process.platform?process.platform==="win32":!1};He.removeBackslashes=e=>e.replace(Ih,t=>t==="\\"?"":t);He.escapeLast=(e,t,n)=>{let r=e.lastIndexOf(t,n);return r===-1?e:e[r-1]==="\\"?He.escapeLast(e,t,r-1):`${e.slice(0,r)}\\${e.slice(r)}`};He.removePrefix=(e,t={})=>{let n=e;return n.startsWith("./")&&(n=n.slice(2),t.prefix="./"),n};He.wrapOutput=(e,t={},n={})=>{let r=n.contains?"":"^",i=n.contains?"":"$",o=`${r}(?:${e})${i}`;return t.negated===!0&&(o=`(?:^(?!${o}).*$)`),o};He.basename=(e,{windows:t}={})=>{let n=e.split(t?/[\\/]/:"/"),r=n[n.length-1];return r===""?n[n.length-2]:r}});var Va=zt((kk,Wa)=>{"use strict";var Fa=Xn(),{CHAR_ASTERISK:mo,CHAR_AT:Oh,CHAR_BACKWARD_SLASH:Yn,CHAR_COMMA:Nh,CHAR_DOT:go,CHAR_EXCLAMATION_MARK:yo,CHAR_FORWARD_SLASH:Ha,CHAR_LEFT_CURLY_BRACE:vo,CHAR_LEFT_PARENTHESES:wo,CHAR_LEFT_SQUARE_BRACKET:Lh,CHAR_PLUS:Dh,CHAR_QUESTION_MARK:za,CHAR_RIGHT_CURLY_BRACE:Mh,CHAR_RIGHT_PARENTHESES:Ba,CHAR_RIGHT_SQUARE_BRACKET:Fh}=Jn(),Ua=e=>e===Ha||e===Yn,Ga=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},zh=(e,t)=>{let n=t||{},r=e.length-1,i=n.parts===!0||n.scanToEnd===!0,o=[],s=[],a=[],c=e,u=-1,p=0,l=0,f=!1,d=!1,m=!1,h=!1,g=!1,v=!1,y=!1,R=!1,A=!1,k=!1,w=0,T,S,C={value:"",depth:0,isGlob:!1},$=()=>u>=r,E=()=>c.charCodeAt(u+1),j=()=>(T=S,c.charCodeAt(++u));for(;u<r;){S=j();let N;if(S===Yn){y=C.backslashes=!0,S=j(),S===vo&&(v=!0);continue}if(v===!0||S===vo){for(w++;$()!==!0&&(S=j());){if(S===Yn){y=C.backslashes=!0,j();continue}if(S===vo){w++;continue}if(v!==!0&&S===go&&(S=j())===go){if(f=C.isBrace=!0,m=C.isGlob=!0,k=!0,i===!0)continue;break}if(v!==!0&&S===Nh){if(f=C.isBrace=!0,m=C.isGlob=!0,k=!0,i===!0)continue;break}if(S===Mh&&(w--,w===0)){v=!1,f=C.isBrace=!0,k=!0;break}}if(i===!0)continue;break}if(S===Ha){if(o.push(u),s.push(C),C={value:"",depth:0,isGlob:!1},k===!0)continue;if(T===go&&u===p+1){p+=2;continue}l=u+1;continue}if(n.noext!==!0&&(S===Dh||S===Oh||S===mo||S===za||S===yo)===!0&&E()===wo){if(m=C.isGlob=!0,h=C.isExtglob=!0,k=!0,S===yo&&u===p&&(A=!0),i===!0){for(;$()!==!0&&(S=j());){if(S===Yn){y=C.backslashes=!0,S=j();continue}if(S===Ba){m=C.isGlob=!0,k=!0;break}}continue}break}if(S===mo){if(T===mo&&(g=C.isGlobstar=!0),m=C.isGlob=!0,k=!0,i===!0)continue;break}if(S===za){if(m=C.isGlob=!0,k=!0,i===!0)continue;break}if(S===Lh){for(;$()!==!0&&(N=j());){if(N===Yn){y=C.backslashes=!0,j();continue}if(N===Fh){d=C.isBracket=!0,m=C.isGlob=!0,k=!0;break}}if(i===!0)continue;break}if(n.nonegate!==!0&&S===yo&&u===p){R=C.negated=!0,p++;continue}if(n.noparen!==!0&&S===wo){if(m=C.isGlob=!0,i===!0){for(;$()!==!0&&(S=j());){if(S===wo){y=C.backslashes=!0,S=j();continue}if(S===Ba){k=!0;break}}continue}break}if(m===!0){if(k=!0,i===!0)continue;break}}n.noext===!0&&(h=!1,m=!1);let _=c,x="",b="";p>0&&(x=c.slice(0,p),c=c.slice(p),l-=p),_&&m===!0&&l>0?(_=c.slice(0,l),b=c.slice(l)):m===!0?(_="",b=c):_=c,_&&_!==""&&_!=="/"&&_!==c&&Ua(_.charCodeAt(_.length-1))&&(_=_.slice(0,-1)),n.unescape===!0&&(b&&(b=Fa.removeBackslashes(b)),_&&y===!0&&(_=Fa.removeBackslashes(_)));let O={prefix:x,input:e,start:p,base:_,glob:b,isBrace:f,isBracket:d,isGlob:m,isExtglob:h,isGlobstar:g,negated:R,negatedExtglob:A};if(n.tokens===!0&&(O.maxDepth=0,Ua(S)||s.push(C),O.tokens=s),n.parts===!0||n.tokens===!0){let N;for(let P=0;P<o.length;P++){let z=N?N+1:p,B=o[P],H=e.slice(z,B);n.tokens&&(P===0&&p!==0?(s[P].isPrefix=!0,s[P].value=x):s[P].value=H,Ga(s[P]),O.maxDepth+=s[P].depth),(P!==0||H!=="")&&a.push(H),N=B}if(N&&N+1<e.length){let P=e.slice(N+1);a.push(P),n.tokens&&(s[s.length-1].value=P,Ga(s[s.length-1]),O.maxDepth+=s[s.length-1].depth)}O.slashes=o,O.parts=a}return O};Wa.exports=zh});var Za=zt(($k,Ka)=>{"use strict";var Qr=Jn(),$t=Xn(),{MAX_LENGTH:ei,POSIX_REGEX_SOURCE:Bh,REGEX_NON_SPECIAL_CHARS:Uh,REGEX_SPECIAL_CHARS_BACKREF:Gh,REPLACEMENTS:qa}=Qr,Hh=(e,t)=>{if(typeof t.expandRange=="function")return t.expandRange(...e,t);e.sort();let n=`[${e.join("-")}]`;try{new RegExp(n)}catch{return e.map(i=>$t.escapeRegex(i)).join("..")}return n},Tn=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,ko=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a string");e=qa[e]||e;let n={...t},r=typeof n.maxLength=="number"?Math.min(ei,n.maxLength):ei,i=e.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);let o={type:"bos",value:"",output:n.prepend||""},s=[o],a=n.capture?"":"?:",c=Qr.globChars(n.windows),u=Qr.extglobChars(c),{DOT_LITERAL:p,PLUS_LITERAL:l,SLASH_LITERAL:f,ONE_CHAR:d,DOTS_SLASH:m,NO_DOT:h,NO_DOT_SLASH:g,NO_DOTS_SLASH:v,QMARK:y,QMARK_NO_DOT:R,STAR:A,START_ANCHOR:k}=c,w=M=>`(${a}(?:(?!${k}${M.dot?m:p}).)*?)`,T=n.dot?"":h,S=n.dot?y:R,C=n.bash===!0?w(n):A;n.capture&&(C=`(${C})`),typeof n.noext=="boolean"&&(n.noextglob=n.noext);let $={input:e,index:-1,start:0,dot:n.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:s};e=$t.removePrefix(e,$),i=e.length;let E=[],j=[],_=[],x=o,b,O=()=>$.index===i-1,N=$.peek=(M=1)=>e[$.index+M],P=$.advance=()=>e[++$.index]||"",z=()=>e.slice($.index+1),B=(M="",Y=0)=>{$.consumed+=M,$.index+=Y},H=M=>{$.output+=M.output!=null?M.output:M.value,B(M.value)},W=()=>{let M=1;for(;N()==="!"&&(N(2)!=="("||N(3)==="?");)P(),$.start++,M++;return M%2===0?!1:($.negated=!0,$.start++,!0)},G=M=>{$[M]++,_.push(M)},V=M=>{$[M]--,_.pop()},F=M=>{if(x.type==="globstar"){let Y=$.braces>0&&(M.type==="comma"||M.type==="brace"),D=M.extglob===!0||E.length&&(M.type==="pipe"||M.type==="paren");M.type!=="slash"&&M.type!=="paren"&&!Y&&!D&&($.output=$.output.slice(0,-x.output.length),x.type="star",x.value="*",x.output=C,$.output+=x.output)}if(E.length&&M.type!=="paren"&&(E[E.length-1].inner+=M.value),(M.value||M.output)&&H(M),x&&x.type==="text"&&M.type==="text"){x.output=(x.output||x.value)+M.value,x.value+=M.value;return}M.prev=x,s.push(M),x=M},pe=(M,Y)=>{let D={...u[Y],conditions:1,inner:""};D.prev=x,D.parens=$.parens,D.output=$.output;let q=(n.capture?"(":"")+D.open;G("parens"),F({type:M,value:Y,output:$.output?"":d}),F({type:"paren",extglob:!0,value:P(),output:q}),E.push(D)},ee=M=>{let Y=M.close+(n.capture?")":""),D;if(M.type==="negate"){let q=C;if(M.inner&&M.inner.length>1&&M.inner.includes("/")&&(q=w(n)),(q!==C||O()||/^\)+$/.test(z()))&&(Y=M.close=`)$))${q}`),M.inner.includes("*")&&(D=z())&&/^\.[^\\/.]+$/.test(D)){let Q=ko(D,{...t,fastpaths:!1}).output;Y=M.close=`)${Q})${q})`}M.prev.type==="bos"&&($.negatedExtglob=!0)}F({type:"paren",extglob:!0,value:b,output:Y}),V("parens")};if(n.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(e)){let M=!1,Y=e.replace(Gh,(D,q,Q,ne,ie,zi)=>ne==="\\"?(M=!0,D):ne==="?"?q?q+ne+(ie?y.repeat(ie.length):""):zi===0?S+(ie?y.repeat(ie.length):""):y.repeat(Q.length):ne==="."?p.repeat(Q.length):ne==="*"?q?q+ne+(ie?C:""):C:q?D:`\\${D}`);return M===!0&&(n.unescape===!0?Y=Y.replace(/\\/g,""):Y=Y.replace(/\\+/g,D=>D.length%2===0?"\\\\":D?"\\":"")),Y===e&&n.contains===!0?($.output=e,$):($.output=$t.wrapOutput(Y,$,t),$)}for(;!O();){if(b=P(),b==="\0")continue;if(b==="\\"){let D=N();if(D==="/"&&n.bash!==!0||D==="."||D===";")continue;if(!D){b+="\\",F({type:"text",value:b});continue}let q=/^\\+/.exec(z()),Q=0;if(q&&q[0].length>2&&(Q=q[0].length,$.index+=Q,Q%2!==0&&(b+="\\")),n.unescape===!0?b=P():b+=P(),$.brackets===0){F({type:"text",value:b});continue}}if($.brackets>0&&(b!=="]"||x.value==="["||x.value==="[^")){if(n.posix!==!1&&b===":"){let D=x.value.slice(1);if(D.includes("[")&&(x.posix=!0,D.includes(":"))){let q=x.value.lastIndexOf("["),Q=x.value.slice(0,q),ne=x.value.slice(q+2),ie=Bh[ne];if(ie){x.value=Q+ie,$.backtrack=!0,P(),!o.output&&s.indexOf(x)===1&&(o.output=d);continue}}}(b==="["&&N()!==":"||b==="-"&&N()==="]")&&(b=`\\${b}`),b==="]"&&(x.value==="["||x.value==="[^")&&(b=`\\${b}`),n.posix===!0&&b==="!"&&x.value==="["&&(b="^"),x.value+=b,H({value:b});continue}if($.quotes===1&&b!=='"'){b=$t.escapeRegex(b),x.value+=b,H({value:b});continue}if(b==='"'){$.quotes=$.quotes===1?0:1,n.keepQuotes===!0&&F({type:"text",value:b});continue}if(b==="("){G("parens"),F({type:"paren",value:b});continue}if(b===")"){if($.parens===0&&n.strictBrackets===!0)throw new SyntaxError(Tn("opening","("));let D=E[E.length-1];if(D&&$.parens===D.parens+1){ee(E.pop());continue}F({type:"paren",value:b,output:$.parens?")":"\\)"}),V("parens");continue}if(b==="["){if(n.nobracket===!0||!z().includes("]")){if(n.nobracket!==!0&&n.strictBrackets===!0)throw new SyntaxError(Tn("closing","]"));b=`\\${b}`}else G("brackets");F({type:"bracket",value:b});continue}if(b==="]"){if(n.nobracket===!0||x&&x.type==="bracket"&&x.value.length===1){F({type:"text",value:b,output:`\\${b}`});continue}if($.brackets===0){if(n.strictBrackets===!0)throw new SyntaxError(Tn("opening","["));F({type:"text",value:b,output:`\\${b}`});continue}V("brackets");let D=x.value.slice(1);if(x.posix!==!0&&D[0]==="^"&&!D.includes("/")&&(b=`/${b}`),x.value+=b,H({value:b}),n.literalBrackets===!1||$t.hasRegexChars(D))continue;let q=$t.escapeRegex(x.value);if($.output=$.output.slice(0,-x.value.length),n.literalBrackets===!0){$.output+=q,x.value=q;continue}x.value=`(${a}${q}|${x.value})`,$.output+=x.value;continue}if(b==="{"&&n.nobrace!==!0){G("braces");let D={type:"brace",value:b,output:"(",outputIndex:$.output.length,tokensIndex:$.tokens.length};j.push(D),F(D);continue}if(b==="}"){let D=j[j.length-1];if(n.nobrace===!0||!D){F({type:"text",value:b,output:b});continue}let q=")";if(D.dots===!0){let Q=s.slice(),ne=[];for(let ie=Q.length-1;ie>=0&&(s.pop(),Q[ie].type!=="brace");ie--)Q[ie].type!=="dots"&&ne.unshift(Q[ie].value);q=Hh(ne,n),$.backtrack=!0}if(D.comma!==!0&&D.dots!==!0){let Q=$.output.slice(0,D.outputIndex),ne=$.tokens.slice(D.tokensIndex);D.value=D.output="\\{",b=q="\\}",$.output=Q;for(let ie of ne)$.output+=ie.output||ie.value}F({type:"brace",value:b,output:q}),V("braces"),j.pop();continue}if(b==="|"){E.length>0&&E[E.length-1].conditions++,F({type:"text",value:b});continue}if(b===","){let D=b,q=j[j.length-1];q&&_[_.length-1]==="braces"&&(q.comma=!0,D="|"),F({type:"comma",value:b,output:D});continue}if(b==="/"){if(x.type==="dot"&&$.index===$.start+1){$.start=$.index+1,$.consumed="",$.output="",s.pop(),x=o;continue}F({type:"slash",value:b,output:f});continue}if(b==="."){if($.braces>0&&x.type==="dot"){x.value==="."&&(x.output=p);let D=j[j.length-1];x.type="dots",x.output+=b,x.value+=b,D.dots=!0;continue}if($.braces+$.parens===0&&x.type!=="bos"&&x.type!=="slash"){F({type:"text",value:b,output:p});continue}F({type:"dot",value:b,output:p});continue}if(b==="?"){if(!(x&&x.value==="(")&&n.noextglob!==!0&&N()==="("&&N(2)!=="?"){pe("qmark",b);continue}if(x&&x.type==="paren"){let q=N(),Q=b;(x.value==="("&&!/[!=<:]/.test(q)||q==="<"&&!/<([!=]|\w+>)/.test(z()))&&(Q=`\\${b}`),F({type:"text",value:b,output:Q});continue}if(n.dot!==!0&&(x.type==="slash"||x.type==="bos")){F({type:"qmark",value:b,output:R});continue}F({type:"qmark",value:b,output:y});continue}if(b==="!"){if(n.noextglob!==!0&&N()==="("&&(N(2)!=="?"||!/[!=<:]/.test(N(3)))){pe("negate",b);continue}if(n.nonegate!==!0&&$.index===0){W();continue}}if(b==="+"){if(n.noextglob!==!0&&N()==="("&&N(2)!=="?"){pe("plus",b);continue}if(x&&x.value==="("||n.regex===!1){F({type:"plus",value:b,output:l});continue}if(x&&(x.type==="bracket"||x.type==="paren"||x.type==="brace")||$.parens>0){F({type:"plus",value:b});continue}F({type:"plus",value:l});continue}if(b==="@"){if(n.noextglob!==!0&&N()==="("&&N(2)!=="?"){F({type:"at",extglob:!0,value:b,output:""});continue}F({type:"text",value:b});continue}if(b!=="*"){(b==="$"||b==="^")&&(b=`\\${b}`);let D=Uh.exec(z());D&&(b+=D[0],$.index+=D[0].length),F({type:"text",value:b});continue}if(x&&(x.type==="globstar"||x.star===!0)){x.type="star",x.star=!0,x.value+=b,x.output=C,$.backtrack=!0,$.globstar=!0,B(b);continue}let M=z();if(n.noextglob!==!0&&/^\([^?]/.test(M)){pe("star",b);continue}if(x.type==="star"){if(n.noglobstar===!0){B(b);continue}let D=x.prev,q=D.prev,Q=D.type==="slash"||D.type==="bos",ne=q&&(q.type==="star"||q.type==="globstar");if(n.bash===!0&&(!Q||M[0]&&M[0]!=="/")){F({type:"star",value:b,output:""});continue}let ie=$.braces>0&&(D.type==="comma"||D.type==="brace"),zi=E.length&&(D.type==="pipe"||D.type==="paren");if(!Q&&D.type!=="paren"&&!ie&&!zi){F({type:"star",value:b,output:""});continue}for(;M.slice(0,3)==="/**";){let Ar=e[$.index+4];if(Ar&&Ar!=="/")break;M=M.slice(3),B("/**",3)}if(D.type==="bos"&&O()){x.type="globstar",x.value+=b,x.output=w(n),$.output=x.output,$.globstar=!0,B(b);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&!ne&&O()){$.output=$.output.slice(0,-(D.output+x.output).length),D.output=`(?:${D.output}`,x.type="globstar",x.output=w(n)+(n.strictSlashes?")":"|$)"),x.value+=b,$.globstar=!0,$.output+=D.output+x.output,B(b);continue}if(D.type==="slash"&&D.prev.type!=="bos"&&M[0]==="/"){let Ar=M[1]!==void 0?"|$":"";$.output=$.output.slice(0,-(D.output+x.output).length),D.output=`(?:${D.output}`,x.type="globstar",x.output=`${w(n)}${f}|${f}${Ar})`,x.value+=b,$.output+=D.output+x.output,$.globstar=!0,B(b+P()),F({type:"slash",value:"/",output:""});continue}if(D.type==="bos"&&M[0]==="/"){x.type="globstar",x.value+=b,x.output=`(?:^|${f}|${w(n)}${f})`,$.output=x.output,$.globstar=!0,B(b+P()),F({type:"slash",value:"/",output:""});continue}$.output=$.output.slice(0,-x.output.length),x.type="globstar",x.output=w(n),x.value+=b,$.output+=x.output,$.globstar=!0,B(b);continue}let Y={type:"star",value:b,output:C};if(n.bash===!0){Y.output=".*?",(x.type==="bos"||x.type==="slash")&&(Y.output=T+Y.output),F(Y);continue}if(x&&(x.type==="bracket"||x.type==="paren")&&n.regex===!0){Y.output=b,F(Y);continue}($.index===$.start||x.type==="slash"||x.type==="dot")&&(x.type==="dot"?($.output+=g,x.output+=g):n.dot===!0?($.output+=v,x.output+=v):($.output+=T,x.output+=T),N()!=="*"&&($.output+=d,x.output+=d)),F(Y)}for(;$.brackets>0;){if(n.strictBrackets===!0)throw new SyntaxError(Tn("closing","]"));$.output=$t.escapeLast($.output,"["),V("brackets")}for(;$.parens>0;){if(n.strictBrackets===!0)throw new SyntaxError(Tn("closing",")"));$.output=$t.escapeLast($.output,"("),V("parens")}for(;$.braces>0;){if(n.strictBrackets===!0)throw new SyntaxError(Tn("closing","}"));$.output=$t.escapeLast($.output,"{"),V("braces")}if(n.strictSlashes!==!0&&(x.type==="star"||x.type==="bracket")&&F({type:"maybe_slash",value:"",output:`${f}?`}),$.backtrack===!0){$.output="";for(let M of $.tokens)$.output+=M.output!=null?M.output:M.value,M.suffix&&($.output+=M.suffix)}return $};ko.fastpaths=(e,t)=>{let n={...t},r=typeof n.maxLength=="number"?Math.min(ei,n.maxLength):ei,i=e.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);e=qa[e]||e;let{DOT_LITERAL:o,SLASH_LITERAL:s,ONE_CHAR:a,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:p,NO_DOTS_SLASH:l,STAR:f,START_ANCHOR:d}=Qr.globChars(n.windows),m=n.dot?p:u,h=n.dot?l:u,g=n.capture?"":"?:",v={negated:!1,prefix:""},y=n.bash===!0?".*?":f;n.capture&&(y=`(${y})`);let R=T=>T.noglobstar===!0?y:`(${g}(?:(?!${d}${T.dot?c:o}).)*?)`,A=T=>{switch(T){case"*":return`${m}${a}${y}`;case".*":return`${o}${a}${y}`;case"*.*":return`${m}${y}${o}${a}${y}`;case"*/*":return`${m}${y}${s}${a}${h}${y}`;case"**":return m+R(n);case"**/*":return`(?:${m}${R(n)}${s})?${h}${a}${y}`;case"**/*.*":return`(?:${m}${R(n)}${s})?${h}${y}${o}${a}${y}`;case"**/.*":return`(?:${m}${R(n)}${s})?${o}${a}${y}`;default:{let S=/^(.*?)\.(\w+)$/.exec(T);if(!S)return;let C=A(S[1]);return C?C+o+S[2]:void 0}}},k=$t.removePrefix(e,v),w=A(k);return w&&n.strictSlashes!==!0&&(w+=`${s}?`),w};Ka.exports=ko});var Ya=zt((xk,Xa)=>{"use strict";var Wh=Va(),$o=Za(),Ja=Xn(),Vh=Jn(),qh=e=>e&&typeof e=="object"&&!Array.isArray(e),ge=(e,t,n=!1)=>{if(Array.isArray(e)){let p=e.map(f=>ge(f,t,n));return f=>{for(let d of p){let m=d(f);if(m)return m}return!1}}let r=qh(e)&&e.tokens&&e.input;if(e===""||typeof e!="string"&&!r)throw new TypeError("Expected pattern to be a non-empty string");let i=t||{},o=i.windows,s=r?ge.compileRe(e,t):ge.makeRe(e,t,!1,!0),a=s.state;delete s.state;let c=()=>!1;if(i.ignore){let p={...t,ignore:null,onMatch:null,onResult:null};c=ge(i.ignore,p,n)}let u=(p,l=!1)=>{let{isMatch:f,match:d,output:m}=ge.test(p,s,t,{glob:e,posix:o}),h={glob:e,state:a,regex:s,posix:o,input:p,output:m,match:d,isMatch:f};return typeof i.onResult=="function"&&i.onResult(h),f===!1?(h.isMatch=!1,l?h:!1):c(p)?(typeof i.onIgnore=="function"&&i.onIgnore(h),h.isMatch=!1,l?h:!1):(typeof i.onMatch=="function"&&i.onMatch(h),l?h:!0)};return n&&(u.state=a),u};ge.test=(e,t,n,{glob:r,posix:i}={})=>{if(typeof e!="string")throw new TypeError("Expected input to be a string");if(e==="")return{isMatch:!1,output:""};let o=n||{},s=o.format||(i?Ja.toPosixSlashes:null),a=e===r,c=a&&s?s(e):e;return a===!1&&(c=s?s(e):e,a=c===r),(a===!1||o.capture===!0)&&(o.matchBase===!0||o.basename===!0?a=ge.matchBase(e,t,n,i):a=t.exec(c)),{isMatch:!!a,match:a,output:c}};ge.matchBase=(e,t,n)=>(t instanceof RegExp?t:ge.makeRe(t,n)).test(Ja.basename(e));ge.isMatch=(e,t,n)=>ge(t,n)(e);ge.parse=(e,t)=>Array.isArray(e)?e.map(n=>ge.parse(n,t)):$o(e,{...t,fastpaths:!1});ge.scan=(e,t)=>Wh(e,t);ge.compileRe=(e,t,n=!1,r=!1)=>{if(n===!0)return e.output;let i=t||{},o=i.contains?"":"^",s=i.contains?"":"$",a=`${o}(?:${e.output})${s}`;e&&e.negated===!0&&(a=`^(?!${a}).*$`);let c=ge.toRegex(a,t);return r===!0&&(c.state=e),c};ge.makeRe=(e,t={},n=!1,r=!1)=>{if(!e||typeof e!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]==="."||e[0]==="*")&&(i.output=$o.fastpaths(e,t)),i.output||(i=$o(e,t)),ge.compileRe(i,t,n,r)};ge.toRegex=(e,t)=>{try{let n=t||{};return new RegExp(e,n.flags||(n.nocase?"i":""))}catch(n){if(t&&t.debug===!0)throw n;return/$^/}};ge.constants=Vh;Xa.exports=ge});var nc=zt((bk,tc)=>{"use strict";var Qa=Ya(),Kh=Xn();function ec(e,t,n=!1){return t&&(t.windows===null||t.windows===void 0)&&(t={...t,windows:Kh.isWindows()}),Qa(e,t,n)}Object.assign(ec,Qa);tc.exports=ec});import{execFileSync as Zh}from"node:child_process";import{readFileSync as rc,realpathSync as Qn,statSync as ic}from"node:fs";import{isAbsolute as oc,relative as Jh,resolve as sc,sep as xo,win32 as Xh}from"node:path";function ac(e){return e.code==="ENOENT"?"the file does not exist.":e instanceof Error?e.message:String(e)}function ve(e=process.cwd()){try{let t=Zh("git",["-C",e,"rev-parse","--show-toplevel"],{encoding:"utf8",env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","ignore"]}).trim();return t?Qn(t):void 0}catch{return}}function at(e){return e.startsWith("<root>/")||e.startsWith("<repo>/")}function Yh(e,t){let n=Jh(e,t);return n===""||!n.startsWith(`..${xo}`)&&n!==".."&&!oc(n)}function Qh(e,t,n){try{let r=Qn(e),i=Qn(t);if(!Yh(r,i))throw new be(n,"the resolved path escapes its declared root.");if(!ic(i).isFile())throw new be(n,"the marked resource is not a regular file.");return{file:i,root:r}}catch(r){throw r instanceof be?r:new be(n,ac(r),{cause:r})}}function bo(e,t){let n=e.startsWith("<root>/")?"root":e.startsWith("<repo>/")?"repo":void 0;if(!n)throw new be(e,"expected a path beginning with <root>/ or <repo>/.");if(n==="repo"&&!t)throw new be(e,"no active checkout or worktree supplies <repo>; there is no filesystem fallback.");let r=n==="root"?J():t,i=e.slice(7);if(!i||xo==="\\"&&i.includes("\\")||i.includes("\0")||oc(i)||xo==="\\"&&Xh.isAbsolute(i)||i.split("/").some(a=>!a||a==="."||a===".."))throw new be(e,"the marked path contains an absolute, empty, backslash or traversal component.");let{file:o,root:s}=Qh(r,sc(r,i),e);return{file:o,root:s,rootKind:n,markedPath:e}}function ed(e,t,n){let r=t==="root"?J():n;if(!r)throw new be(e,"no active checkout or worktree supplies the configuration root.");try{let i=Qn(r),o=Qn(sc(r,e));if(!ic(o).isFile())throw new be(e,"the configuration is not a regular file.");return{file:o,root:i,rootKind:t,markedPath:e}}catch(i){throw i instanceof be?i:new be(e,ac(i),{cause:i})}}function xt(e,t={}){return bo(e,t.repoRoot??ve(t.cwd))}function cc(e,t={}){let n=xt(e,t);return{content:rc(n.file,"utf8"),provenance:n}}function se(e={}){let t=e.repoRoot??ve(e.cwd),n=new Map,r=[];function i(o,s,a){let c=a?ed(o,a,t):bo(o,t);if(r.includes(c.file)||s!=="root"&&n.has(`root:${c.file}`))throw new be(o,`configuration-reference cycle: ${[...r,c.file].join(" -> ")}`);let u=`${s}:${c.file}`,p=n.get(u);if(p)return p;r.push(c.file);try{let f={data:s==="root"?Bt(c.file,s):Bt(c.file,s),source:{...c,kind:s}};return n.set(u,f),f}finally{r.pop()}}return{repoRoot:t,loadRootConfiguration(o=J("woof.config.json")){return i(o,"root","root")},loadProjectConfiguration(o){return i(o,"project")},loadRepositoryConfiguration(o){if(!t)throw new be(o,"no active checkout or worktree supplies <repo>.");return i(o,"repository","repo")},readResource(o){let s=bo(o,t);return{content:rc(s.file,"utf8"),provenance:s}}}}var be,Ee=U(()=>{"use strict";kt();Ie();be=class extends Error{reference;detail;constructor(t,n,r){super(`Could not load ${t}: ${n}`,r),this.name="ResourceLoadError",this.reference=t,this.detail=n}}});import{existsSync as td,realpathSync as Gt,statSync as nd}from"node:fs";import{homedir as uc}from"node:os";import{basename as lc,dirname as pc,isAbsolute as fc,normalize as rd,relative as id,resolve as er,sep as od,win32 as sd}from"node:path";function dc(e,t){let n=id(e,t);return n===""||!n.startsWith(`..${od}`)&&n!==".."&&!fc(n)}function Ht(e){try{return dc(Gt(J()),Gt(e))}catch{return!1}}function Wt(e){let t=[er(e,"woof.config.json"),er(e,".agents/woof.config.json"),er(e,".claude/woof.config.json")],n=new Map;for(let r of t)try{let i=Gt(r);if(!nd(i).isFile())throw new cn(`Repository configuration is not a file: ${I(r)}`);n.set(i,r)}catch(i){if(i.code==="ENOENT")continue;throw i}if(n.size>1)throw new cn(`Multiple distinct repository configurations exist: ${[...n.values()].map(r=>I(r)).join(", ")}. Keep only one of ${I("woof.config.json")} at the checkout root, ${I(".agents/woof.config.json")} or ${I(".claude/woof.config.json")}.`);return n.keys().next().value}function mc(e,t,n){let r=e.data.$projects??{};if(!Object.prototype.hasOwnProperty.call(r,n))throw new cn(`Project ${I(n)} is not registered. See the registered projects with ${I("woof projects")}.`);let i=r[n];if(typeof i=="string"){let o=t.loadProjectConfiguration(i);return{kind:"registered",name:n,data:o.data,source:o.source,inline:!1}}return{kind:"registered",name:n,data:i,source:e.source,inline:!0}}function bt(e,t){return Object.keys(e.data.$projects??{}).map(n=>mc(e,t,n))}function tr(e,t){let n=e==="~"?uc():e.startsWith("~/")?er(uc(),e.slice(2)):e;if(!fc(n)&&!sd.isAbsolute(n))throw new cn(`Project ${I(t)} metadata path must be absolute or begin with ${I("~/")}: ${I(e)}`);return rd(n)}function ad(e){try{return Gt(e)}catch{return e}}function cd(e){let t=[],n=e;for(;;)try{return er(Gt(n),...t)}catch{let r=pc(n);if(r===n)return e;t.unshift(lc(n)),n=r}}function ud(e,t){let n=ad(e);return dc(n,t)}function ld(e,t,n){try{let r=(0,hc.default)(e,{dot:!0}),i=t;for(;i;){if(r(i))return!0;let o=pc(i);i=o===i?void 0:o}return!1}catch(r){throw new cn(`Project ${I(n)} has an invalid worktree glob: ${I(e)}`,{cause:r})}}function An(e){let t="project"in e?e.project:void 0;if(t)return t.kind==="repository"?`${lc(e.checkoutRoot)} (repo config)`:e.selection==="explicit"?`${t.name} (chosen for this command)`:`${t.name} (its paths match this directory)`}function _e(e){return(e.data.$metadata?.$basePaths??[]).map(t=>tr(t,e.name)).find(t=>td(t))}function nr(e,t,n){if(Eo(e,Gt(t)))return n;let r=_e(e);return r?ve(r)??r:void 0}function gc(e,t){return Eo(e,Gt(t))}function Eo(e,t){let n=e.data.$metadata;if(!n)return!1;let r=(n.$basePaths??[]).map(o=>tr(o,e.name)),i=(n.$worktreePaths??[]).map(o=>cd(tr(o,e.name)));return r.some(o=>ud(o,t))||i.some(o=>ld(o,t,e.name))}function ye(e={}){let t=e.cwd??process.cwd(),n=e.loader??se({cwd:t}),r=n.loadRootConfiguration(),i=ve(t);if(e.project){let a=mc(r,n,e.project);return{root:r,project:a,candidates:[],checkoutRoot:nr(a,t,i),selection:"explicit"}}if(i&&!Ht(t)){let a=Wt(i);if(a){let c=n.loadRepositoryConfiguration(a);return{root:r,project:{kind:"repository",name:void 0,data:c.data,source:c.source,inline:!1},candidates:[],checkoutRoot:i,selection:"repository"}}}let o=Gt(t),s=bt(r,n).filter(a=>Eo(a,o));return s.length===1?{root:r,project:s[0],candidates:s,checkoutRoot:i,selection:"metadata"}:s.length>1?{root:r,candidates:s,checkoutRoot:i,selection:"ambiguous"}:{root:r,candidates:s,checkoutRoot:i,selection:"root"}}var hc,cn,Xe=U(()=>{"use strict";hc=Rr(nc(),1);Ge();Ie();Ee();cn=class extends Error{constructor(t,n){super(t,n),this.name="ProjectSelectionError"}}});var yc,vc,wc,kc=U(()=>{yc=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),vc=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,wc=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141});var pd,fd,$c,hd,xc,dd,md,gd,bc,Ec,Sc=U(()=>{kc();pd=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,fd=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,$c=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,hd=/\t{1,1000}/y,xc=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),dd=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,md=new RegExp("\\p{M}+","gu"),gd={limit:1/0,ellipsis:""},bc=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??"",o=t?.ellipsisWidth??(i?bc(i,gd,n).width:0),s=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,p=2,l=n.regularWidth??1,f=n.wideWidth??p,d=[[dd,l],[pd,s],[fd,a],[hd,c],[xc,u],[$c,f]],m=0,h=0,g=e.length,v=0,y=!1,R=g,A=Math.max(0,r-o),k=0,w=0,T=0,S=0;e:for(;;){if(w>k||h>=g&&h>m){let C=e.slice(k,w)||e.slice(m,h);v=0;for(let $ of C.replaceAll(md,"")){let E=$.codePointAt(0)||0;if(vc(E)?S=p:wc(E)?S=f:S=l,T+S>A&&(R=Math.min(R,Math.max(k,m)+v)),T+S>r){y=!0;break e}v+=$.length,T+=S}k=w=0}if(h>=g)break e;for(let C=0,$=d.length;C<$;C++){let[E,j]=d[C];if(E.lastIndex=h,E.test(e)){if(v=E===$c?yc(e.slice(h,E.lastIndex)):E===xc?1:E.lastIndex-h,S=v*j,T+S>A&&(R=Math.min(R,h+Math.floor((A-T)/j))),T+S>r){y=!0;break e}T+=S,k=m,w=h,h=m=E.lastIndex;continue e}}h+=1}return{width:y?A:T,index:y?R:g,truncated:y,ellipsed:y&&r>=o}},Ec=bc});var yd,vd,Et,So=U(()=>{Sc();yd={limit:1/0,ellipsis:"",ellipsisWidth:0},vd=(e,t={})=>Ec(e,yd,t).width,Et=vd});function Rn(e,t,n){return String(e).normalize().split(bd).map(r=>xd(r,t,n)).join(`
|
|
19
|
+
`)}var ti,jc,wd,Ao,Ic,kd,_c,Ro,Tc,Ac,Rc,Cc,To,$d,xd,bd,Co=U(()=>{So();ti="\x1B",jc="\x9B",wd=39,Ao="\x07",Ic="[",kd="]",_c="m",Ro=`${kd}8;;`,Tc=new RegExp(`(?:\\${Ic}(?<code>\\d+)m|\\${Ro}(?<uri>.*)${Ao})`,"y"),Ac=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},Rc=e=>`${ti}${Ic}${e}${_c}`,Cc=e=>`${ti}${Ro}${e}${Ao}`,To=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,o=!1,s=e.at(-1),a=s===void 0?0:Et(s),c=r.next(),u=r.next(),p=0;for(;!c.done;){let l=c.value,f=Et(l);a+f<=n?e[e.length-1]+=l:(e.push(l),a=0),(l===ti||l===jc)&&(i=!0,o=t.startsWith(Ro,p+1)),i?o?l===Ao&&(i=!1,o=!1):l===_c&&(i=!1):(a+=f,a===n&&!u.done&&(e.push(""),a=0)),c=u,u=r.next(),p+=l.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},$d=e=>{let t=e.split(" "),n=t.length;for(;n&&!Et(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(" ")+t.slice(n).join("")},xd=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",i,o,s=e.split(" "),a=[""],c=0;for(let l=0;l<s.length;l++){let f=s[l];if(n.trim!==!1){let m=a.at(-1)??"",h=m.trimStart();m.length!==h.length&&(a[a.length-1]=h,c=Et(h))}l!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(a.push(""),c=0),(c||n.trim===!1)&&(a[a.length-1]+=" ",c++));let d=Et(f);if(n.hard&&d>t){let m=t-c,h=1+Math.floor((d-m-1)/t);Math.floor((d-1)/t)<h&&a.push(""),To(a,f,t),c=Et(a.at(-1)??"");continue}if(c+d>t&&c&&d){if(n.wordWrap===!1&&c<t){To(a,f,t),c=Et(a.at(-1)??"");continue}a.push(""),c=0}if(c+d>t&&n.wordWrap===!1){To(a,f,t),c=Et(a.at(-1)??"");continue}a[a.length-1]+=f,c+=d}n.trim!==!1&&(a=a.map(l=>$d(l)));let u=a.join(`
|
|
20
|
+
`),p=!1;for(let l=0;l<u.length;l++){let f=u[l];if(r+=f,p)p=!1;else if(p=f>="\uD800"&&f<="\uDBFF",p)continue;if(f===ti||f===jc){Tc.lastIndex=l+1;let m=Tc.exec(u)?.groups;if(m?.code!==void 0){let h=Number.parseFloat(m.code);i=h===wd?void 0:h}else m?.uri!==void 0&&(o=m.uri.length===0?void 0:m.uri)}if(u[l+1]===`
|
|
21
|
+
`){o&&(r+=Cc(""));let d=i?Ac(i):void 0;i&&d&&(r+=Rc(d))}else f===`
|
|
22
|
+
`&&(i&&Ac(i)&&(r+=Rc(i)),o&&(r+=Cc(o)))}return r},bd=/\r?\n/});var Io=zt((Hk,Pc)=>{"use strict";var jo={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let n="";return e<0?n+=`\x1B[${-e}D`:e>0&&(n+=`\x1B[${e}C`),t<0?n+=`\x1B[${-t}A`:t>0&&(n+=`\x1B[${t}B`),n},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Ed={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},Sd={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let n=0;n<e;n++)t+=this.line+(n<e-1?jo.up():"");return e&&(t+=jo.left),t}};Pc.exports={cursor:jo,scroll:Ed,erase:Sd,beep:"\x07"}});import{styleText as ii}from"node:util";import{stdout as Oc,stdin as Td}from"node:process";import Ad from"node:readline";function Cn(e,t,n){if(!n.some(s=>!s.disabled))return e;let r=e+t,i=Math.max(n.length-1,0),o=r<0?i:r>i?0:r;return n[o]?.disabled?Cn(o,t<0?-1:1,n):o}function ni(e,t,n,r){let i=r.split(`
|
|
23
|
+
`),o=0,s=e;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+t;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}function jd(e){if(e!==void 0)return e;if(Ye.accessible!==void 0)return Ye.accessible;let t=process.env.ACCESSIBLE;return t!==void 0&&t!==""&&t!=="0"&&t!=="false"}function Nc(e,t){if(typeof e=="string")return Ye.aliases.get(e)===t;for(let n of e)if(n!==void 0&&Nc(n,t))return!0;return!1}function Id(e,t){if(e===t)return;let n=e.split(`
|
|
25
24
|
`),r=t.split(`
|
|
26
|
-
`),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}function
|
|
27
|
-
`).map((a,c,u)=>{let
|
|
28
|
-
`)}function
|
|
29
|
-
`),
|
|
30
|
-
`).length-1;this.output.write(
|
|
31
|
-
`);this.output.write(a[s]),this._prevFrame=t,this.output.write(
|
|
25
|
+
`),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}function un(e){return e===oi}function ri(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function Vt(e,t,n,r=n,i=n,o){let s=_o(e??Oc);return Rn(t,s-n.length,{hard:!0,trim:!1}).split(`
|
|
26
|
+
`).map((a,c,u)=>{let p=o?o(a,c):a;return c===0?`${r}${p}`:c===u.length-1?`${i}${p}`:`${n}${p}`}).join(`
|
|
27
|
+
`)}function Lc(e,t){if("~standard"in e){let n=e["~standard"].validate(t);return n instanceof Promise?n.then(r=>r.issues?.at(0)?.message):n.issues?.at(0)?.message}return e(t)}function _d(e,t){if(e===void 0||t.length===0)return 0;let n=t.findIndex(r=>r.value===e);return n!==-1?n:0}function Pd(e,t){return(t.label??String(t.value)).toLowerCase().includes(e.toLowerCase())}function Od(e,t){if(t)return e?t:t[0]}var ct,Rd,Cd,Ye,Zk,oi,_o,Po,jn,Dc,Nd,si,Mc,ai,Oo=U(()=>{Co();ct=Rr(Io(),1);Rd=["up","down","left","right","space","enter","cancel"],Cd=["January","February","March","April","May","June","July","August","September","October","November","December"],Ye={actions:new Set(Rd),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,accessible:void 0,date:{monthNames:[...Cd],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};Zk=globalThis.process.platform.startsWith("win"),oi=Symbol("clack:cancel");_o=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Po=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;jn=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";get accessible(){return jd(this.opts.accessible)}constructor(t,n=!0){let{input:r=Td,output:i=Oc,render:o,signal:s,...a}=t;this.opts=a,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=o.bind(this),this._track=n,this._abortSignal=s,this.input=r,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(t,n){let r=this._subscribers.get(t)??[];r.push(n),this._subscribers.set(t,r)}on(t,n){this.setSubscriber(t,{cb:n})}once(t,n){this.setSubscriber(t,{cb:n,once:!0})}emit(t,...n){let r=this._subscribers.get(t)??[],i=[];for(let o of r)o.cb(...n),o.once&&i.push(()=>r.splice(r.indexOf(o),1));for(let o of i)o()}prompt(){return new Promise(t=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(oi);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Ad.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),ri(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(ct.cursor.show),this.output.off("resize",this.render),ri(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(ct.cursor.show),this.output.off("resize",this.render),ri(this.input,!1),t(oi)})})}_isActionKey(t,n){return t===" "}_shouldSubmit(t,n){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,n){this.userInput=t??"",this.emit("userInput",this.userInput),n&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}async onKeypress(t,n){if(this.state!=="validating"){if(this._track&&n.name!=="return"&&(n.name&&this._isActionKey(t,n)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),n?.name&&(!this._track&&Ye.aliases.has(n.name)&&this.emit("cursor",Ye.aliases.get(n.name)),Ye.actions.has(n.name)&&this.emit("cursor",n.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,n),n?.name==="return"&&this._shouldSubmit(t,n)){if(this.opts.validate){let r=Lc(this.opts.validate,this.value),i;r instanceof Promise?(this.state="validating",this.render(),i=await r):i=r,i&&(this.error=i instanceof Error?i.message:i,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Nc([t,n?.name,n?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
28
|
+
`),ri(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Rn(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
29
|
+
`).length-1;this.output.write(ct.cursor.move(-999,t*-1))}render(){let t=Rn(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(ct.cursor.hide);else{let n=Id(this._prevFrame,t),r=Po(this.output);if(this.restoreCursor(),n){let i=Math.max(0,n.numLinesAfter-r),o=Math.max(0,n.numLinesBefore-r),s=n.lines.find(a=>a>=i);if(s===void 0){this._prevFrame=t;return}if(n.lines.length===1){this.output.write(ct.cursor.move(0,s-o)),this.output.write(ct.erase.lines(1));let a=t.split(`
|
|
30
|
+
`);this.output.write(a[s]),this._prevFrame=t,this.output.write(ct.cursor.move(0,a.length-s-1));return}else if(n.lines.length>1){if(i<o)s=i;else{let c=s-o;c>0&&this.output.write(ct.cursor.move(0,c))}this.output.write(ct.erase.down());let a=t.split(`
|
|
32
31
|
`).slice(s);this.output.write(a.join(`
|
|
33
|
-
`)),this._prevFrame=t;return}}this.output.write(
|
|
32
|
+
`)),this._prevFrame=t;return}}this.output.write(ct.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}};Dc=class extends jn{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#t="";#n;#r;#i;#o;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return ii(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;let t=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${t}${ii("inverse",n)}${r}`}get options(){return typeof this.#r=="function"?this.#r():this.#r}constructor(t){super(t),this.#r=t.options,this.#i=t.placeholder,this.#o=t.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=t.multiple===!0,this.#n=typeof t.options=="function"?t.filter:t.filter??Pd;let r;if(t.initialValue&&Array.isArray(t.initialValue)?this.multiple?r=t.initialValue:r=t.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let o=n.findIndex(s=>s.value===i);o!==-1&&(this.toggleSelected(i),this.#e=o)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,o)=>this.#s(i,o)),this.on("userInput",i=>this.#a(i))}_isActionKey(t,n){return t===" "||this.multiple&&this.isNavigating&&n.name==="space"&&t!==void 0&&t!==""}#s(t,n){let r=n.name==="up",i=n.name==="down",o=n.name==="return",s=this.userInput===""||this.userInput===" ",a=this.#i,c=this.options,u=a!==void 0&&a!==""&&c.some(p=>!p.disabled&&(this.#n?this.#n(a,p):!0));if(n.name==="tab"&&s&&u){this.userInput===" "&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#o&&!this.multiple&&this.focusedValue!==void 0){let p=String(this.focusedValue);this._clearUserInput(),this._setUserInput(p,!0),this.isNavigating=!1;return}r||i?(this.#e=Cn(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):o?this.value=Od(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(t){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(t)?this.selectedValues=this.selectedValues.filter(n=>n!==t):this.selectedValues=[...this.selectedValues,t]:this.selectedValues=[t])}#a(t){if(t!==this.#t){this.#t=t;let n=this.options;t&&this.#n?this.filteredOptions=n.filter(o=>this.#n?.(t,o)):this.filteredOptions=[...n];let r=_d(this.focusedValue,this.filteredOptions);this.#e=Cn(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}},Nd=new Set(["up","down","left","right"]),si=class extends jn{#e=!1;#t;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}\u2588`;let n=t.slice(0,this.cursor),r=t.slice(this.cursor,this.cursor+1),i=t.slice(this.cursor+1);return r===`
|
|
34
33
|
`?`${n}\u2588
|
|
35
|
-
${i}`:`${n}${
|
|
34
|
+
${i}`:`${n}${ii("inverse",r)}${i}`}get cursor(){return this._cursor}#n(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#r(t){let n=this.value??"";switch(t){case"up":this._cursor=ni(this._cursor,0,-1,n);return;case"down":this._cursor=ni(this._cursor,0,1,n);return;case"left":this._cursor=ni(this._cursor,-1,0,n);return;case"right":this._cursor=ni(this._cursor,1,0,n);return}}_shouldSubmit(t,n){if(this.#t)return this.focused==="submit"?!0:(this.#n(`
|
|
36
35
|
`),this._cursor++,!1);let r=this.#e;return this.#e=!0,r&&this.cursor===this.userInput.length?(this.userInput[this.cursor-1]===`
|
|
37
36
|
`&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#n(`
|
|
38
|
-
`),this._cursor++,!1)}constructor(t){let n=t.initialUserInput??t.initialValue;super({...t,initialUserInput:n},!1),n!==void 0&&(this._cursor=n.length),this.#t=t.showSubmit??!1,this.on("key",(r,i)=>{if(i?.name&&
|
|
39
|
-
`);
|
|
37
|
+
`),this._cursor++,!1)}constructor(t){let n=t.initialUserInput??t.initialValue;super({...t,initialUserInput:n},!1),n!==void 0&&(this._cursor=n.length),this.#t=t.showSubmit??!1,this.on("key",(r,i)=>{if(i?.name&&Nd.has(i.name)){this.#e=!1,this.#r(i.name);return}if(r===" "&&this.#t){this.focused=this.focused==="editor"?"submit":"editor";return}if(i?.name!=="return"){if(this.#e=!1,i?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(i?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}r&&(this.#t&&this.focused==="submit"&&(this.focused="editor"),this.#n(r??""),this._cursor++)}}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}},Mc=class extends jn{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let t=this._selectedValue;this.value=t===void 0?void 0:t.value}constructor(t){super(t,!1),this.options=t.options;let n=this.options.findIndex(({value:i})=>i===t.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?Cn(r,1,this.options):r,this.changeValue(),this.on("cursor",i=>{switch(i){case"left":case"up":this.cursor=Cn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Cn(this.cursor,1,this.options);break}this.changeValue()})}},ai=class extends jn{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let n=t.slice(0,this.cursor),r=t.slice(this.cursor,this.cursor+1),i=t.slice(this.cursor+1);return`${n}${ii("inverse",r)}${i}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",n=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}});import{styleText as L,stripVTControlCharacters as u0}from"node:util";import ht from"node:process";function Ld(){return ht.platform!=="win32"?ht.env.TERM!=="linux":!!ht.env.CI||!!ht.env.WT_SESSION||!!ht.env.TERMINUS_SUBLIME||ht.env.ConEmuTask==="{cmd::Cmder}"||ht.env.TERM_PROGRAM==="Terminus-Sublime"||ht.env.TERM_PROGRAM==="vscode"||ht.env.TERM==="xterm-256color"||ht.env.TERM==="alacritty"||ht.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}function Wd(e,t){let n=[`${t?`${L("cyan",re)} `:""}${e.join(" \u2022 ")}`];return t&&n.push(L("cyan",qt)),n}function Bc(e){return e.label??String(e.value??"")}function Vd(e,t){if(!e)return!0;let n=(t.label??String(t.value??"")).toLowerCase(),r=(t.hint??"").toLowerCase(),i=String(t.value).toLowerCase(),o=e.toLowerCase();return n.includes(o)||r.includes(o)||i.includes(o)}function qd(e,t){let n=[];for(let r of t)e.includes(r.value)&&n.push(r);return n}var Uc,Dd,oe,Fc,Md,Fd,li,h0,re,qt,d0,m0,Gc,ui,g0,y0,v0,w0,k0,$0,x0,b0,E0,S0,zd,Bd,Ud,Gd,rr,Hd,zc,Hc,Wc,T0,le,Vc,A0,Kd,ci,qc,R0,Kc,Zc=U(()=>{Oo();Oo();Co();So();Uc=Rr(Io(),1);Dd=Ld(),oe=(e,t)=>Dd?e:t,Fc=oe("\u25C6","*"),Md=oe("\u25A0","x"),Fd=oe("\u25B2","x"),li=oe("\u25C7","o"),h0=oe("\u250C","T"),re=oe("\u2502","|"),qt=oe("\u2514","\u2014"),d0=oe("\u2510","T"),m0=oe("\u2518","\u2014"),Gc=oe("\u25CF",">"),ui=oe("\u25CB"," "),g0=oe("\u25FB","[\u2022]"),y0=oe("\u25FC","[+]"),v0=oe("\u25FB","[ ]"),w0=oe("\u25AA","\u2022"),k0=oe("\u2500","-"),$0=oe("\u256E","+"),x0=oe("\u251C","+"),b0=oe("\u256F","+"),E0=oe("\u2570","+"),S0=oe("\u256D","+"),zd=oe("\u25CF","\u2022"),Bd=oe("\u25C6","*"),Ud=oe("\u25B2","!"),Gd=oe("\u25A0","x"),rr=e=>{switch(e){case"initial":case"active":return L("cyan",Fc);case"cancel":return L("red",Md);case"error":return L("yellow",Fd);case"submit":return L("green",li);case"validating":return L("dim",Fc)}},Hd=e=>{switch(e){case"initial":case"active":return L("cyan",re);case"cancel":return L("red",re);case"error":return L("yellow",re);case"submit":return L("green",re)}};zc=(e,t,n,r,i,o=!1)=>{let s=t,a=0;if(o)for(let c=r-1;c>=n;c--){let u=e[c];if(u&&(s-=u.length),a++,s<=i)break}else for(let c=n;c<r;c++){let u=e[c];if(u&&(s-=u.length),a++,s<=i)break}return{lineCount:s,removals:a}},Hc=({cursor:e,options:t,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:o=0,rowPadding:s=4})=>{let a=_o(r)-o,c=Po(r),u=L("dim","..."),p=Math.max(c-s,0),l=Math.max(Math.min(i,p),5),f=0;e>=l-3&&(f=Math.max(Math.min(e-l+3,t.length-l),0));let d=l<t.length&&f>0,m=l<t.length&&f+l<t.length,h=Math.min(f+l,t.length),g=[],v=0;d&&v++,m&&v++;let y=f+(d?1:0),R=h-(m?1:0);for(let k=y;k<R;k++){let w=t[k],T=w?n(w,k===e):"",S=Rn(T,a,{hard:!0,trim:!1}).split(`
|
|
38
|
+
`);g.push(S),v+=S.length}if(v>p){let k=0,w=0,T=v,S=e-y,C=p,$=()=>zc(g,T,0,S,C),E=()=>zc(g,T,S+1,g.length,C,!0);d?({lineCount:T,removals:k}=$(),T>C&&(m||(C-=1),{lineCount:T,removals:w}=E())):(m||(C-=1),{lineCount:T,removals:w}=E(),T>C&&(C-=1,{lineCount:T,removals:k}=$())),k>0&&(d=!0,g.splice(0,k)),w>0&&(m=!0,g.splice(g.length-w,w))}let A=[];d&&A.push(u);for(let k of g)for(let w of k)A.push(w);return m&&A.push(u),A};Wc=e=>new Dc({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,completeOnTab:e.completeOnTab,filter:e.filter??((t,n)=>Vd(t,n)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){let t=e.withGuide??Ye.withGuide,n=t?[`${L("gray",re)}`,`${rr(this.state)} ${e.message}`]:[`${rr(this.state)} ${e.message}`],r=this.userInput,i=this.options,o=e.placeholder,s=r===""&&o!==void 0,a=(c,u)=>{let p=Bc(c),l=c.hint&&c.value===this.focusedValue?L("dim",` (${c.hint})`):"";switch(u){case"active":return`${L("green",Gc)} ${p}${l}`;case"inactive":return`${L("dim",ui)} ${L("dim",p)}`;case"disabled":return`${L("gray",ui)} ${L(["strikethrough","gray"],p)}`}};switch(this.state){case"submit":{let c=qd(this.selectedValues,i),u=c.length>0?` ${L("dim",c.map(Bc).join(", "))}`:"",p=t?L("gray",re):"";return`${n.join(`
|
|
40
39
|
`)}
|
|
41
|
-
${
|
|
40
|
+
${p}${u}`}case"cancel":{let c=r?` ${L(["strikethrough","dim"],r)}`:"",u=t?L("gray",re):"";return`${n.join(`
|
|
42
41
|
`)}
|
|
43
|
-
${u}${c}`}default:{let c=this.state==="error"?"yellow":"cyan",u=t?`${L(c,
|
|
44
|
-
`)}}}}).prompt(),
|
|
45
|
-
`);if(
|
|
42
|
+
${u}${c}`}default:{let c=this.state==="error"?"yellow":"cyan",u=t?`${L(c,re)} `:"",p=t?L(c,qt):"",l="";if(this.isNavigating||s){let y=s?o:r;l=y!==""?` ${L("dim",y)}`:""}else l=` ${this.userInputWithCursor}`;let f=this.filteredOptions.length!==i.length?L("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",d=this.filteredOptions.length===0&&r?[`${u}${L("yellow","No matches found")}`]:[],m=this.state==="error"?[`${u}${L("yellow",this.error)}`]:[];t&&n.push(`${u.trimEnd()}`),n.push(`${u}${L("dim","Search:")}${l}${f}`,...d,...m);let h=[`${L("dim","\u2191/\u2193")} to select`,...e.completeOnTab?[`${L("dim","Tab:")} complete`]:[],`${L("dim","Enter:")} confirm`,`${L("dim","Type:")} to search`],g=[`${u}${h.join(" \u2022 ")}`,p],v=this.filteredOptions.length===0?[]:Hc({cursor:this.cursor,options:this.filteredOptions,columnPadding:t?3:0,rowPadding:n.length+g.length,style:(y,R)=>a(y,y.disabled?"disabled":R?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...n,...v.map(y=>`${u}${y}`),...g].join(`
|
|
43
|
+
`)}}}}).prompt(),T0=[`${L("dim","\u2191/\u2193")} to navigate`,`${L("dim","Space:")} select`,`${L("dim","Enter:")} confirm`],le={message:(e=[],{symbol:t=L("gray",re),secondarySymbol:n=L("gray",re),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let s=[],a=o??Ye.withGuide,c=a?n:"",u=a?`${t} `:"",p=a?`${n} `:"";for(let f=0;f<i;f++)s.push(c);let l=Array.isArray(e)?e:e.split(`
|
|
44
|
+
`);if(l.length>0){let[f,...d]=l;f.length>0?s.push(`${u}${f}`):s.push(a?t:"");for(let m of d)m.length>0?s.push(`${p}${m}`):s.push(a?n:"")}r.write(`${s.join(`
|
|
46
45
|
`)}
|
|
47
|
-
`)},info:(e,t)=>{le.message(e,{...t,symbol:L("blue",
|
|
48
|
-
`:""}${
|
|
46
|
+
`)},info:(e,t)=>{le.message(e,{...t,symbol:L("blue",zd)})},success:(e,t)=>{le.message(e,{...t,symbol:L("green",Bd)})},step:(e,t)=>{le.message(e,{...t,symbol:L("green",li)})},warn:(e,t)=>{le.message(e,{...t,symbol:L("yellow",Ud)})},warning:(e,t)=>{le.warn(e,t)},error:(e,t)=>{le.message(e,{...t,symbol:L("red",Gd)})}},Vc=e=>new si({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,showSubmit:e.showSubmit,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??Ye.withGuide,n=`${`${t?`${L("gray",re)}
|
|
47
|
+
`:""}${rr(this.state)} `}${e.message}
|
|
49
48
|
`,r=e.placeholder&&e.placeholder.length>0?L("inverse",e.placeholder[0])+L("dim",e.placeholder.slice(1)):L(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"",s=e.showSubmit?`
|
|
50
|
-
${L(this.focused==="submit"?"cyan":"dim","[ submit ]")}`:"";switch(this.state){case"error":{let a=`${L("yellow",
|
|
49
|
+
${L(this.focused==="submit"?"cyan":"dim","[ submit ]")}`:"";switch(this.state){case"error":{let a=`${L("yellow",re)} `,c=t?Vt(e.output,i,a,void 0):i,u=L("yellow",qt);return`${n}${c}
|
|
51
50
|
${u} ${L("yellow",this.error)}${s}
|
|
52
|
-
`}case"submit":{let a=`${L("gray",
|
|
51
|
+
`}case"submit":{let a=`${L("gray",re)} `,c=t?Vt(e.output,o,a,void 0,void 0,u=>L("dim",u)):o?L("dim",o):"";return`${n}${c}`}case"cancel":{let a=`${L("gray",re)} `,c=t?Vt(e.output,o,a,void 0,void 0,u=>L(["strikethrough","dim"],u)):o?L(["strikethrough","dim"],o):"";return`${n}${c}`}default:{let a=t?`${L("cyan",re)} `:"",c=t?L("cyan",qt):"",u=t?Vt(e.output,i,a):i;return`${n}${u}
|
|
53
52
|
${c}${s}
|
|
54
|
-
`}}}}).prompt(),
|
|
53
|
+
`}}}}).prompt(),A0={light:oe("\u2500","-"),heavy:oe("\u2501","="),block:oe("\u2588","#")},Kd=[`${L("dim","\u2191/\u2193")} to navigate`,`${L("dim","Enter:")} confirm`],ci=(e,t)=>e.includes(`
|
|
55
54
|
`)?e.split(`
|
|
56
55
|
`).map(n=>t(n)).join(`
|
|
57
|
-
`):t(e),
|
|
56
|
+
`):t(e),qc=e=>{let t=(r,i)=>{if(r===void 0)return"";let o=r.label??String(r.value);switch(i){case"disabled":return`${L("gray",ui)} ${ci(o,s=>L("gray",s))}${r.hint?` ${L("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${ci(o,s=>L("dim",s))}`;case"active":return`${L("green",Gc)} ${o}${r.hint?` ${L("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${ci(o,s=>L(["strikethrough","dim"],s))}`;default:return`${L("dim",ui)} ${ci(o,s=>L("dim",s))}`}},n=e.showInstructions??!0;return new Mc({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let r=e.withGuide??Ye.withGuide,i=`${rr(this.state)} `,o=`${Hd(this.state)} `,s=Vt(e.output,e.message,o,i),a=`${r?`${L("gray",re)}
|
|
58
57
|
`:""}${s}
|
|
59
|
-
`;switch(this.state){case"submit":{let c=r?`${L("gray",
|
|
60
|
-
${L("gray",
|
|
61
|
-
`).length,
|
|
62
|
-
`),f=
|
|
58
|
+
`;switch(this.state){case"submit":{let c=r?`${L("gray",re)} `:"",u=Vt(e.output,t(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${L("gray",re)} `:"",u=Vt(e.output,t(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
|
|
59
|
+
${L("gray",re)}`:""}`}default:{let c=r?`${L("cyan",re)} `:"",u=a.split(`
|
|
60
|
+
`).length,p=n?Wd(Kd,r):r?[L("cyan",qt)]:[],l=p.join(`
|
|
61
|
+
`),f=p.length+1;return`${a}${c}${Hc({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:c.length,rowPadding:u+f,style:(d,m)=>t(d,d.disabled?"disabled":m?"active":"inactive")}).join(`
|
|
63
62
|
${c}`)}
|
|
64
|
-
${
|
|
65
|
-
`}}}}).prompt()},
|
|
66
|
-
`:""}${
|
|
67
|
-
`,r=e.placeholder&&e.placeholder.length>0?L("inverse",e.placeholder[0])+L("dim",e.placeholder.slice(1)):L(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"validating":{let s=t?`${L("cyan",
|
|
63
|
+
${l}
|
|
64
|
+
`}}}}).prompt()},R0=`${L("gray",re)} `,Kc=e=>new ai({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??Ye.withGuide,n=`${`${t?`${L("gray",re)}
|
|
65
|
+
`:""}${rr(this.state)} `}${e.message}
|
|
66
|
+
`,r=e.placeholder&&e.placeholder.length>0?L("inverse",e.placeholder[0])+L("dim",e.placeholder.slice(1)):L(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"validating":{let s=t?`${L("cyan",re)} `:"",a=t?L("cyan",qt):"",c=L("dim",i),u=L("dim","Validating...");return`${n}${s}${c}
|
|
68
67
|
${a} ${u}
|
|
69
|
-
`}case"error":{let s=this.error?` ${L("yellow",this.error)}`:"",a=t?`${L("yellow",
|
|
68
|
+
`}case"error":{let s=this.error?` ${L("yellow",this.error)}`:"",a=t?`${L("yellow",re)} `:"",c=t?L("yellow",qt):"";return`${n.trim()}
|
|
70
69
|
${a}${i}
|
|
71
70
|
${c}${s}
|
|
72
|
-
`}case"submit":{let s=o?`${t?" ":""}${L("dim",o)}`:"",a=t?L("gray",
|
|
73
|
-
${a}`:""}`}default:{let s=t?`${L("cyan",
|
|
71
|
+
`}case"submit":{let s=o?`${t?" ":""}${L("dim",o)}`:"",a=t?L("gray",re):"";return`${n}${a}${s}`}case"cancel":{let s=o?` ${L(["strikethrough","dim"],o)}`:"",a=t?L("gray",re):"";return`${n}${a}${s}${o.trim()?`
|
|
72
|
+
${a}`:""}`}default:{let s=t?`${L("cyan",re)} `:"",a=t?L("cyan",qt):"";return`${n}${s}${i}
|
|
74
73
|
${a}
|
|
75
|
-
`}}}}).prompt()});import{readFileSync as
|
|
76
|
-
`)}function Se({summary:e,details:t,recovery:n},r){if(
|
|
77
|
-
`)}async function
|
|
78
|
-
\x1B[?25l`),o(),process.once("exit",s);let a=setInterval(()=>{i=(i+1)%
|
|
79
|
-
`:"\r\x1B[2K\x1B[1A\r\x1B[2K"),s()}}var pu,rm,im,De=G(()=>{"use strict";lu();Gr();Ve();Ge();je();rn();pu=["\u25D2","\u25D0","\u25D3","\u25D1"],rm=/\{\{([A-Za-z][A-Za-z0-9-]*)\}\}/g;im=24});import{readFileSync as om}from"node:fs";import{parseArgs as sm}from"node:util";function mu(e){return e.kind==="project"?`project:${e.name}`:e.kind}function gu(e){return e.kind==="shared"?"--shared":e.kind==="repository"?"--repo":`--project ${Z(e.name)}`}function Uo(e,t){return{target:e,label:an(e),...t?{hint:t}:{}}}function yu(e){return Uo({kind:"project",name:e.name},Ie(e))}function cm(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function vu(e){return or.includes(e)}function cr(e){return e instanceof Error?e.message:String(e)}var am,wu,ku=G(()=>{"use strict";Ve();Ro();Ge();je();De();Ze();be();rn();Je();am={prompt:"instructions or other text",bash:"bash script",node:"Node.js script",tsx:"TypeScript script",bun:"Bun script"};wu={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},path:{description:"Dotted token path, such as conventions.commit.default",type:"positional",required:!1},type:{description:`Token type: ${or.join(", ")}`,type:"string"},content:{description:"Token content or a file path; - reads standard input",type:"string"},description:{description:"Description for discovery",type:"string"},tag:{description:"Tag for discovery (repeatable)",type:"string"},shared:{description:"Add the token to the shared tokens",type:"boolean"},repo:{description:"Add the token to the repository configuration",type:"boolean"},project:{description:"Add the token to this registered project",type:"string"}},meta:{description:"Add a token to shared or project configuration",name:"add"},async run({rawArgs:e}){try{let{values:n,positionals:r}=sm({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},type:{type:"string"},content:{type:"string"},description:{type:"string"},tag:{type:"string",multiple:!0},shared:{type:"boolean"},repo:{type:"boolean"},project:{type:"string"}}}),i=n.agent===!0||!!fe(),o=!i&&Pe(),s=process.cwd();if([n.shared,n.repo,n.project!==void 0].filter(Boolean).length>1)throw new Error("Choose one of --shared, --repo or --project.");let a=se({cwd:s}),c=ye({cwd:s,loader:a}),u=[Uo({kind:"shared"},J("woof.config.json")),..."project"in c&&c.project?[c.project.kind==="repository"?Uo({kind:"repository"},c.checkoutRoot):yu(c.project)]:(c.selection==="ambiguous"?c.candidates:$t(c.root,a)).map(yu)],l=n.shared?{kind:"shared"}:n.repo?{kind:"repository"}:n.project!==void 0?{kind:"project",name:n.project}:u.length===1?{kind:"shared"}:void 0,p=r[0],f=n.type,m=n.content==="-"?om(0,"utf8").trimEnd():n.content,d=n.description?.trim()||void 0,h=n.tag??[];if(!o){let S=[...p===void 0?["path"]:[],...f===void 0?["type"]:[],...m===void 0?["content"]:[],...l===void 0?["target"]:[]];if(S.length){let C=we(c),T=[...new Set([...C.rootNamespaces,...C.projectNamespaces])].sort().join(`
|
|
80
|
-
`)||"
|
|
81
|
-
`)
|
|
74
|
+
`}}}}).prompt()});import{readFileSync as Zd}from"node:fs";import{stripVTControlCharacters as Jd}from"node:util";function No(e,t){return e.replace(Xd,(n,r)=>{let i=t[r];if(i===void 0)throw new Error(`The presentation template has no value for {{${r}}}.`);return String(i)})}function ke(e,t={}){let n=Zd(Ut("cli","templates",`${e}.md`),"utf8");return No(n,t).replace(/\n$/,"")}function ut(){return process.argv.includes("--agent")||!!fe()}function In(e){e&&process.stdout.write(`${ke(e.template,e.values)}
|
|
75
|
+
`)}function Se({summary:e,details:t,recovery:n},r){if(ut())return In(r);le.success(e),t&&le.message(t),n&&le.info(n)}function We({summary:e,details:t,recovery:n},r){if(ut())return In(r);le.info(e),t&&le.message(t),n&&le.info(n)}function Xc(e){le.message("",{spacing:0}),le.message(xa(e),{spacing:0,withGuide:!1})}function Kt({summary:e,details:t,recovery:n},r){if(ut())return In(r);le.warn(e),t&&le.message(t),n&&le.info(n)}function ae(e){Kt({summary:e},null),process.exitCode=130}function Lo({summary:e,details:t,notes:n,recovery:r},i){if(ut())return In(i);le.warn(e),t&&Xc(t),n&&le.message(n),r&&le.info(r)}function he({summary:e,details:t,recovery:n},r){if(ut())return In(r);le.error(e),t&&le.message(t),n&&le.info(n)}function ln(e,t,n){if(ut())return In(n);le.info(e),Xc(t)}async function we({message:e,options:t}){if(ut()||!Ne())return;let n=await qc({message:e,options:t});return un(n)?void 0:n}function _t(e,t={}){process.stderr.write(`${ke(e,t)}
|
|
76
|
+
`)}async function Yc(e){if(ut()||!Ne())return;let t=await Vc({message:e,showSubmit:!0,validate:n=>n?.trim()?void 0:"Enter a value."});return un(t)?void 0:(t??"").trimEnd()}function Do(e){process.stdout.write(e)}function pi(e,t){let n=e;for(let r=new Set;n?.target&&!r.has(n.path);)r.add(n.path),n=t.find(i=>i.path===n.target);return{description:n?.description,tags:n?.tags}}async function Zt({message:e,tokens:t,query:n=""}){if(ut()||!Ne())return;let r=Math.max(...t.map(a=>a.path.length)),i=new Map(t.map(a=>{let{description:c,tags:u}=pi(a,t);return[a.path,[a.path,c,...u??[],a.target].join(" ").toLowerCase()]})),o=t.map(a=>{let c=a.target?"":bn(a.kind),u=`${a.path.padEnd(r)} ${En(a.origin)}${c?` ${c}`:""}`,{description:p,tags:l}=pi(a,t),f=[p,l?.length?`tags: ${l.join(", ")}`:void 0].filter(Boolean).join(" \xB7 "),d=(process.stdout.columns??80)-Jd(u).length-Yd,m=d<20?"":f.length>d?`${f.slice(0,d-1)}\u2026`:f;return{value:a.path,label:u,...m?{hint:m}:{}}}),s=await Wc({message:e,options:o,initialUserInput:n,filter:(a,c)=>a.toLowerCase().split(/\s+/).filter(Boolean).every(u=>i.get(c.value).includes(u))});return un(s)?void 0:s}async function Qe(e,t={}){if(ut()||!Ne())return;let n=await Kc({message:e,...t.initialValue?{initialValue:t.initialValue}:{},validate:r=>t.optional||r?.trim()?void 0:"Enter a value."});return un(n)?void 0:(n??"").trim()}function Qc(e,t=3){let n=process.stdout,r=`Opening browser in ${t}s`,i=0,o=()=>n.write(`\r\x1B[2K${Ue.magenta(Jc[i])} ${r}`),s=()=>n.write("\x1B[?25h");n.write(`${Ue.gray(re)}
|
|
77
|
+
\x1B[?25l`),o(),process.once("exit",s);let a=setInterval(()=>{i=(i+1)%Jc.length,o()},80),c=t,u=setInterval(()=>{if(c-=1,c>0){r=`Opening browser in ${c}s`;return}clearInterval(u),e(),r="Waiting for save in browser"},1e3);return p=>{clearInterval(a),clearInterval(u),process.off("exit",s),n.write(p?`\r\x1B[2K${Ue.green(li)} ${p}
|
|
78
|
+
`:"\r\x1B[2K\x1B[1A\r\x1B[2K"),s()}}var Jc,Xd,Yd,Pe=U(()=>{"use strict";Zc();Vr();qe();Ge();Ie();an();Jc=["\u25D2","\u25D0","\u25D3","\u25D1"],Xd=/\{\{([A-Za-z][A-Za-z0-9-]*)\}\}/g;Yd=24});function fi(e){return typeof e!="string"&&e.$private===!0}function dt(e){if(typeof e=="string"||e.$type==="prompt"){let t=typeof e=="string"?e:e.$exec;return/(?<![${])\{\{-woof:private-\}\}(?!\})/.test(t)}return(Array.isArray(e.$exec)?e.$exec:[e.$exec]).includes(ir)}var ir,_n=U(()=>{"use strict";ir="{{-woof:private-}}"});function Qd(e){return typeof e=="string"||!!e&&typeof e=="object"&&!Array.isArray(e)}function tu(e,t,n,r){let i=new Map,o=new Set;function s(a,c){for(let[u,p]of Object.entries(a)){if(r.has(u))continue;let l=c?`${c}.${u}`:u;Qd(p)&&(typeof p=="string"||"$type"in p||"$exec"in p)?i.set(l,{path:l,value:p,origin:n,source:t,overridden:void 0}):(o.add(l),s(p,l))}}return s(e,""),{tokens:i,namespaces:o}}function $e(e){let t=tu(e.root.data,e.root.source,"root",new Set(["$schemaVersion","$projects"])),n=e.project?tu(e.project.data,e.project.source,"project",new Set(["$schemaVersion","$metadata"])):{tokens:new Map,namespaces:new Set};for(let[i,o]of n.tokens){if(t.namespaces.has(i))throw new Te(`Project token ${I(i)} is a leaf but the shared definition is a namespace.`);let s=t.tokens.get(i);n.tokens.set(i,{...o,overridden:s})}for(let i of n.namespaces)if(t.tokens.has(i))throw new Te(`Project namespace ${I(i)} conflicts with a shared leaf of the same name.`);let r=new Map(t.tokens);for(let[i,o]of n.tokens)r.set(i,o);return{context:e,tokens:r,rootTokens:t.tokens,rootNamespaces:t.namespaces,projectNamespaces:n.namespaces}}function Pt(e){return/^-[^{}\s]*-$/.test(e)}function or(e){let t=[];function n(i){if(!i)return;let o=t.at(-1);o?.kind==="literal"?o.text+=i:t.push({kind:"literal",text:i})}let r=0;for(;r<e.length;){if(e.startsWith("{{{{",r)){let i=e.indexOf("}}}}",r+4);if(i!==-1){let o=e.slice(r+4,i);if((sr.test(o)||Pt(o))&&e[i+4]!=="}"){n(`{{${o}}}`),r=i+4;continue}}}if(e.startsWith("{{",r)){let i=e.indexOf("}}",r+2);if(i!==-1){let o=e.slice(r+2,i);if((sr.test(o)||Pt(o))&&e[r-1]!=="$"&&e[r-1]!=="{"&&e[i+2]!=="}"){`{{${o}}}`===ir?t.push({kind:"private"}):Pt(o)?n(`{{${o}}}`):t.push({kind:"reference",path:o}),r=i+2;continue}}}n(e[r]),r+=1}return t}function hi(e){return or(e).flatMap(t=>t.kind==="reference"?[t.path]:[])}function di(e,t){let n="",r=0;for(;r<e.length;){if(e.startsWith("{{{{",r)){let i=e.indexOf("}}}}",r+4);if(i!==-1){let o=e.slice(r+4,i);if((sr.test(o)||Pt(o))&&e[i+4]!=="}"){n+=e.slice(r,i+4),r=i+4;continue}}}if(e.startsWith("{{",r)){let i=e.indexOf("}}",r+2);if(i!==-1){let o=e.slice(r+2,i);if(sr.test(o)&&!Pt(o)&&e[r-1]!=="$"&&e[r-1]!=="{"&&e[i+2]!=="}"){n+=`{{${t.get(o)??o}}}`,r=i+2;continue}}}n+=e[r],r+=1}return n}function Ot(e){if(!e.startsWith("$projects.")){if(!sr.test(e))throw new Te(`Invalid token address: ${I(e)}`);return{path:e}}let[,t,...n]=e.split(".");if(!t||!eu.test(t)||!n.length||n.some(r=>!eu.test(r)))throw new Te(`Invalid qualified project address: ${I(e)}`);return{project:t,path:n.join(".")}}function nu(e,t){let n=Ot(t);if(n.project){let r=e.context.project;if(r?.kind!=="registered"||r.name!==n.project)throw new Te(`Address ${I(t)} contradicts the selected project; select ${I(n.project)} explicitly instead of mixing scopes.`)}return n.path}function ru(e){return typeof e.value=="string"?{description:void 0,tags:void 0}:{description:e.value.$description,tags:e.value.$tags}}function Mo(e){let t=or(e),n=t[0];return t.length===1&&n?.kind==="reference"?n.path:void 0}function iu(e){return[...e.tokens.values()].map(t=>{let n=typeof t.value=="string"?Mo(t.value):void 0;return{path:t.path,kind:n?"alias":typeof t.value=="string"?"prompt":t.value.$type,target:n,...ru(t),origin:t.origin,source:t.source}})}function ou(e){let t=new Map,n=new Map,r=new Map;function i(l,f){if(f.origin==="root"&&l.startsWith("<repo>/"))throw new Te(`Global token ${I(f.path)} cannot depend on repository resource ${I(l)}.`);let d=e.context.checkoutRoot,m=e.context.project;if(l.startsWith("<repo>/")&&!d)throw new Te(`${I(f.path)} reads ${I(l)}, but ${m?.name?`project ${I(m.name)} has no base path on this machine`:"no checkout is available"}.`);return o(f,()=>xt(l,d?{repoRoot:d}:{}))}function o(l,f){try{return f()}catch(d){throw d instanceof be?new Te(`${I(l.path)} in ${I(l.source.file)} cannot load ${I(d.reference)}: ${d.detail}`):d}}function s(l){if(typeof l.value!="string"&&l.value.$type!=="prompt")throw new Te(`Token ${I(l.path)} is not a prompt.`);let f=typeof l.value=="string"?l.value:l.value.$exec;if(!at(f))return{content:f,parts:or(f),files:[]};let d=i(f,l),m=n.get(f);if(m)return{content:m.content,parts:or(m.content),files:[m.provenance]};let h=e.context.checkoutRoot,g=o(l,()=>cc(f,h?{repoRoot:h}:{})).content;return n.set(f,{content:g,provenance:d}),{content:g,parts:or(g),files:[d]}}function a(l,f,d){let m=f.at(-1),h=d?` in ${I(d.source.file)}`:"",g=m?` ${I(m)}${h} references it.`:"";throw e.rootNamespaces.has(l)||e.projectNamespaces.has(l)?new Te(`${I(l)} is a namespace, not a token.${g}`):d?.origin==="root"&&e.context.project&&!e.rootTokens.has(l)?new Te(`Shared token ${I(d.path)} depends on project-only token ${I(l)}.`):new Te(`Token ${I(l)} does not exist.${g}`)}function c(l,f){if(f.includes(l))throw new Te(`Circular token reference: ${I([...f,l].join(" -> "))}`);let d=e.tokens.get(l);if(!d)return a(l,f,f.length?e.tokens.get(f.at(-1)):void 0);if(t.has(l))return;let m=[],h=[],g;if(typeof d.value=="string"||d.value.$type==="prompt"){let v=s(d);g=v.parts.some(y=>y.kind==="private"),h.push(...v.files);for(let y of v.parts)y.kind==="reference"&&(m.push(y.path),d.origin==="root"&&!e.rootTokens.has(y.path)&&a(y.path,[...f,l],d),c(y.path,[...f,l]))}else{g=dt(d.value);let v=Array.isArray(d.value.$exec)?d.value.$exec:[d.value.$exec];for(let y of v){if(g)break;at(y)&&h.push(i(y,d))}}t.set(l,{path:l,origin:d.origin,source:d.source,...ru(d),references:m,files:h,privatePlaceholder:g,overridden:d.overridden?{path:d.overridden.path,source:d.overridden.source}:void 0})}async function u(l){let f=r.get(l);if(f)return f;let d=(async()=>{let m=e.tokens.get(l);if(typeof m.value!="string"&&m.value.$type!=="prompt"){if(dt(m.value))return ke("private-value",{path:l});if(!p)throw new Te(`Computed token ${I(l)} requires an evaluation hook.`);let v=m.value,R=(Array.isArray(v.$exec)?v.$exec:[v.$exec]).map(k=>at(k)?i(k,m):void 0),A=await p({token:m,resource:v,locations:R});if(typeof A!="string")throw new Te(`Computed token ${I(l)} returned non-text output.`);return A}let h=s(m),g="";for(let v of h.parts)v.kind==="literal"?g+=v.text:v.kind==="private"?g+=ke("private-value",{path:l}):g+=await u(v.path);return g})();return r.set(l,d),d}let p;return{visit:c,evaluate:u,setEvaluator(l){p=l},traces(){return[...t.values()]}}}function su(e,t,n){return{requested:t,selection:e.context.selection,project:e.context.project?{kind:e.context.project.kind,name:e.context.project.name,source:e.context.project.source}:void 0,tokens:n.traces()}}function St(e,t){let n=nu(e,t),r=ou(e);return r.visit(n,[]),su(e,n,r)}function au(e,t){return St(e,t)}async function Fo(e,t,n,r){let i=nu(e,t),o=ou(e);return o.setEvaluator(n),o.visit(i,[]),r?.(su(e,i,o)),o.evaluate(i)}function cu(e,t){return t?[St(e,t)]:[...e.tokens.keys()].map(n=>St(e,n))}var Te,eu,sr,et=U(()=>{"use strict";Ge();Pe();_n();Ee();Te=class extends Error{constructor(t,n){super(t,n),this.name="TokenResolutionError"}},eu=/^[A-Za-z0-9_-]+$/,sr=/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/});import{createHash as em}from"node:crypto";import{chmodSync as tm,constants as du,copyFileSync as mu,existsSync as nm,mkdirSync as gu,readFileSync as cr,realpathSync as mi,rmSync as yu,statSync as uu}from"node:fs";import{homedir as rm}from"node:os";import{basename as im,dirname as zo,extname as vu,isAbsolute as om,join as pn,relative as gi,resolve as sm,sep as yi}from"node:path";import{isDeepStrictEqual as lu}from"node:util";function fn(e){return e.kind==="shared"?"shared tokens (global)":e.kind==="repository"?"repo tokens (project)":`${e.name} tokens (project)`}function wu(e,t){if(e.kind==="shared")return J("woof.config.json");if(e.kind==="repository")return ve(t);let n=se({cwd:t}),r=bt(n.loadRootConfiguration(),n).find(i=>i.name===e.name);return r&&_e(r)}function pu(e,t){let n=gi(e,t);return n!==""&&!n.startsWith(`..${yi}`)&&n!==".."&&!om(n)}function fu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!("$type"in e||"$exec"in e)}function lr(e,t){let n=J("woof.config.json");if(e.kind==="shared")return{file:n,kind:"root",base:[]};if(e.kind==="repository"){let s=ve(t),a=s&&!Ht(t)?Wt(s):void 0;if(!a)throw new Error(`This checkout has no repository configuration. Create one with ${I("woof init --repo")}.`);return{file:a,kind:"repository",base:[]}}let r=se({cwd:t}),i=r.loadRootConfiguration().data.$projects??{};if(!Object.hasOwn(i,e.name))throw new Error(`Project ${I(e.name)} is not registered. See the registered projects with ${I("woof projects")}.`);let o=i[e.name];return typeof o=="string"?{file:r.loadProjectConfiguration(o).source.file,kind:"project",base:[]}:{file:n,kind:"root",base:["$projects",e.name]}}function Go(e,t,n,r,i=!1){let o=structuredClone(e),s=t.reduce((c,u)=>c[u],o),a=n.split(".");for(let[c,u]of a.entries()){let p=a.slice(0,c+1).join("."),l=Object.hasOwn(s,u)?s[u]:void 0;if(c===a.length-1){if(i&&(l===void 0||fu(l)))throw new Error(`Token ${I(p)} does not exist in this configuration.`);if(!i&&l!==void 0)throw new Error(`Token ${I(p)} already exists in this configuration.`);s[u]=r}else if(l===void 0){if(i)throw new Error(`Token ${I(n)} does not exist in this configuration.`);s=s[u]={}}else if(fu(l))s=l;else throw new Error(`Token ${I(p)} already exists, so it cannot hold ${I(n)}.`)}return o}function Bo(e,t,n,r,i){return e==="prompt"&&typeof t=="string"&&!n&&!r.length&&!i?t:{$type:e,$exec:t,...n?{$description:n}:{},...r.length?{$tags:r}:{},...i?{$private:!0}:{}}}function Uo(e){return Bo(e.type,e.content.exec,e.description,e.tags,e.private)}function um(e){if(!e.content.copy)return Uo(e);let t=e.type==="prompt"?cr(e.content.file,"utf8"):"";return Uo({...e,content:{exec:t}})}function Ho(e,t=!1){if(!t&&Pt(e))throw new Error(`Token path ${I(e)} is reserved for internal markers.`);if(!e.split(".").every(r=>am.test(r)&&!cm.has(r)))throw new Error(`Token path ${I(e)} must be dot-separated names that contain only ASCII letters, digits, underscores and hyphens.`)}function Wo(e,t){if(!e.trim())throw new Error("The token content is empty.");if(e.includes(`
|
|
79
|
+
`)||at(e))return{exec:e};let n=e.startsWith("~/")?pn(rm(),e.slice(2)):sm(t.cwd,e),r;try{if(r=mi(n),!uu(r).isFile())return{exec:e}}catch{return{exec:e}}let i=mi(J());if(pu(i,r))return{exec:`<root>/${gi(i,r).split(yi).join("/")}`,file:r};let o=ve(t.cwd);if(o&&t.target.kind!=="shared"&&pu(o,r))return{exec:`<repo>/${gi(o,r).split(yi).join("/")}`,file:r};let s=`resources/${t.path.replaceAll(".","/")}${vu(r)}`;try{throw uu(pn(i,s)),new Error(`woof home already has a file at ${I(s)}. Move the file into woof home, or paste its content.`)}catch(a){if(a.code!=="ENOENT")throw a}return{exec:`<root>/${s}`,file:r,copy:s}}function vi(e,t){Ho(e.path,e.replace);let n=lr(e.target,t),r=JSON.parse(cr(n.file,"utf8")),i=Go(r,n.base,e.path,e.value,e.replace),o=Ze(i,n.kind,n.file),s=se({cwd:t}),a=s.loadRootConfiguration(),c=n.kind==="root"?{...a,data:o}:a,u=s.repoRoot,p=y=>({root:c,project:y,candidates:[],checkoutRoot:y.kind==="registered"?nr(y,t,u):u,selection:"explicit"}),l={root:c,candidates:[],checkoutRoot:u,selection:"root"},f=bt(c,s).map(y=>e.target.kind==="project"&&y.name===e.target.name&&!y.inline?{...y,data:o}:y),d=ve(t),m=d&&!Ht(t)?Wt(d):void 0,h=m?{kind:"repository",name:void 0,data:e.target.kind==="repository"?o:s.loadRepositoryConfiguration(m).data,source:s.loadRepositoryConfiguration(m).source,inline:!1}:void 0,g=e.target.kind==="shared"?[l,...f.map(p),...h?[p(h)]:[]]:[e.target.kind==="repository"?p(h):p(f.find(y=>y.name===e.target.name))];for(let y of g)try{$e(y)}catch(R){let A=y.project?y.project.name?`Project ${y.project.name}`:"Repository project":"Shared tokens";throw new Error(`${A}: ${R instanceof Error?R.message:String(R)}`,{cause:R})}let v=$e(g[0]);return St(v,e.path),{document:r,base:n.base,next:i,overrides:e.target.kind!=="shared"&&v.rootTokens.has(e.path)}}function wi(e,t){return vi({target:e.target,path:e.path,value:um(e)},t)}async function ku(e,t){let{file:n}=lr(e.target,t);return Sn(n,r=>{let i=wi(e,t),o=e.content.copy?Go(i.document,i.base,e.path,Uo(e)):i.next,s;e.content.copy&&(s=pn(mi(J()),e.content.copy),gu(zo(s),{recursive:!0,mode:448}),mu(e.content.file,s,du.COPYFILE_EXCL),tm(s,384));try{Kn(r,o)}catch(a){throw s&&yu(s,{force:!0}),a}return{file:r,overrides:i.overrides}})}function lm(e){let t=em("sha256");for(let n of e)t.update(cr(n));return t.digest("hex")}function hu(e){return e.kind==="repository"?{kind:"repository"}:{kind:"project",name:e.name}}function ar(e,t){let n=se({cwd:t.cwd}),r=ye({cwd:t.cwd,loader:n,...t.project?{project:t.project}:{}});if(r.selection==="ambiguous")throw new Error(`Several projects match this directory: ${r.candidates.map(m=>I(m.name)).join(", ")}. Retry with ${I("--project NAME")}.`);let i=$e(r),o=i.tokens.get(e);if(!o)throw new Error(i.rootNamespaces.has(e)||i.projectNamespaces.has(e)?`${I(e)} is a namespace. Choose one token in it.`:`Token ${I(e)} does not exist. Find it with ${I("woof get --search")}.`);let s="project"in r?r.project:void 0,a=o.origin==="root"?{kind:"shared"}:hu(s),c=o.value,u=typeof c=="string"?"prompt":c.$type,p=typeof c=="string"?c:c.$exec,l=(Array.isArray(p)?p:[p]).filter(at).map(m=>xt(m,r.checkoutRoot?{repoRoot:r.checkoutRoot}:{}).file),f=Array.isArray(p)||l.length&&u!=="prompt"?"fixed":l.length?"file":"inline",d=lr(a,t.cwd).file;return{path:e,value:c,type:u,exec:p,kind:f,files:l,content:f==="file"?cr(l[0],"utf8"):f==="inline"?p:void 0,description:typeof c=="string"?void 0:c.$description,tags:typeof c=="string"?[]:c.$tags??[],private:typeof c=="string"?void 0:c.$private,definition:a,override:o.origin==="root"&&s?hu(s):void 0,configuration:d,version:lm([d,...l])}}async function Vo(e,t,n){let r=ar(e,n),i=n.layer==="override"?r.override:r.definition;if(!i)throw new Error(`${I(e)} is not a shared token seen from a project, so it cannot get an override.`);return Sn(lr(i,n.cwd).file,o=>{let s=ar(e,n);if(n.version&&s.version!==n.version)throw new Error(`${I(e)} changed after it was opened. Open it again to edit the current version.`);if(t.content!==void 0&&s.kind==="fixed")throw new Error(`The content of ${I(e)} is in ${s.files.map(g=>I(g)).join(", ")}. Edit the file directly.`);if(t.content!==void 0&&!t.content.trim())throw new Error("The token content is empty.");if(n.layer==="definition"&&t.private===!1&&!s.private&&Object.keys(t).length===1)return{file:o,contentFile:void 0,changed:!1};let a=t.description===void 0?s.description:t.description.trim()||void 0,c=t.tags??s.tags,u=t.private??s.private,p=t.content!==void 0&&t.content!==s.content,l=p&&s.kind==="file"&&n.layer==="definition",f=Bo(s.type,p&&!l?t.content:t.exec??s.exec,a,c,u);if(n.layer==="definition"&&!l&&lu(f,s.value))return{file:o,contentFile:void 0,changed:!1};let d=vi({target:i,path:e,value:l?Bo(s.type,t.content,a,c,u):f,replace:n.layer==="definition"},n.cwd);if(n.check)return{file:o,contentFile:void 0,changed:!0};let m=l?Go(d.document,d.base,e,f,!0):d.next,h=l?cr(s.files[0]):void 0;l&&Hr(s.files[0],t.content);try{(n.layer==="override"||!lu(f,s.value))&&Kn(o,m)}catch(g){throw h&&Hr(s.files[0],h),g}return{file:o,contentFile:l?s.files[0]:void 0,changed:!0}})}function $u(e,t){let n=ar(e,t),r=n.override;if(!r||r.kind==="shared"||n.kind!=="fixed")throw new Error(`${I(e)} has no script files to copy.`);let i=ve(t.cwd),o=mi(J()),s=r.kind==="repository"?{directory:pn(zo(lr(r,t.cwd).file),"woof"),marker:"<repo>",root:i}:{directory:pn(o,"resources","projects",r.name),marker:"<root>",root:o},a=Array.isArray(n.exec)?n.exec:[n.exec],c=[...new Set(a.filter(at))],u=e.split("."),p=new Map(c.map(d=>{let m=xt(d,i?{repoRoot:i}:{}).file,h=c.length===1?`${pn(s.directory,...u)}${vu(m)}`:pn(s.directory,...u,im(m));return[d,{source:m,file:h}]}));for(let{file:d}of p.values())if(nm(d))throw new Error(`${I(d)} already exists. Move it away, then retry.`);let l=()=>{for(let{file:d}of p.values())yu(d,{force:!0})};try{for(let{source:d,file:m}of p.values())gu(zo(m),{recursive:!0}),mu(d,m,du.COPYFILE_EXCL)}catch(d){throw l(),d}let f=a.map(d=>{let m=p.get(d);return m?`${s.marker}/${gi(s.root,m.file).split(yi).join("/")}`:d});return{exec:Array.isArray(n.exec)?f:f[0],files:[...p.values()].map(d=>d.file),remove:l}}var ur,am,cm,qo=U(()=>{"use strict";kt();Ge();Xr();Ie();Xe();Ee();et();ur=["prompt","bash","node","tsx","bun"];am=/^[A-Za-z0-9_-]+$/,cm=new Set(["__proto__","prototype","constructor"])});import{readFileSync as pm}from"node:fs";import{parseArgs as fm}from"node:util";function xu(e){return e.kind==="project"?`project:${e.name}`:e.kind}function bu(e){return e.kind==="shared"?"--shared":e.kind==="repository"?"--repo":`--project ${Z(e.name)}`}function Ko(e,t){return{target:e,label:fn(e),...t?{hint:t}:{}}}function Eu(e){return Ko({kind:"project",name:e.name},_e(e))}function dm(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function Su(e){return ur.includes(e)}function pr(e){return e instanceof Error?e.message:String(e)}var hm,Tu,Au=U(()=>{"use strict";qe();qo();Ge();Ie();Pe();Xe();Ee();an();et();hm={prompt:"instructions or other text",bash:"bash script",node:"Node.js script",tsx:"TypeScript script",bun:"Bun script"};Tu={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},path:{description:"Dotted token path, such as conventions.commit.default",type:"positional",required:!1},type:{description:`Token type: ${ur.join(", ")}`,type:"string"},content:{description:"Token content or a file path; - reads standard input",type:"string"},description:{description:"Description for discovery",type:"string"},tag:{description:"Tag for discovery (repeatable)",type:"string"},private:{description:"Replace the token content with a private placeholder on export",type:"boolean"},shared:{description:"Add the token to the shared tokens",type:"boolean"},repo:{description:"Add the token to the repository configuration",type:"boolean"},project:{description:"Add the token to this registered project",type:"string"}},meta:{description:"Add a token to shared or project configuration",name:"add"},async run({rawArgs:e}){try{let{values:n,positionals:r}=fm({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},type:{type:"string"},content:{type:"string"},description:{type:"string"},tag:{type:"string",multiple:!0},private:{type:"boolean"},shared:{type:"boolean"},repo:{type:"boolean"},project:{type:"string"}}}),i=n.agent===!0||!!fe(),o=!i&&Ne(),s=process.cwd();if([n.shared,n.repo,n.project!==void 0].filter(Boolean).length>1)throw new Error("Choose one of --shared, --repo or --project.");let a=se({cwd:s}),c=ye({cwd:s,loader:a}),u=[Ko({kind:"shared"},J("woof.config.json")),..."project"in c&&c.project?[c.project.kind==="repository"?Ko({kind:"repository"},c.checkoutRoot):Eu(c.project)]:(c.selection==="ambiguous"?c.candidates:bt(c.root,a)).map(Eu)],p=n.shared?{kind:"shared"}:n.repo?{kind:"repository"}:n.project!==void 0?{kind:"project",name:n.project}:u.length===1?{kind:"shared"}:void 0,l=r[0],f=n.type,d=n.content==="-"?pm(0,"utf8").trimEnd():n.content,m=n.description?.trim()||void 0,h=n.tag??[];if(!o){let A=[...l===void 0?["path"]:[],...f===void 0?["type"]:[],...d===void 0?["content"]:[],...p===void 0?["target"]:[]];if(A.length){let T=$e(c),S=[...new Set([...T.rootNamespaces,...T.projectNamespaces])].sort().join(`
|
|
80
|
+
`)||"none",C=u.map(E=>`${bu(E.target)} ${E.label}${E.hint?`: ${E.hint}`:""}`).join(`
|
|
81
|
+
`),$=["woof add",l===void 0?"PATH":Z(l),"--type",f??"TYPE",p?bu(p):"TARGET",...n.private?["--private"]:[],"--description",m===void 0?"DESCRIPTION":Z(m),...h.length?h.flatMap(E=>["--tag",Z(E)]):["--tag","TAG"],`--content -${i?" --agent":""} <<'WOOF'
|
|
82
82
|
CONTENT
|
|
83
|
-
WOOF`].join(" ");
|
|
83
|
+
WOOF`].join(" ");We({summary:`woof needs more input to add a token: ${A.join(", ")}.`,details:`${$}
|
|
84
84
|
|
|
85
85
|
Targets:
|
|
86
|
-
${
|
|
86
|
+
${C}
|
|
87
87
|
|
|
88
88
|
Existing namespaces:
|
|
89
|
-
${
|
|
90
|
-
`));return await t({target:
|
|
91
|
-
`),n=t.length-1;for(;n>=0
|
|
92
|
-
`)}function
|
|
89
|
+
${S}`,recovery:"Retry with the complete command."},{template:"add-draft",values:{missing:A.join(", "),namespaces:S,targets:C,command:$}}),process.exitCode=1;return}let k=[];Su(f)||k.push(`The type must be one of: ${ur.join(", ")}.`);let w;try{Ho(l)}catch(T){k.push(pr(T))}try{w=Wo(d,{cwd:s,target:p,path:l})}catch(T){k.push(pr(T))}if(!k.length)try{wi({target:p,path:l,type:f,content:w,description:m,tags:h,private:n.private},s)}catch(T){k.push(pr(T))}if(k.length)throw new Error(k.join(`
|
|
90
|
+
`));return await t({target:p,path:l,type:f,content:w,description:m,tags:h,private:n.private})}let g=()=>ae("Add cancelled. Nothing was changed."),v=A=>he({summary:pr(A)},null);if(!p){let A=await we({message:"Where should the token live?",options:u.map(k=>({value:xu(k.target),label:k.label,...k.hint?{hint:k.hint}:{}}))});if(!A)return g();p=u.find(k=>xu(k.target)===A).target}for(;;){if(l===void 0&&(l=await Qe(`Token path ${Le("(e.g.")} ${I("conventions.commit.default")}${Le(")")}`),l===void 0))return g();try{vi({target:p,path:l,value:""},s);break}catch(A){v(A),l=void 0}}if(f===void 0||!Su(f)){let A=await we({message:"Token type",options:ur.map(k=>({value:k,label:k,hint:hm[k]}))});if(!A)return g();f=A}let y=f,R;for(;;){if(d===void 0&&(d=await Yc(`Content ${De("paste text or a file path")}`),d===void 0))return g();try{R=Wo(d,{cwd:s,target:p,path:l}),wi({target:p,path:l,type:y,content:R,description:void 0,tags:[]},s);break}catch(A){v(A),d=void 0}}if(n.description===void 0){let A=await Qe(`Description ${De("optional")}`,{optional:!0});if(A===void 0)return g();m=A||void 0}if(!h.length){let A=await Qe(`Tags ${De("comma separated - optional")}`,{optional:!0});if(A===void 0)return g();h=dm(A)}await t({target:p,path:l,type:y,content:R,description:m,tags:h,private:n.private})}catch(n){let r=pr(n);he({summary:"woof could not add the token.",details:r},{template:"add-error",values:{details:r}}),process.exitCode=1}async function t(n){let{file:r,overrides:i}=await ku(n,process.cwd()),o=n.content.copy?`${n.content.exec} (copied from ${n.content.file})`:n.content.file?n.content.exec:"inline",s=n.description??"none",a=n.tags.join(", ")||"none",c=i?"yes":"no",u=n.type==="prompt"&&!n.content.file&&!n.description&&!n.tags.length&&n.private===void 0?Mo(n.content.exec):void 0,p=u?`alias of ${u}`:n.type,l=n.target.kind==="project"?` --project ${Z(n.target.name)}`:"",f=`woof get ${Z(n.path)}${l}`;Se({summary:`Added ${I(n.path)}.`,details:je([["Configuration",r],["Type",p],["Content",o],["Description",s],["Tags",a],["Private",n.private?"yes":"no"],["Overrides a shared token",c]]),recovery:`Check it with ${I(f)}.`},{template:"add-result",values:{path:n.path,file:r,type:p,content:o,description:s,tags:a,private:n.private?"yes":"no",override:c,command:`${f} --agent`}})}}}});function Ru(e,t){if(t.length===0)return 1;if(e.length===0)return 0;let n=e.toLowerCase(),r=t.toLowerCase();if(n===r)return 1;let i=r.length,o=0,s=-1;for(let l=0;l<n.length;l++)if(n[l]===r[o]&&(o++,o===i)){s=l;break}if(s===-1)return 0;let a=s;for(o=i-1;o>=0;o--){for(;n[a]!==r[o];)a--;a--}a++;let c=0,u=0;o=0;for(let l=a;l<=s;l++)n[l]===r[o]?(u++,c+=u,l===0?c+=2:mm(e,l)&&(c+=1.5),o++):u=0;let p=i*(i+1)/2+2;return Math.min(1,c/p)*(1-.1*(1-i/e.length))}function mm(e,t){if(t===0)return!0;let n=e[t-1],r=e[t];return!!(" _-./".includes(n)||n===n.toLowerCase()&&r===r.toUpperCase()&&r!==r.toLowerCase())}function gm(e,t){let n=0,r=0;if(t&&e.length!==t.length)throw Error("The number of values must be equal to the number of weights");for(let i=0;i<e.length;i++){let o=t?t[i]:1;n+=e[i]*o,r+=o}return n/r}function Cu(e,t,n,r){if(typeof t!="string")return e;let i=t.trim().toLowerCase();if(!i)return e;let o=[],s=r?.threshold??.3,a=i.split(/\s+/).filter(Boolean),c=n.map(u=>typeof u=="string"?{name:u,weight:1}:u);return e.forEach(u=>{let p=c.map(l=>{let f=u[l.name];return typeof f=="string"?f.trim():""});if(a.length<=1){let l=gm(p.map(f=>f?Ru(f,a[0]):0),c.map(f=>f.weight));l>=s&&o.push({object:u,similarity:l})}else{let l=a.map(d=>{let m=0;for(let h=0;h<p.length;h++)if(p[h]){let g=Ru(p[h],d);g>m&&(m=g)}return m}),f=Math.min(...l);f>=s&&o.push({object:u,similarity:f})}}),o.sort((u,p)=>p.similarity-u.similarity),o.map(u=>u.object)}var ju=U(()=>{});function Tt(e,t=""){let n=iu(e),r=t.trim();if(!r)return n.sort((o,s)=>+(o.origin==="root")-+(s.origin==="root")||o.path.localeCompare(s.path));let i=n.map(o=>({token:o,path:o.path,description:o.description??"",tags:(o.tags??[]).join(" "),target:o.target??""}));return Cu(i,r,["path","description","tags","target"],{threshold:.3}).map(o=>o.token)}var fr=U(()=>{"use strict";ju();et()});function Yo(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function Bu(e){yn=e}function hn(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function K(e,t=""){let n=typeof e=="string"?e:e.source,r={replace:(i,o)=>{let s=typeof o=="string"?o:o.source;return s=s.replace(xe.caret,"$1"),n=n.replace(i,s),r},getRegex:()=>new RegExp(n,t)};return r}function tt(e,t){if(t){if(xe.escapeTest.test(e))return e.replace(xe.escapeReplace,Ou)}else if(xe.escapeTestNoEncode.test(e))return e.replace(xe.escapeReplaceNoEncode,Ou);return e}function mg(e){return xe.numericCharacterReference.test(e)?e.replace(xe.numericCharacterReferenceOrAmpersand,(t,n,r)=>{if(n===void 0&&r===void 0)return"&";let i=n===void 0?Number.parseInt(r,16):Number.parseInt(n,10);return i===0||i>1114111||i>=55296&&i<=57343?"\uFFFD":i===38?"&":String.fromCodePoint(i)}):e}function Nu(e){try{e=encodeURI(e).replace(xe.percentDecode,"%")}catch{return null}return e}function Lu(e,t){let n=e.replace(xe.findPipe,(o,s,a)=>{let c=!1,u=s;for(;--u>=0&&a[u]==="\\";)c=!c;return c?"|":" |"}),r=n.split(xe.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;i<r.length;i++)r[i]=r[i].trim().replace(xe.slashPipe,"|");return r}function Jt(e,t,n){let r=e.length;if(r===0)return"";let i=0;for(;i<r;){let o=e.charAt(r-i-1);if(o===t&&!n)i++;else if(o!==t&&n)i++;else break}return e.slice(0,r-i)}function Du(e){let t=e.split(`
|
|
91
|
+
`),n=t.length-1;for(;n>=0&&xe.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
92
|
+
`)}function bi(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function Mu(e,t){if(e.indexOf(t[0])===-1&&e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]==="\\")r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function $i(e,t=0){let n=t,r="";for(let i of e)if(i===" "){let o=4-n%4;r+=" ".repeat(o),n+=o}else r+=i,n++;return r}function Fu(e,t,n,r,i){let o=t.href,s=t.title||null,a=e[1].replace(i.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!",u=r.state.inLink,p=r.state.linkEmitted,l=r.state.inRawBlock;r.state.inLink=!0,r.state.linkEmitted=!1;let f=r.inlineTokens(a),d=r.state.linkEmitted;if(r.state.linkEmitted=p,r.state.inLink=u,!c){if(d){r.state.inRawBlock=l;return}r.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:o,title:s,text:a,tokens:f}}function gg(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
93
93
|
`).map(o=>{let s=o.match(n.other.beginningSpace);if(s===null)return o;let[a]=s;return o.slice(Math.min(a.length,i.length))}).join(`
|
|
94
|
-
`)}function
|
|
95
|
-
]`).replace("lheading",
|
|
96
|
-
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:
|
|
97
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=
|
|
94
|
+
`)}function zu(e,t,n,r){if(!t.includes("<"))return!1;for(let i=0;i<t.length;i++){if(t[i]==="\\"){i++;continue}if(t[i]==="`"){let a=r.inline.code.exec(t.slice(i));if(a){i+=a[0].length-1;continue}}if(t[i]!=="<")continue;let o=e.slice(n+i),s=r.inline.tag.exec(o)||r.inline.autolink.exec(o);if(s){if(s[0].length>t.length-i)return!0;i+=s[0].length-1}}return!1}function dn(e,t){if(Array.isArray(t))for(let n=0;n<t.length;n++)e.push(t[n]);else e.push(t)}function ce(e,t){return gn.parse(e,t)}function yg(...e){return gn.use(...e),ce.defaults=gn.defaults,Bu(ce.defaults),ce}var yn,mn,ym,xe,vm,wm,km,mr,$m,Qo,Uu,Gu,xm,es,bm,ts,Em,Sm,gr,ns,Tm,Hu,Am,Rm,Cm,rs,Iu,jm,Im,_m,Pm,Wu,Om,At,On,yr,Nm,Lm,Vu,Dm,Mm,Fm,qu,zm,Bm,Um,Gm,Ku,Hm,Wm,Vm,qm,Km,Zm,Jm,Xm,Ym,Qm,eg,tg,ng,rg,ig,Zu,xi,og,sg,ag,_u,cg,ug,Pu,lg,pg,is,fg,Zo,hg,ki,hr,dg,Ou,Pn,mt,Ei,os,gt,dr,ss,gn,$$,x$,b$,E$,S$,T$,Ju=U(()=>{yn=Yo();mn={exec:()=>null};ym=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),xe={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,blockquoteMarkerWhitespace:/^( {0,3}>)([ \t]+)/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:hn(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:hn(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:hn(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:hn(e=>new RegExp(`^ {0,${e}}#{1,6}(?:\\s|$)`)),pedanticHeadingBeginRegex:hn(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:hn(e=>new RegExp(`^ {0,${e}}(?:</?(?:${gr})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`,"i")),blockquoteBeginRegex:hn(e=>new RegExp(`^ {0,${e}}>`))},vm=/^(?:[ \t]*(?:\n|$))+/,wm=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,km=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,mr=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,$m=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Qo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Uu=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Gu=K(Uu).replace(/bull/g,Qo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),xm=K(Uu).replace(/bull/g,Qo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),es=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,bm=/^[^\n]+/,ts=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Em=K(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",ts).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Sm=K(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Qo).getRegex(),gr="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ns=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Tm=K("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?:[ \\t]+|\\n|/?>|$)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ns).replace("tag",gr).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Hu=e=>K(es).replace("hr",mr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",gr).getRegex(),Am=Hu(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Rm=Hu(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Cm=K(/^( {0,3}> ?(?:(?![ \t]*(?:\n|$))(paragraph)|[^\n]*)(?:\n|$))+/).replace("paragraph",Rm).getRegex(),rs={blockquote:Cm,code:wm,def:Em,fences:km,heading:$m,hr:mr,html:Tm,lheading:Gu,list:Sm,newline:vm,paragraph:Am,table:mn,text:bm},Iu=K("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",mr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",gr).getRegex(),jm={...rs,lheading:xm,table:Iu,paragraph:K(es).replace("hr",mr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Iu).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",gr).getRegex()},Im={...rs,html:K(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ns).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:mn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:K(es).replace("hr",mr).replace("heading",` *#{1,6} *[^
|
|
95
|
+
]`).replace("lheading",Gu).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},_m=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Pm=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Wu=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Om=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,At=/[\p{P}\p{S}]/u,On=/[\s\p{P}\p{S}]/u,yr=/[^\s\p{P}\p{S}]/u,Nm=K(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,On).getRegex(),Lm=/[\p{Pi}\p{Ps}"']/u,Vu=/(?!~)[\p{P}\p{S}]/u,Dm=/(?!~)[\s\p{P}\p{S}]/u,Mm=/(?:[^\s\p{P}\p{S}]|~)/u,Fm=K(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",ym?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),qu=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,zm=K(qu,"u").replace(/punct/g,At).getRegex(),Bm=K(qu,"u").replace(/punct/g,Vu).getRegex(),Um=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Gm=K(Um,"u").replace(/openQuote/g,Lm).replace(/punct/g,At).getRegex(),Ku="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Hm=K(Ku,"gu").replace(/notPunctSpace/g,yr).replace(/punctSpace/g,On).replace(/punct/g,At).getRegex(),Wm=K(Ku,"gu").replace(/notPunctSpace/g,Mm).replace(/punctSpace/g,Dm).replace(/punct/g,Vu).getRegex(),Vm="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",qm=K(Vm,"gu").replace(/notPunctSpace/g,yr).replace(/punctSpace/g,On).replace(/punct/g,At).getRegex(),Km=K("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,yr).replace(/punctSpace/g,On).replace(/punct/g,At).getRegex(),Zm="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Jm=K(Zm,"gu").replace(/notPunctSpace/g,yr).replace(/punctSpace/g,On).replace(/punct/g,At).getRegex(),Xm=K(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,At).getRegex(),Ym="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Qm=K(Ym,"gu").replace(/notPunctSpace/g,yr).replace(/punctSpace/g,On).replace(/punct/g,At).getRegex(),eg=K(/\\(punct)/,"gu").replace(/punct/g,At).getRegex(),tg=K(/(`+)(?:[^`]|[^`][\s\S]*?[^`])\1(?!`)|`+|\\(punct)/,"gu").replace(/punct/g,At).getRegex(),ng=K(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),rg=K(ns).replace("(?:-->|$)","-->").getRegex(),ig=K("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",rg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Zu=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,xi=K(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Zu).getRegex(),og=K(/^!?\[(label)\]\([ \t\n]*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?[ \t\n]*\)/).replace("label",xi).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),sg=K(/^!?\[(label)\]\[(ref)\]/).replace("label",xi).replace("ref",ts).getRegex(),ag=K(/^!?\[(ref)\](?:\[\])?/).replace("ref",ts).getRegex(),_u=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,cg=K(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Zu).getRegex(),ug=K("reflink|nolink(?!\\()","g").replace("reflink",K(/^!?\[(label)\]\[(ref)\]/).replace("label",cg).replace("ref",_u).getRegex()).replace("nolink",K(/^!?\[(ref)\](?:\[\])?/).replace("ref",_u).getRegex()).getRegex(),Pu=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,lg=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,pg=K(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,lg).getRegex(),is={_backpedal:mn,anyPunctuation:eg,anyPunctuationOutsideCode:tg,autolink:ng,blockSkip:Fm,br:Wu,code:Pm,del:mn,delLDelim:mn,delRDelim:mn,emStrongLDelim:zm,emStrongRDelimAst:Hm,emStrongRDelimUnd:Km,escape:_m,link:og,nolink:ag,punctuation:Nm,reflink:sg,reflinkSearch:ug,tag:ig,text:Om,url:mn},fg={...is,emStrongLDelim:Gm,emStrongRDelimAst:qm,emStrongRDelimUnd:Jm,link:K(/^!?\[(label)\]\((.*?)\)/).replace("label",xi).getRegex(),reflink:K(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",xi).getRegex()},Zo={...is,emStrongRDelimAst:Wm,emStrongLDelim:Bm,delLDelim:Xm,delRDelim:Qm,url:K(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",pg).replace("protocol",Pu).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:K(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",Pu).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},hg={...Zo,br:K(Wu).replace("{2,}","*").getRegex(),text:K(Zo.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},ki={normal:rs,gfm:jm,pedantic:Im},hr={normal:is,gfm:Zo,breaks:hg,pedantic:fg},dg={"&":"&","<":"<",">":">",'"':""","'":"'"},Ou=e=>dg[e];Pn=class{options;rules;lexer;constructor(e){this.options=e||yn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:Du(t[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=gg(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=Jt(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceTabChar.test(r))&&(n=r.trim())}return{type:"heading",raw:Jt(t[0],`
|
|
96
|
+
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Jt(t[0],`
|
|
97
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Jt(t[0],`
|
|
98
98
|
`).split(`
|
|
99
99
|
`),r="",i="",o=[];for(;n.length>0;){let s=!1,a=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))a.push(n[c]),s=!0;else if(!s)a.push(n[c]);else break;n=n.slice(c);let u=a.join(`
|
|
100
|
-
`),
|
|
100
|
+
`),p=u.replace(this.rules.other.blockquoteMarkerWhitespace,(d,m,h)=>m+$i(h,m.length)).replace(this.rules.other.blockquoteSetextReplace,`
|
|
101
101
|
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
|
|
102
102
|
${u}`:u,i=i?`${i}
|
|
103
|
-
${
|
|
104
|
-
`),h=
|
|
105
|
-
`+
|
|
106
|
-
`).length:0,
|
|
107
|
-
${
|
|
108
|
-
`)}`),i=i.substring(0,i.length-
|
|
103
|
+
${p}`:p;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,o,!0),this.lexer.state.top=l,n.length===0)break;let f=o.at(-1);if(f?.type==="code"||f?.type==="heading"||f?.type==="hr"||f?.type==="html")break;if(f?.type==="blockquote"){let d=f,m=n.join(`
|
|
104
|
+
`),h=d.raw+`
|
|
105
|
+
`+m.replace(this.rules.other.blockquoteSetextReplace2,""),g=this.blockquote(h);o[o.length-1]=g;let v=h.substring(g.raw.length).replace(/^\n/,""),y=v?v.split(`
|
|
106
|
+
`).length:0,R=y?n.slice(0,-y):n;R.length>0&&(r=`${r}
|
|
107
|
+
${R.join(`
|
|
108
|
+
`)}`),i=i.substring(0,i.length-d.text.length)+g.text;break}else if(f?.type==="list"){let d=f,m=d.raw+`
|
|
109
109
|
`+n.join(`
|
|
110
|
-
`),h=this.list(
|
|
111
|
-
`).length:0;if(
|
|
110
|
+
`),h=this.list(m);o[o.length-1]=h;let g=h.raw.length>d.raw.length?m.slice(d.raw.length+1,h.raw.length).split(`
|
|
111
|
+
`).length:0;if(g>0){let v=n.slice(0,g).join(`
|
|
112
112
|
`);r=`${r}
|
|
113
113
|
${v}`,i=`${i}
|
|
114
|
-
${v}`}n=n.slice(
|
|
115
|
-
`,1)[0],
|
|
116
|
-
`,1)[0],v=!h.trim(),
|
|
117
|
-
`,1)[0],
|
|
118
|
-
`+
|
|
119
|
-
${
|
|
120
|
-
`+j}v=!
|
|
121
|
-
`),href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
122
|
-
`):[],o={type:"table",raw:
|
|
123
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?o.align.push("right"):this.rules.other.tableAlignCenter.test(s)?o.align.push("center"):this.rules.other.tableAlignLeft.test(s)?o.align.push("left"):o.align.push(null);for(let s=0;s<n.length;s++)o.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:o.align[s]});for(let s of i)o.rows.push(
|
|
114
|
+
${v}`}n=n.slice(g);continue}}return{type:"blockquote",raw:r,tokens:o,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=e,r=()=>n.length-e.length,i=t[1].trim(),o=i.length>1,s={type:"list",raw:"",ordered:o,start:o?+i.slice(0,-1):"",loose:!1,items:[]};i=o?`\\d{1,9}\\${i.slice(-1)}`:`\\${i}`,this.options.pedantic&&(i=o?i:"[*+-]");let a=this.rules.other.listItemRegex(i),c=!1;for(;e;){let p=!1,l="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;let f=r();e=e.substring(t[0].length);let d=t[2].split(`
|
|
115
|
+
`,1)[0],m=t[1].length,h=this.options.pedantic?$i(d,m):d.replace(this.rules.other.leadingSpaceTab,A=>$i(A,m)),g=e.split(`
|
|
116
|
+
`,1)[0],v=!h.trim(),y=0;if(this.options.pedantic?(y=2,l=h.trimStart()):v?y=m+1:(y=h.search(this.rules.other.nonSpaceChar),y=y>4?1:y,l=h.slice(y),y+=m),v&&this.rules.other.blankLine.test(g)&&(e=e.substring(g.length+1),p=!0),!p){let A=this.rules.other.nextBulletRegex(y),k=this.rules.other.hrRegex(y),w=this.rules.other.fencesBeginRegex(y),T=this.options.pedantic?this.rules.other.pedanticHeadingBeginRegex(y):this.rules.other.headingBeginRegex(y),S=this.rules.other.htmlBeginRegex(y),C=this.rules.other.blockquoteBeginRegex(y);for(;e;){let $=e.split(`
|
|
117
|
+
`,1)[0],E;if(g=$,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),E=g):E=g.replace(this.rules.other.leadingSpaceTab,j=>$i(j)),w.test(g)||T.test(g)||S.test(g)||C.test(g)||A.test(g)||k.test(g))break;if(E.search(this.rules.other.nonSpaceChar)>=y||!g.trim())l+=`
|
|
118
|
+
`+E.slice(y);else{if(v||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||w.test(h)||T.test(h)||k.test(h))break;let j=!this.options.pedantic&&/^ {0,3}(?:=+|-+) *$/.test(g)&&this.rules.block.lheading.test(`${h}
|
|
119
|
+
${g}`)?` ${E.replace(/^ {0,3}/,"")}`:g;l+=`
|
|
120
|
+
`+j}v=!g.trim(),e=e.substring($.length+1),h=E.slice(y)}}let R=n.slice(f,r());s.loose||(c?s.loose=!0:this.rules.other.doubleBlankLine.test(R)&&(c=!0)),s.items.push({type:"list_item",raw:R,task:!!this.options.gfm&&this.rules.other.listIsTask.test(l),loose:!1,text:l,tokens:[]})}let u=s.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;s.raw=n.slice(0,r()).trimEnd();for(let p of s.items)if(this.lexer.state.top=!1,p.tokens=this.lexer.blockTokens(p.text,[]),!s.loose){let l=p.tokens.filter(d=>d.type==="space"),f=l.length>0&&l.some(d=>this.rules.other.anyLine.test(d.raw));s.loose=f}for(let p of s.items){let l=p.tokens[0];if(p.task&&(l?.type==="text"||l?.type==="paragraph")){p.text=p.text.replace(this.rules.other.listReplaceTask,""),l.raw=l.raw.replace(this.rules.other.listReplaceTask,""),l.text=l.text.replace(this.rules.other.listReplaceTask,"");for(let d=this.lexer.inlineQueue.length-1;d>=0;d--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)){this.lexer.inlineQueue[d].src=this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask,"");break}let f=this.rules.other.listTaskCheckbox.exec(p.raw);if(f){let d={type:"checkbox",raw:f[0]+" ",checked:f[0]!=="[ ]"};p.checked=d.checked,s.loose?p.tokens[0]&&["paragraph","text"].includes(p.tokens[0].type)&&"tokens"in p.tokens[0]&&p.tokens[0].tokens?(p.tokens[0].raw=d.raw+p.tokens[0].raw,p.tokens[0].text=d.raw+p.tokens[0].text,p.tokens[0].tokens.unshift(d)):p.tokens.unshift({type:"paragraph",raw:d.raw,text:d.raw,tokens:[d]}):p.tokens.unshift(d)}}else p.task&&(p.task=!1)}if(s.loose)for(let p of s.items){p.loose=!0;for(let l of p.tokens)l.type==="text"&&(l.type="paragraph")}return s}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=Du(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){if(!this.rules.other.startAngleBracket.test(t[2])&&Mu(t[2],"()")!==-1)return;let n=bi(t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:Jt(t[0],`
|
|
121
|
+
`),href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Lu(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
122
|
+
`):[],o={type:"table",raw:Jt(t[0],`
|
|
123
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?o.align.push("right"):this.rules.other.tableAlignCenter.test(s)?o.align.push("center"):this.rules.other.tableAlignLeft.test(s)?o.align.push("left"):o.align.push(null);for(let s=0;s<n.length;s++)o.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:o.align[s]});for(let s of i)o.rows.push(Lu(s,o.header.length).map((a,c)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:o.align[c]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:Jt(t[0],`
|
|
124
124
|
`),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
125
|
-
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&
|
|
126
|
-
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.state.inRawBlock=!1,this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(
|
|
125
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&zu(e,t[1],n,this.rules))return;let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let s=Jt(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{let s=Mu(t[2],"()");if(s===-2)return;if(s>-1){let a=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,a).trim(),t[3]=""}}let i=t[2],o="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?i=i.slice(1):i=i.slice(1,-1)),Fu(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&zu(e,n[1],r,this.rules))return;let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=t[bi(i)];if(!o){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return Fu(n,o,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4])return;let i=r[0][0],o=n===i,s=t.length-e.length,a=s;for(;!this.options.pedantic&&a>0&&t[a-1]===i;)a--;let c=[...t.slice(Math.max(0,a-2),a)].at(-1)??"",u=c==="*"||c==="_"||!!this.rules.inline.punctuation.exec(c);a<s&&(n=c);let p=a<s?u:!!this.rules.inline.punctuation.exec(n);if(r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;let l=r[1]||r[3]||"";if(!l||!n||p){let f=[...r[0]].length-1,d,m,h=f,g=0,v=s-a+f,y=!this.options.pedantic&&!!c.trim()&&(!!l||i==="*"&&!u),R=i==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(R.lastIndex=0,t=t.slice(-1*e.length+f);(r=R.exec(t))!==null;){if(d=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!d)continue;if(m=[...d].length,r[3]||r[4]){h+=m;continue}else if(r[5]||r[6]||y){if(o&&(r[5]||r[6]))break;if(v%3&&!((v+m)%3)){g+=m;continue}}if(h-=m,h>0)continue;m=Math.min(m,m+h+g);let A=[...r[0]][0].length,k=e.slice(0,f+r.index+A+m);if(Math.min(f,m)%2){let T=k.slice(1,-1);return{type:"em",raw:k,text:T,tokens:this.lexer.inlineTokens(T)}}let w=k.slice(2,-2);return{type:"strong",raw:k,text:w,tokens:this.lexer.inlineTokens(w)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,o,s,a=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+i);(r=c.exec(t))!==null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o||(s=[...o].length,s!==i))continue;if(r[3]||r[4]){a+=s;continue}if(a-=s,a>0)continue;s=Math.min(s,s+a);let u=[...r[0]][0].length,p=e.slice(0,i+r.index+u+s),l=p.slice(i,-i);return{type:"del",raw:p,text:l,tokens:this.lexer.inlineTokens(l)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:n?t[0]:mg(t[0]),escaped:n}}}},mt=class Jo{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||yn,this.options.tokenizer=this.options.tokenizer||new Pn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let n={other:xe,block:ki.normal,inline:hr.normal};this.options.pedantic?(n.block=ki.pedantic,n.inline=hr.pedantic):this.options.gfm&&(n.block=ki.gfm,this.options.breaks?n.inline=hr.breaks:n.inline=hr.gfm),this.tokenizer.rules=n}static get rules(){return{block:ki,inline:hr}}static lex(t,n){return new Jo(n).lex(t)}static lexInline(t,n){return new Jo(n).inlineTokens(t)}lex(t){t=t.replace(xe.carriageReturn,`
|
|
126
|
+
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.state.inRawBlock=!1,this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(xe.tabCharGlobal," ").replace(xe.spaceLine,""));let i=1/0;for(;t;){if(t.length<i)i=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let o;if(this.options.extensions?.block?.some(a=>(o=a.call({lexer:this},t,n))?(t=t.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(t)){t=t.substring(o.raw.length);let a=n.at(-1);o.raw.length===1&&a!==void 0?a.raw+=`
|
|
127
127
|
`:n.push(o);continue}if(o=this.tokenizer.code(t)){t=t.substring(o.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
128
128
|
`)?"":`
|
|
129
129
|
`)+o.raw,a.text+=`
|
|
130
130
|
`+o.text,this.inlineQueue.at(-1).src=a.text):n.push(o);continue}if(o=this.tokenizer.fences(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.heading(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.hr(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.blockquote(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.list(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.html(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.def(t)){t=t.substring(o.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
131
131
|
`)?"":`
|
|
132
132
|
`)+o.raw,a.text+=`
|
|
133
|
-
`+o.raw,this.inlineQueue.at(-1).src=a.text):(this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title}),n.push(o));continue}if(o=this.tokenizer.table(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(t)){t=t.substring(o.raw.length),n.push(o);continue}let s=t;if(this.options.extensions?.startBlock){let a=1/0,c=t.slice(1),u;this.options.extensions.startBlock.forEach(
|
|
133
|
+
`+o.raw,this.inlineQueue.at(-1).src=a.text):(this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title}),n.push(o));continue}if(o=this.tokenizer.table(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(t)){t=t.substring(o.raw.length),n.push(o);continue}let s=t;if(this.options.extensions?.startBlock){let a=1/0,c=t.slice(1),u;this.options.extensions.startBlock.forEach(p=>{u=p.call({lexer:this},c),typeof u=="number"&&u>=0&&(a=Math.min(a,u))}),a<1/0&&a>=0&&(s=t.substring(0,a+1))}if(this.state.top&&(o=this.tokenizer.paragraph(s))){let a=n.at(-1);r&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(`
|
|
134
134
|
`)?"":`
|
|
135
135
|
`)+o.raw,a.text+=`
|
|
136
136
|
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(o),r=s.length!==t.length,t=t.substring(o.raw.length);continue}if(o=this.tokenizer.text(t)){t=t.substring(o.raw.length);let a=n.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
137
137
|
`)?"":`
|
|
138
138
|
`)+o.raw,a.text+=`
|
|
139
|
-
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(o);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=r[0],o=i.lastIndexOf("[");if(!(i.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,
|
|
140
|
-
`:"";return r?'<pre><code class="language-'+
|
|
141
|
-
`:"<pre><code>"+(n?i:
|
|
139
|
+
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(o);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=r[0],o=i.lastIndexOf("[");if(!(i.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,bi(i.slice(o+1,-1))))&&!(o>1&&this.linkInText(i.slice(1,o-1))))return!0}return!1}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let r=this.state.linkParenPossible;this.state.linkParenPossible=r&&t.includes(")");try{return this.#e(t,n)}finally{this.state.linkParenPossible=r}}#e(t,n){let r=t.includes("*")||t.includes("_")||t.includes("~")||this.options.hooks?.emStrongMask||this.tokenizer.emStrong!==Pn.prototype.emStrong||this.tokenizer.del!==Pn.prototype.del?this.#t(t):t,i=!1,o="",s=1/0;for(;t;){if(t.length<s)s=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}i||(o=""),i=!1;let a;if(this.options.extensions?.inline?.some(u=>(a=u.call({lexer:this},t,n))?(t=t.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.escape(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.tag(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.link(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(a.raw.length);let u=n.at(-1);a.type==="text"&&u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):n.push(a);continue}if(a=this.tokenizer.emStrong(t,r,o)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.codespan(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.br(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.del(t,r,o)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.autolink(t)){t=t.substring(a.raw.length),n.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(t))){t=t.substring(a.raw.length),n.push(a);continue}let c=t;if(this.options.extensions?.startInline){let u=1/0,p=t.slice(1),l;this.options.extensions.startInline.forEach(f=>{l=f.call({lexer:this},p),typeof l=="number"&&l>=0&&(u=Math.min(u,l))}),u<1/0&&u>=0&&(c=t.substring(0,u+1))}if(a=this.tokenizer.inlineText(c)){t=t.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(o=a.raw.slice(-1)),i=!0;let u=n.at(-1);u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):n.push(a);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}#t(t){let n=t;if(this.tokens.links&&t.includes("[")){let r=this.tokenizer.rules.inline.reflinkSearch,i=o=>{let s=o.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,bi(o.slice(s+1,-1))))return o;if(s>1&&o.charAt(0)!=="!"){let a=o.slice(1,s-1);if(this.linkInText(a))return"["+a.replace(r,i)+"]["+"a".repeat(o.length-s-2)+"]"}return"["+"a".repeat(o.length-2)+"]"};n=n.replace(r,i)}return n=n.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(r,i,o)=>o?"+".repeat(r.length):i?i+r.slice(i.length,-i.length).replace(/`/g,"+")+i:r),n=n.replace(this.tokenizer.rules.inline.blockSkip,(r,i,o)=>{let s=o?o.length:0;return r.slice(0,s)+"["+"a".repeat(r.length-s-2)+"]"}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n,n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Ei=class{options;parser;constructor(e){this.options=e||yn}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(xe.notSpaceStart)?.[0],i=e?e.replace(xe.endingNewline,"")+`
|
|
140
|
+
`:"";return r?'<pre><code class="language-'+tt(r)+'">'+(n?i:tt(i,!0))+`</code></pre>
|
|
141
|
+
`:"<pre><code>"+(n?i:tt(i,!0))+`</code></pre>
|
|
142
142
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
143
143
|
${this.parser.parse(e)}</blockquote>
|
|
144
144
|
`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
@@ -154,91 +154,93 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
154
154
|
`}tablerow({text:e}){return`<tr>
|
|
155
155
|
${e}</tr>
|
|
156
156
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
157
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${
|
|
158
|
-
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+
|
|
157
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${tt(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:i}){let o=i?tt(n,!0):this.parser.parseInline(r),s=Nu(e);if(s===null)return o;e=tt(s,i);let a='<a href="'+e+'"';return t&&(a+=' title="'+tt(t)+'"'),a+=">"+o+"</a>",a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Nu(e);if(i===null)return tt(n);e=i;let o=`<img src="${tt(e)}" alt="${tt(n)}"`;return t&&(o+=` title="${tt(t)}"`),o+=">",o}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:tt(e.text)}},os=class{parser;strong({text:e,tokens:t}){return t?this.parser.parseInline(t,this):e}em({text:e,tokens:t}){return t?this.parser.parseInline(t,this):e}codespan({text:e}){return e}del({text:e,tokens:t}){return t?this.parser.parseInline(t,this):e}html({text:e}){return e}text({text:e}){return e}link({text:e,tokens:t}){return t?this.parser.parseInline(t,this):e}image({text:e,tokens:t}){return t?this.parser.parseInline(t,this):e}br(){return""}checkbox({raw:e}){return e}},gt=class Xo{options;renderer;textRenderer;constructor(t){this.options=t||yn,this.options.renderer=this.options.renderer||new Ei,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new os,this.textRenderer.parser=this}static parse(t,n){return new Xo(n).parse(t)}static parseInline(t,n){return new Xo(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let r=0;r<t.length;r++){let i=t[r];if(this.options.extensions?.renderers?.[i.type]){let s=i,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=a||"";continue}}let o=i;switch(o.type){case"space":{n+=this.renderer.space(o);break}case"hr":{n+=this.renderer.hr(o);break}case"heading":{n+=this.renderer.heading(o);break}case"code":{n+=this.renderer.code(o);break}case"table":{n+=this.renderer.table(o);break}case"blockquote":{n+=this.renderer.blockquote(o);break}case"list":{n+=this.renderer.list(o);break}case"checkbox":{n+=this.renderer.checkbox(o);break}case"html":{n+=this.renderer.html(o);break}case"def":{n+=this.renderer.def(o);break}case"paragraph":{n+=this.renderer.paragraph(o);break}case"text":{n+=this.renderer.text(o);break}default:{let s='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let r="";for(let i=0;i<t.length;i++){let o=t[i];if(this.options.extensions?.renderers?.[o.type]){let a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(o.type)){r+=a||"";continue}}let s=o;switch(s.type){case"escape":{r+=n.text(s);break}case"html":{r+=n.html(s);break}case"link":{r+=n.link(s);break}case"image":{r+=n.image(s);break}case"checkbox":{r+=n.checkbox(s);break}case"strong":{r+=n.strong(s);break}case"em":{r+=n.em(s);break}case"codespan":{r+=n.codespan(s);break}case"br":{r+=n.br(s);break}case"del":{r+=n.del(s);break}case"text":{r+=n.text(s);break}default:{let a='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return r}},dr=class{options;block;constructor(e){this.options=e||yn}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?mt.lex:mt.lexInline}provideParser(e=this.block){return e?gt.parse:gt.parseInline}};ss=class{defaults=Yo();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=gt;Renderer=Ei;TextRenderer=os;Lexer=mt;Tokenizer=Pn;Hooks=dr;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(dn(n,t.call(this,r)),r.type){case"table":{let i=r;for(let o of i.header)dn(n,this.walkTokens(o.tokens,t));for(let o of i.rows)for(let s of o)dn(n,this.walkTokens(s.tokens,t));break}case"list":{let i=r;dn(n,this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(o=>{let s=i[o].flat(1/0);dn(n,this.walkTokens(s,t))}):i.tokens&&dn(n,this.walkTokens(i.tokens,t))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let o=t.renderers[i.name];o?t.renderers[i.name]=function(...s){let a=i.renderer.apply(this,s);return a===!1&&(a=o.apply(this,s)),a}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=t[i.level];o?o.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new Ei(this.defaults);for(let o in n.renderer){if(!(o in i))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let s=o,a=n.renderer[s],c=i[s];i[s]=(...u)=>{let p=a.apply(i,u);return p===!1&&(p=c.apply(i,u)),p||""}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new Pn(this.defaults);for(let o in n.tokenizer){if(!(o in i))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let s=o,a=n.tokenizer[s],c=i[s];i[s]=(...u)=>{let p=a.apply(i,u);return p===!1&&(p=c.apply(i,u)),p}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new dr;for(let o in n.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let s=o,a=n.hooks[s],c=i[s];dr.passThroughHooks.has(o)?i[s]=u=>{if(i.options.async&&dr.passThroughHooksRespectAsync.has(o))return(async()=>{let l=await a.call(i,u);return c.call(i,l)})();let p=a.call(i,u);return c.call(i,p)}:i[s]=(...u)=>{if(i.options.async)return(async()=>{let l=await a.apply(i,u);return l===!1&&(l=await c.apply(i,u)),l})();let p=a.apply(i,u);return p===!1&&(p=c.apply(i,u)),p}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,o=n.walkTokens;r.walkTokens=function(s){let a=[];return a.push(o.call(this,s)),i&&dn(a,i.call(this,s)),a}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return mt.lex(e,t??this.defaults)}parser(e,t){return gt.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let s=i.hooks?await i.hooks.preprocess(t):t,a=await(i.hooks?await i.hooks.provideLexer(e):e?mt.lex:mt.lexInline)(s,i),c=i.hooks?await i.hooks.processAllTokens(a):a;i.walkTokens&&await Promise.all(this.walkTokens(c,i.walkTokens));let u=await(i.hooks?await i.hooks.provideParser(e):e?gt.parse:gt.parseInline)(c,i);return i.hooks?await i.hooks.postprocess(u):u})().catch(o);try{i.hooks&&(t=i.hooks.preprocess(t));let s=(i.hooks?i.hooks.provideLexer(e):e?mt.lex:mt.lexInline)(t,i);i.hooks&&(s=i.hooks.processAllTokens(s)),i.walkTokens&&this.walkTokens(s,i.walkTokens);let a=(i.hooks?i.hooks.provideParser(e):e?gt.parse:gt.parseInline)(s,i);return i.hooks&&(a=i.hooks.postprocess(a)),a}catch(s){return o(s)}}}onError(e,t){return n=>{if(n.message+=`
|
|
158
|
+
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+tt(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},gn=new ss;ce.options=ce.setOptions=function(e){return gn.setOptions(e),ce.defaults=gn.defaults,Bu(ce.defaults),ce};ce.getDefaults=Yo;ce.defaults=yn;ce.use=yg;ce.walkTokens=function(e,t){return gn.walkTokens(e,t)};ce.parseInline=gn.parseInline;ce.Parser=gt;ce.parser=gt.parse;ce.Renderer=Ei;ce.TextRenderer=os;ce.Lexer=mt;ce.lexer=mt.lex;ce.Tokenizer=Pn;ce.Hooks=dr;ce.parse=ce;$$=ce.options,x$=ce.setOptions,b$=ce.walkTokens,E$=ce.parseInline,S$=gt.parse,T$=mt.lex});import{spawn as vg}from"node:child_process";import{randomBytes as Xu}from"node:crypto";import{readFileSync as wg}from"node:fs";import{createServer as kg}from"node:http";function Eg(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">")}function Qu(e,t){if(t==="prompt")return Yu.parse(e,{async:!1});let n="`".repeat(Math.max(3,...(e.match(/`+/g)??[]).map(i=>i.length+1))),r=t==="node"?"js":t==="tsx"||t==="bun"?"ts":"bash";return Yu.parse(`${n}${r}
|
|
159
159
|
${e}
|
|
160
|
-
${n}`,{async:!1})}function
|
|
161
|
-
`):`none needed: the token is defined in ${
|
|
160
|
+
${n}`,{async:!1})}function el(e){try{let t=vg(process.platform==="darwin"?"open":"xdg-open",[e],{detached:!0,stdio:"ignore"});t.on("error",()=>{}),t.unref()}catch{}}function Sg(e){return new Promise((t,n)=>{let r=0,i=[];e.on("data",o=>{r+=o.length,r>$g?(n(new Error("The request is too large.")),e.destroy()):i.push(o)}),e.on("end",()=>t(Buffer.concat(i).toString("utf8"))),e.on("error",n)})}function tl(e,t){let n=Xu(24).toString("base64url"),r=Xu(16).toString("base64"),i=No(wg(Ut("cli","templates","editor.html"),"utf8"),{nonce:r}),o={"cache-control":"no-store","content-security-policy":`default-src 'none'; script-src 'nonce-${r}'; style-src 'nonce-${r}' ${xg}; connect-src 'self'; img-src 'self' data:; base-uri 'none'; form-action 'none'; frame-ancestors 'none'`,"referrer-policy":"no-referrer","x-content-type-options":"nosniff"};return new Promise((s,a)=>{let c=0,u,p,l=v=>{clearTimeout(u),process.off("SIGINT",f),p?.(v.outcome),m.close(),m.closeAllConnections(),s(v)},f=()=>l({outcome:"cancelled"}),d=()=>{clearTimeout(u),u=setTimeout(()=>l({outcome:"expired"}),bg)},m=kg((v,y)=>{g(v,y).catch(R=>{y.headersSent||h(y,500,{error:R instanceof Error?R.message:String(R)})})});function h(v,y,R,A){let k=typeof R=="string";v.writeHead(y,{...o,"content-type":k?"text/html; charset=utf-8":"application/json; charset=utf-8"}),v.end(k?R:JSON.stringify(R),A)}async function g(v,y){let R=`http://127.0.0.1:${c}`,A=v.url?.startsWith(`/${n}/`)?v.url.slice(n.length+2):void 0;if(v.headers.host!==`127.0.0.1:${c}`||A===void 0)return h(y,404,{error:"Not found."});if(d(),v.method==="GET"&&A==="")return h(y,200,i);if(v.method!=="POST"||v.headers.origin!==R)return h(y,403,{error:"Forbidden."});let k=JSON.parse(await Sg(v)||"{}");if(A==="state")return h(y,200,e.state());if(A==="preview")return h(y,200,{html:e.preview(String(k.content??""))});if(A==="cancel")return h(y,200,{},()=>l({outcome:"cancelled"}));if(A==="save"){let w=await e.save(k);return w.saved?h(y,200,w.result,()=>l({outcome:"saved",result:w.result})):h(y,422,{error:w.error})}return h(y,404,{error:"Not found."})}m.on("error",a),m.listen(0,"127.0.0.1",()=>{c=m.address().port;let v=`http://127.0.0.1:${c}/${n}/`;process.on("SIGINT",f),d(),p=t(v)})})}var $g,xg,bg,Yu,nl=U(()=>{"use strict";Ju();Ie();Pe();$g=5*1024*1024,xg="https://cdn.jsdelivr.net/npm/daisyui@5.7.50/",bg=1800*1e3;Yu=new ss({renderer:{html:({text:e})=>Eg(e)}})});import{readFileSync as Tg}from"node:fs";import{parseArgs as Ag}from"node:util";function rl(e){return e instanceof Error?e.message:String(e)}var Rg,il,ol=U(()=>{"use strict";qe();qo();fr();Ge();nl();Pe();Xe();Ee();an();et();Rg=["code","cursor","zed","subl","webstorm","vim","nano","emacs"];il={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},path:{description:"Dotted path of the token to edit",type:"positional",required:!1},project:{description:"Select a registered project",type:"string"},content:{description:"New content; - reads standard input",type:"string"},description:{description:"New description; an empty value removes it",type:"string"},tag:{description:"New tag set (repeatable); an empty value removes all tags",type:"string"},private:{description:"Replace the token content with a private placeholder on export",type:"boolean"},"no-private":{description:"Include the token content in exports",type:"boolean"},shared:{description:"Change a shared token for every project",type:"boolean"},override:{description:"Override a shared token in the selected project",type:"boolean"}},meta:{description:"Edit the content, metadata, or export privacy of a token",name:"edit"},async run({rawArgs:e}){try{let{values:n,positionals:r}=Ag({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},project:{type:"string"},content:{type:"string"},description:{type:"string"},tag:{type:"string",multiple:!0},private:{type:"boolean"},"no-private":{type:"boolean"},shared:{type:"boolean"},override:{type:"boolean"}}}),i=n.agent===!0||!!fe(),o=!i&&Ne(),s=i?" --agent":"",a=process.cwd(),c=n.project,u=c?` --project ${Z(c)}`:"";if(n.shared&&n.override)throw new Error(`Choose ${I("--shared")} or ${I("--override")}, not both.`);let p=r[0];if(o){let E=$e(ye({cwd:a,loader:se({cwd:a}),...c?{project:c}:{}}));if((p===void 0||!E.tokens.has(p))&&(p=await Zt({message:"Token to edit",tokens:Tt(E),query:p??""}),!p))return ae("Edit cancelled. Nothing was changed.")}if(p===void 0){We({summary:"Name the token to edit.",details:`Find it with woof get 'TERMS' --search${u}, then run woof edit 'PATH'${u}.`},{template:"edit-path",values:{project:u}}),process.exitCode=1;return}let l=ar(p,{cwd:a,project:c});if(n.override&&!l.override)throw new Error(l.definition.kind==="shared"?`${I(p)} is a shared token, but no project is selected to hold an override. Run edit in a project, or pass ${I("--project NAME")}.`:`${I(p)} is a project token. Only a shared token can get an override.`);let f={...n.content!==void 0?{content:n.content==="-"?Tg(0,"utf8").trimEnd():n.content}:{},...n.description!==void 0?{description:n.description}:{},...n.tag?{tags:n.tag.map(E=>E.trim()).filter(Boolean)}:{},...n.private?{private:!0}:n["no-private"]?{private:!1}:{}},d=Object.keys(f).length>0,m=l.override?[["definition","--shared","all projects (global)",{kind:"shared"}],["override","--override","this project only (override)",l.override]].map(([E,j,_,x])=>{let b=wu(x,a);return{value:E,flag:j,label:_,...b?{hint:b}:{}}}):[],h=n.override?"override":n.shared||!l.override?"definition":void 0,g=!o&&h==="override"&&l.kind==="fixed";if(!o&&(!d&&!g||!h)){let E=l.kind==="inline"?"inline":l.kind==="file"?l.files[0]:`script files: ${l.files.join(", ")||"none"}`,j=l.override?m.map(N=>`${N.flag} ${N.label}${N.hint?`: ${N.hint}`:""}`).join(`
|
|
161
|
+
`):`none needed: the token is defined in ${fn(l.definition)}`,_=l.content??`The content is in ${l.files.join(", ")}.`,x=`woof edit ${Z(p)}${u}${n.private?" --private":n["no-private"]?" --no-private":""}${l.override&&!h?" LAYER":""} --description DESCRIPTION --tag TAG${l.kind==="fixed"?s:` --content -${s} <<'WOOF'
|
|
162
162
|
CONTENT
|
|
163
|
-
WOOF`}`,b=
|
|
164
|
-
Defined in: ${
|
|
165
|
-
Content: ${
|
|
163
|
+
WOOF`}`,b=l.description??"none",O=l.tags.join(", ")||"none";We({summary:`Edit ${p}.`,details:`Type: ${l.type}
|
|
164
|
+
Defined in: ${fn(l.definition)}
|
|
165
|
+
Content: ${E}
|
|
166
166
|
Description: ${b}
|
|
167
|
-
Tags: ${
|
|
167
|
+
Tags: ${O}
|
|
168
|
+
Private: ${l.private?"yes":"no"}
|
|
168
169
|
|
|
169
|
-
${
|
|
170
|
+
${_}
|
|
170
171
|
|
|
171
172
|
Layers:
|
|
172
173
|
${j}
|
|
173
174
|
|
|
174
|
-
${
|
|
175
|
-
`),null);else{let
|
|
176
|
-
`),v=`woof explain ${Z(r)} --project NAME${s?" --agent":""}`;
|
|
177
|
-
`),...
|
|
175
|
+
${x}`,recovery:"Pass only the fields that change."},{template:"edit-draft",values:{path:p,type:l.type,where:fn(l.definition),configuration:l.configuration,location:E,description:b,tags:O,private:l.private?"yes":"no",content:_,layers:j,command:x}}),process.exitCode=1;return}if(!h){let E=await we({message:`Change ${I(p)} for`,options:m.map(({value:j,label:_,hint:x})=>({value:j,label:_,...x?{hint:x}:{}}))});if(!E)return ae("Edit cancelled. Nothing was changed.");h=E}let v=h==="override"?l.override:l.definition,y=m.find(E=>E.value===h)?.label??fn(v),R=h==="override"&&l.kind==="fixed"?$u(p,{cwd:a,project:c}):void 0,A=()=>{R?.remove(),ae("Edit cancelled. Nothing was changed.")},k=async E=>{try{let j=await Vo(p,{...E,...R?{exec:R.exec}:{}},{cwd:a,project:c,layer:h,version:l.version});t(p,v,R?{...j,contentFile:R.files.join(", ")}:j,y)}catch(j){throw R?.remove(),j}};if(d||g)return await k(f);let w=p,T=h,S;if(l.kind==="fixed")ln(`Edit ${I(p)} in an editor ${De("the content is a script file")}`,(R?.files??l.files).flatMap(E=>Rg.map(j=>`${j} ${Z(E)}`)).join(`
|
|
176
|
+
`),null);else{let E=await tl({state:()=>({path:w,type:l.type,where:y,kind:l.kind,files:l.files,content:l.content??""}),preview:j=>Qu(j,l.type),save:async j=>{let _=String(j.content??"");try{return await so(()=>Vo(w,{content:_},{cwd:a,project:c,layer:T,version:l.version,check:!0})),{saved:!0,result:{content:_}}}catch(x){return{saved:!1,error:so(()=>rl(x))}}}},j=>{ln(`Editing ${I(w)} in browser ${De("If it does not open, visit this address. Press Ctrl+C to cancel.")}`,j,null);let _=Qc(()=>el(j));return x=>_(x==="saved"?"Content saved in browser":void 0)});if(E.outcome!=="saved"){Kt({summary:E.outcome==="expired"?"The edit page closed after 30 minutes without activity. Nothing was changed.":"Edit cancelled. Nothing was changed."},null),process.exitCode=E.outcome==="expired"?1:130;return}S=E.result.content}let C=await Qe(`Description ${De("optional")}`,{...l.description?{initialValue:l.description}:{},optional:!0});if(C===void 0)return A();let $=await Qe(`Tags ${De("comma separated - optional")}`,{...l.tags.length?{initialValue:l.tags.join(", ")}:{},optional:!0});if($===void 0)return A();await k({...S!==void 0?{content:S}:{},description:C,tags:$.split(",").map(E=>E.trim()).filter(Boolean)})}catch(n){let r=rl(n);he({summary:"woof could not edit the token.",details:r},{template:"edit-error",values:{details:r}}),process.exitCode=1}function t(n,r,i,o){if(!i.changed)return Kt({summary:`No changes to ${I(n)}.`,details:"The new values match the current token. Nothing was written."},{template:"edit-unchanged",values:{path:n}});let s=r.kind==="project"?` --project ${Z(r.name)}`:"",a=`woof get ${Z(n)}${s}`,c=i.contentFile??"none";Se({summary:`Edited ${I(n)}.`,details:je([["Configuration",i.file],["Content file",c],["Changed in",o]]),recovery:`Check it with ${I(a)}.`},{template:"edit-result",values:{path:n,file:i.file,contentFile:c,where:o,command:`${a} --agent`}})}}}});import{parseArgs as Cg}from"node:util";var sl,al=U(()=>{"use strict";qe();fr();Ge();Pe();Xe();Ee();et();sl={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},project:{description:"Select a registered project",type:"string"},token:{description:"Token address to explain",type:"positional",required:!1}},meta:{description:"Explain a token resolution without executing it",name:"explain"},async run({rawArgs:e}){try{let{values:t,positionals:n}=Cg({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},project:{type:"string"}}});if(n.length>1)throw new Error("Explain accepts one token address.");let r=n[0]??"",i=r.startsWith("$projects.")?Ot(r):void 0;if(i?.project&&t.project&&i.project!==t.project)throw new Error(`Qualified address selects ${I(i.project)}, which contradicts ${I(`--project ${t.project}`)}.`);let o=i?.project??t.project,s=t.agent===!0||!!fe(),a=ye({...o?{project:o}:{},loader:se({cwd:process.cwd()})});if(a.selection==="ambiguous"){let h=a.candidates;if(!s&&process.stdout.isTTY){let g=await we({message:"Project to use",options:h.map(v=>{let y=_e(v);return{value:v.name,label:v.name,...y?{hint:y}:{}}})});if(!g)return ae("Explanation cancelled.");a=ye({project:g,loader:se({cwd:process.cwd()})})}else{let g=h.map(y=>{let R=_e(y),A=`${s?"- ":""}${y.name}`;return R?`${A} ${Le(R)}`:A}).join(`
|
|
177
|
+
`),v=`woof explain ${Z(r)} --project NAME${s?" --agent":""}`;We({summary:"Several projects match this directory.",details:g,recovery:`Retry with ${I(v)}, with NAME replaced by the project name.`},{template:"explain-ambiguous",values:{projects:g,command:v}}),process.exitCode=1;return}}let c=$e(a);if(!s&&process.stdout.isTTY&&!c.tokens.has(i?.path??r)){let h=await Zt({message:"Token to explain",tokens:Tt(c),query:r});if(!h)return ae("Explanation cancelled.");r=h}if(!r)throw new Error(`Name the token to explain. Find it with ${I("woof get 'TERMS' --search")}.`);let u=au(c,r),p=An(a)??"none (shared tokens only)",l=new Map(u.tokens.map(h=>[h.path,h])),f=[],d=h=>{let g=l.get(h);!g||f.includes(g)||(f.push(g),g.references.forEach(d))};d(u.requested);let m=f.map(h=>{let g=c.tokens.get(h.path).value,v=bn(typeof g=="string"?"prompt":g.$type),y=[["Source",h.source.file]];return h.overridden&&y.push(["Overrides",h.overridden.source.file]),h.description!==void 0&&y.push(["Description",h.description]),h.tags!==void 0&&y.push(["Tags",h.tags.join(", ")]),[`${I(h.path)} ${En(h.origin)}${v?` ${v}`:""}`,...[...je(y).split(`
|
|
178
|
+
`),...Me("Reference",[...new Set(h.references)]),...Me("Resource",h.files.map(R=>`${R.markedPath} -> ${R.file}`))].map(R=>` ${R}`)].join(`
|
|
178
179
|
`)}).join(`
|
|
179
180
|
|
|
180
181
|
${s?"\u2193":" \u2193"}
|
|
181
182
|
|
|
182
|
-
`);Se({summary:`Resolution for ${I(u.requested)}`,details:`${
|
|
183
|
+
`);Se({summary:`Resolution for ${I(u.requested)}`,details:`${je([["Project",p]])}
|
|
183
184
|
|
|
184
|
-
${d}`},{template:"explain-result",values:{requested:u.requested,project:l,tokens:d}})}catch(t){let n=t instanceof Error?t.message:String(t);he({summary:"woof could not explain the resolution.",details:n,recovery:`Search the tokens with ${I("woof get")}.`},{template:"explain-error",values:{details:n}}),process.exitCode=1}}}});import{createRequire as Eg}from"module";function Fg(e,t){return Mg(e,t||{},0,0)}function Bg(e,t){return ul(e,{i:2},t&&t.out,t&&t.dictionary)}function ki(e,t){if(t){for(var n=new ue(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(il)return il.encode(e);for(var i=e.length,o=new ue(e.length+(e.length>>1)),s=0,a=function(l){o[s++]=l},r=0;r<i;++r){if(s+5>o.length){var c=new ue(s+8+(i-r<<1));c.set(o),o=c}var u=e.charCodeAt(r);u<128||t?a(u):u<2048?(a(192|u>>6),a(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|e.charCodeAt(++r)&1023,a(240|u>>18),a(128|u>>12&63),a(128|u>>6&63),a(128|u&63)):(a(224|u>>12),a(128|u>>6&63),a(128|u&63))}return Kt(o,0,s)}function hl(e,t){if(t){for(var n="",r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else{if(ls)return ls.decode(e);var i=Ug(e),o=i.s,n=i.r;return n.length&&de(8),o}}function ds(e,t){t||(t={});var n={},r=[];fl(e,"",n,t);var i=0,o=0;for(var s in n){var a=n[s],c=a[0],u=a[1],l=u.level==0?0:8,p=ki(s),f=p.length,m=u.comment,d=m&&ki(m),h=d&&d.length,y=ps(u.extra);f>65535&&de(11);var v=l?Fg(c,u):c,w=v.length,A=Dg();A.p(c),r.push(pl(u,{size:c.length,crc:A.d(),c:v,f:p,m:d,u:f!=s.length||d&&m.length!=h,o:i,compression:l})),i+=30+f+y+w,o+=76+2*(f+y)+(h||0)+w}for(var S=new ue(o+22),g=i,E=o-i,C=0;C<r.length;++C){var p=r[C];ol(S,p.o,p,p.f,p.u,p.c.length);var T=30+p.f.length+ps(p.extra);S.set(p.c,p.o+T),ol(S,i,p,p.f,p.u,p.c.length,p.o,p.m),i+=16+T+(p.m?p.m.length:0)}return Vg(S,i,r.length,E,g),S}function yl(e,t){for(var n={},r=e.length-22;_e(e,r)!=101010256;--r)(!r||e.length-r>65558)&&de(13);var i=We(e,r+8);if(!i)return{};var o=_e(e,r+16),s=_e(e,r-20)==117853008;if(s){var a=_e(e,r-12);s=_e(e,a)==101075792,s&&(i=_e(e,a+32),o=_e(e,a+48))}for(var c=t&&t.filter,u=0;u<i;++u){var l=Wg(e,o,s),p=l[0],f=l[1],m=l[2],d=l[3],h=l[4],y=l[5],v=Hg(e,y);o=h,(!c||c({name:d,size:f,originalSize:m,compression:p}))&&(p?p==8?n[d]=Bg(e.subarray(v,v+f),{out:new ue(m)}):de(14,"unknown compression type "+p):n[d]=Kt(e,v,v+f))}return n}var Sg,Pn,Tg,Cg,ue,tt,fs,$i,xi,ss,sl,Pn,al,as,cl,Ag,tl,cs,It,ee,St,Zt,ee,ee,ee,ee,yr,ee,Rg,jg,Ig,_g,ns,dt,rs,hs,Kt,Pg,de,ul,_t,mr,is,us,nl,gr,ll,rl,Og,_n,Ng,Lg,Dg,Mg,pl,We,_e,os,Te,zg,fl,il,ls,Gg,Ug,Hg,Wg,dl,ps,ol,Vg,qg,ml,gl,vl=G(()=>{Sg=Eg("/");try{Pn=Sg("worker_threads"),Tg=Pn.Worker,Cg=Pn.isMarkedAsUntransferable}catch{}ue=Uint8Array,tt=Uint16Array,fs=Int32Array,$i=new ue([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),xi=new ue([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ss=new ue([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sl=function(e,t){for(var n=new tt(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new fs(n[30]),r=1;r<30;++r)for(var o=n[r];o<n[r+1];++o)i[o]=o-n[r]<<5|r;return{b:n,r:i}},Pn=sl($i,2),al=Pn.b,as=Pn.r;al[28]=258,as[258]=28;cl=sl(xi,0),Ag=cl.b,tl=cl.r,cs=new tt(32768);for(ee=0;ee<32768;++ee)It=(ee&43690)>>1|(ee&21845)<<1,It=(It&52428)>>2|(It&13107)<<2,It=(It&61680)>>4|(It&3855)<<4,cs[ee]=((It&65280)>>8|(It&255)<<8)>>1;St=(function(e,t,n){for(var r=e.length,i=0,o=new tt(t);i<r;++i)e[i]&&++o[e[i]-1];var s=new tt(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(n){a=new tt(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var u=i<<4|e[i],l=t-e[i],p=s[e[i]-1]++<<l,f=p|(1<<l)-1;p<=f;++p)a[cs[p]>>c]=u}else for(a=new tt(r),i=0;i<r;++i)e[i]&&(a[i]=cs[s[e[i]-1]++]>>15-e[i]);return a}),Zt=new ue(288);for(ee=0;ee<144;++ee)Zt[ee]=8;for(ee=144;ee<256;++ee)Zt[ee]=9;for(ee=256;ee<280;++ee)Zt[ee]=7;for(ee=280;ee<288;++ee)Zt[ee]=8;yr=new ue(32);for(ee=0;ee<32;++ee)yr[ee]=5;Rg=St(Zt,9,0),jg=St(Zt,9,1),Ig=St(yr,5,0),_g=St(yr,5,1),ns=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},dt=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},rs=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},hs=function(e){return(e+7)/8|0},Kt=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new ue(e.subarray(t,n))},Pg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],de=function(e,t,n){var r=new Error(t||Pg[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,de),!n)throw r;return r},ul=function(e,t,n,r){var i=e.length,o=r?r.length:0;if(!i||t.f&&!t.l)return n||new ue(0);var s=!n,a=s||t.i!=2,c=t.i;s&&(n=new ue(i*3));var u=function(V){var Q=n.length;if(V>Q){var te=new ue(Math.max(Q*2,V));te.set(n),n=te}},l=t.f||0,p=t.p||0,f=t.b||0,m=t.l,d=t.d,h=t.m,y=t.n,v=i*8;do{if(!m){l=dt(e,p,1);var w=dt(e,p+1,3);if(p+=3,w)if(w==1)m=jg,d=_g,h=9,y=5;else if(w==2){var E=dt(e,p,31)+257,C=dt(e,p+10,15)+4,T=E+dt(e,p+5,31)+1;p+=14;for(var R=new ue(T),$=new ue(19),x=0;x<C;++x)$[ss[x]]=dt(e,p+x*3,7);p+=C*3;for(var j=ns($),P=(1<<j)-1,k=St($,j,1),x=0;x<T;){var b=k[dt(e,p,P)];p+=b&15;var A=b>>4;if(A<16)R[x++]=A;else{var N=0,_=0;for(A==16?(_=3+dt(e,p,3),p+=2,N=R[x-1]):A==17?(_=3+dt(e,p,7),p+=3):A==18&&(_=11+dt(e,p,127),p+=7);_--;)R[x++]=N}}var O=R.subarray(0,E),z=R.subarray(E);h=ns(O),y=ns(z),m=St(O,h,1),d=St(z,y,1)}else de(1);else{var A=hs(p)+4,S=e[A-4]|e[A-3]<<8,g=A+S;if(g>i){c&&de(0);break}a&&u(f+S),n.set(e.subarray(A,g),f),t.b=f+=S,t.p=p=g*8,t.f=l;continue}if(p>v){c&&de(0);break}}a&&u(f+131072);for(var B=(1<<h)-1,W=(1<<y)-1,q=p;;q=p){var N=m[rs(e,p)&B],U=N>>4;if(p+=N&15,p>v){c&&de(0);break}if(N||de(2),U<256)n[f++]=U;else if(U==256){q=p,m=null;break}else{var H=U-254;if(U>264){var x=U-257,F=$i[x];H=dt(e,p,(1<<F)-1)+al[x],p+=F}var pe=d[rs(e,p)&W],re=pe>>4;pe||de(3),p+=pe&15;var z=Ag[re];if(re>3){var F=xi[re];z+=rs(e,p)&(1<<F)-1,p+=F}if(p>v){c&&de(0);break}a&&u(f+131072);var M=f+H;if(f<z){var Y=o-z,D=Math.min(z,M);for(Y+f<0&&de(3);f<D;++f)n[f]=r[Y+f]}for(;f<M;++f)n[f]=n[f-z]}}t.l=m,t.p=q,t.b=f,t.f=l,m&&(l=1,t.m=h,t.d=d,t.n=y)}while(!l);return f!=n.length&&s?Kt(n,0,f):n.subarray(0,f)},_t=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},mr=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},is=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,o=n.slice();if(!i)return{t:_n,l:0};if(i==1){var s=new ue(n[0].s+1);return s[n[0].s]=1,{t:s,l:1}}n.sort(function(g,E){return g.f-E.f}),n.push({s:-1,f:25001});var a=n[0],c=n[1],u=0,l=1,p=2;for(n[0]={s:-1,f:a.f+c.f,l:a,r:c};l!=i-1;)a=n[n[u].f<n[p].f?u++:p++],c=n[u!=l&&n[u].f<n[p].f?u++:p++],n[l++]={s:-1,f:a.f+c.f,l:a,r:c};for(var f=o[0].s,r=1;r<i;++r)o[r].s>f&&(f=o[r].s);var m=new tt(f+1),d=us(n[l-1],m,0);if(d>t){var r=0,h=0,y=d-t,v=1<<y;for(o.sort(function(E,C){return m[C.s]-m[E.s]||E.f-C.f});r<i;++r){var w=o[r].s;if(m[w]>t)h+=v-(1<<d-m[w]),m[w]=t;else break}for(h>>=y;h>0;){var A=o[r].s;m[A]<t?h-=1<<t-m[A]++-1:++r}for(;r>=0&&h;--r){var S=o[r].s;m[S]==t&&(--m[S],++h)}d=t}return{t:new ue(m),l:d}},us=function(e,t,n){return e.s==-1?Math.max(us(e.l,t,n+1),us(e.r,t,n+1)):t[e.s]=n},nl=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new tt(++t),r=0,i=e[0],o=1,s=function(c){n[r++]=c},a=1;a<=t;++a)if(e[a]==i&&a!=t)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=e[a]}return{c:n.subarray(0,r),n:t}},gr=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},ll=function(e,t,n){var r=n.length,i=hs(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var o=0;o<r;++o)e[i+o+4]=n[o];return(i+4+r)*8},rl=function(e,t,n,r,i,o,s,a,c,u,l){_t(t,l++,n),++i[256];for(var p=is(i,15),f=p.t,m=p.l,d=is(o,15),h=d.t,y=d.l,v=nl(f),w=v.c,A=v.n,S=nl(h),g=S.c,E=S.n,C=new tt(19),T=0;T<w.length;++T)++C[w[T]&31];for(var T=0;T<g.length;++T)++C[g[T]&31];for(var R=is(C,7),$=R.t,x=R.l,j=19;j>4&&!$[ss[j-1]];--j);var P=u+5<<3,k=gr(i,Zt)+gr(o,yr)+s,b=gr(i,f)+gr(o,h)+s+14+3*j+gr(C,$)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&P<=k&&P<=b)return ll(t,l,e.subarray(c,c+u));var N,_,O,z;if(_t(t,l,1+(b<k)),l+=2,b<k){N=St(f,m,0),_=f,O=St(h,y,0),z=h;var B=St($,x,0);_t(t,l,A-257),_t(t,l+5,E-1),_t(t,l+10,j-4),l+=14;for(var T=0;T<j;++T)_t(t,l+3*T,$[ss[T]]);l+=3*j;for(var W=[w,g],q=0;q<2;++q)for(var U=W[q],T=0;T<U.length;++T){var H=U[T]&31;_t(t,l,B[H]),l+=$[H],H>15&&(_t(t,l,U[T]>>5&127),l+=U[T]>>12)}}else N=Rg,_=Zt,O=Ig,z=yr;for(var T=0;T<a;++T){var F=r[T];if(F>255){var H=F>>18&31;mr(t,l,N[H+257]),l+=_[H+257],H>7&&(_t(t,l,F>>23&31),l+=$i[H]);var pe=F&31;mr(t,l,O[pe]),l+=z[pe],pe>3&&(mr(t,l,F>>5&8191),l+=xi[pe])}else mr(t,l,N[F]),l+=_[F]}return mr(t,l,N[256]),l+_[256]},Og=new fs([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),_n=new ue(0),Ng=function(e,t,n,r,i,o){var s=o.z||e.length,a=new ue(r+s+5*(1+Math.ceil(s/7e3))+i),c=a.subarray(r,a.length-i),u=o.l,l=(o.r||0)&7;if(t){l&&(c[0]=o.r>>3);for(var p=Og[t-1],f=p>>13,m=p&8191,d=(1<<n)-1,h=o.p||new tt(32768),y=o.h||new tt(d+1),v=Math.ceil(n/3),w=2*v,A=function(ie){return(e[ie]^e[ie+1]<<v^e[ie+2]<<w)&d},S=new fs(25e3),g=new tt(288),E=new tt(32),C=0,T=0,R=o.i||0,$=0,x=o.w||0,j=0;R+2<s;++R){var P=A(R),k=R&32767,b=y[P];if(h[k]=b,y[P]=k,x<=R){var N=s-R;if((C>7e3||$>24576)&&(N>423||!u)){l=rl(e,c,0,S,g,E,T,$,j,R-j,l),$=C=T=0,j=R;for(var _=0;_<286;++_)g[_]=0;for(var _=0;_<30;++_)E[_]=0}var O=2,z=0,B=m,W=k-b&32767;if(N>2&&P==A(R-W))for(var q=Math.min(f,N)-1,U=Math.min(32767,R),H=Math.min(258,N);W<=U&&--B&&k!=b;){if(e[R+O]==e[R+O-W]){for(var F=0;F<H&&e[R+F]==e[R+F-W];++F);if(F>O){if(O=F,z=W,F>q)break;for(var pe=Math.min(W,F-2),re=0,_=0;_<pe;++_){var M=R-W+_&32767,Y=h[M],D=M-Y&32767;D>re&&(re=D,b=M)}}}k=b,b=h[k],W+=k-b&32767}if(z){S[$++]=268435456|as[O]<<18|tl[z];var V=as[O]&31,Q=tl[z]&31;T+=$i[V]+xi[Q],++g[257+V],++E[Q],x=R+O,++C}else S[$++]=e[R],++g[e[R]]}}for(R=Math.max(R,x);R<s;++R)S[$++]=e[R],++g[e[R]];l=rl(e,c,u,S,g,E,T,$,j,R-j,l),u||(o.r=l&7|c[l/8|0]<<3,l-=7,o.h=y,o.p=h,o.i=R,o.w=x)}else{for(var R=o.w||0;R<s+u;R+=65535){var te=R+65535;te>=s&&(c[l/8|0]=u,te=s),l=ll(c,l+1,e.subarray(R,te))}o.i=s}return Kt(a,0,r+hs(l)+i)},Lg=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),Dg=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=Lg[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},Mg=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var o=t.dictionary.subarray(-32768),s=new ue(o.length+e.length);s.set(o),s.set(e,o.length),e=s,i.w=o.length}return Ng(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},pl=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},We=function(e,t){return e[t]|e[t+1]<<8},_e=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},os=function(e,t){return _e(e,t)+_e(e,t+4)*4294967296},Te=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8};zg=(function(){function e(t,n){typeof t=="function"&&(n=t,t={}),this.ondata=n;var r=t&&t.dictionary&&t.dictionary.subarray(-32768);this.s={i:0,b:r?r.length:0},this.o=new ue(32768),this.p=new ue(0),r&&this.o.set(r)}return e.prototype.e=function(t){if(this.ondata||de(5),this.d&&de(4),!this.p.length)this.p=t;else if(t.length){var n=new ue(this.p.length+t.length);n.set(this.p),n.set(t,this.p.length),this.p=n}},e.prototype.c=function(t){this.s.i=+(this.d=t||!1);var n=this.s.b,r=ul(this.p,this.s,this.o);this.ondata(Kt(r,n,this.s.b),this.d),this.o=Kt(r,this.s.b-32768),this.s.b=this.o.length,this.p=Kt(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(t,n){this.e(t),this.c(n)},e})();fl=function(e,t,n,r){for(var i in e){var o=e[i],s=t+i,a=r;Array.isArray(o)&&(a=pl(r,o[1]),o=o[0]),ArrayBuffer.isView(o)?n[s]=[o,a]:(n[s+="/"]=[new ue(0),a],fl(o,s,n,r))}},il=typeof TextEncoder<"u"&&new TextEncoder,ls=typeof TextDecoder<"u"&&new TextDecoder,Gg=0;try{ls.decode(_n,{stream:!0}),Gg=1}catch{}Ug=function(e){for(var t="",n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:Kt(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};Hg=function(e,t){return t+30+We(e,t+26)+We(e,t+28)},Wg=function(e,t,n){var r=We(e,t+28),i=We(e,t+30),o=hl(e.subarray(t+46,t+46+r),!(We(e,t+8)&2048)),s=t+46+r,a=dl(e,s,i,n,_e(e,t+20),_e(e,t+24),_e(e,t+42)),c=a[0],u=a[1],l=a[2];return[We(e,t+10),c,u,o,s+i+We(e,t+32),l]},dl=function(e,t,n,r,i,o,s){var a=i==4294967295,c=o==4294967295,u=s==4294967295,l=t+n,p=a+c+u;if(r&&p){for(;t+4<l;t+=4+We(e,t+2))if(We(e,t)==1)return[a?os(e,t+4+8*c):i,c?os(e,t+4):o,u?os(e,t+4+8*(c+a)):s,1];r<2&&de(13)}return[i,o,s,0]},ps=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&de(9),t+=r+4}return t},ol=function(e,t,n,r,i,o,s,a){var c=r.length,u=n.extra,l=a&&a.length,p=ps(u);Te(e,t,s!=null?33639248:67324752),t+=4,s!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(o<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),m=f.getFullYear()-1980;if((m<0||m>119)&&de(10),Te(e,t,m<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,o!=-1&&(Te(e,t,n.crc),Te(e,t+4,o<0?-o-2:o),Te(e,t+8,n.size)),Te(e,t+12,c),Te(e,t+14,p),t+=16,s!=null&&(Te(e,t,l),Te(e,t+6,n.attrs),Te(e,t+10,s),t+=14),e.set(r,t),t+=c,p)for(var d in u){var h=u[d],y=h.length;Te(e,t,+d),Te(e,t+2,y),e.set(h,t+4),t+=4+y}return l&&(e.set(a,t),t+=l),t},Vg=function(e,t,n,r,i){Te(e,t,101010256),Te(e,t+8,n),Te(e,t+10,n),Te(e,t+12,r),Te(e,t+16,i)};qg=(function(){function e(){}return e.prototype.push=function(t,n){this.ondata(null,t,n)},e.compression=0,e})(),ml=(function(){function e(){var t=this;this.i=new zg(function(n,r){t.ondata(null,n,r)})}return e.prototype.push=function(t,n){try{this.i.push(t,n)}catch(r){this.ondata(r,null,n)}},e.compression=8,e})(),gl=(function(){function e(t){this.onfile=t,this.k=[],this.o={0:qg},this.p=_n}return e.prototype.push=function(t,n){var r=this;if(this.onfile||de(5),this.p||de(4),this.c>0){var i=Math.min(this.c,t.length),o=t.subarray(0,i);if(this.c-=i,this.d?this.d.push(o,!this.c):this.k[0].push(o),t=t.subarray(i),t.length)return this.push(t,n)}else{var s=0,a=0,c=void 0,u=void 0;this.p.length?t.length?(u=new ue(this.p.length+t.length),u.set(this.p),u.set(t,this.p.length)):u=this.p:u=t;for(var l=u.length,p=this.c,f=p&&this.d,m=function(){var v=_e(u,a);if(v==67324752){s=1,c=a,d.d=null,d.c=0;var w=We(u,a+6),A=We(u,a+8),S=w&2048,g=w&8,E=We(u,a+26),C=We(u,a+28);if(l>a+30+E+C){var T=[];d.k.unshift(T),s=2;var R=_e(u,a+18),$=_e(u,a+22),x=hl(u.subarray(a+30,a+=30+E),!S),j=dl(u,a,C,2,R,$,0),P=j[0],k=j[1],b=j[3];g&&(P=-1-b),a+=C,d.c=P;var N,_={name:x,compression:A,start:function(){if(_.ondata||de(5),!P)_.ondata(null,_n,!0);else{var O=r.o[A];O||_.ondata(de(14,"unknown compression type "+A,1),null,!1),N=P<0?new O(x):new O(x,P,k),N.ondata=function(q,U,H){_.ondata(q,U,H)};for(var z=0,B=T;z<B.length;z++){var W=B[z];N.push(W,!1)}r.k[0]==T&&r.c?r.d=N:N.push(_n,!0)}},terminate:function(){N&&N.terminate&&N.terminate()}};P>=0&&(_.size=P,_.originalSize=k),d.onfile(_)}return"break"}else if(p){if(v==134695760)return c=a+=12+(p==-2&&8),s=3,d.c=0,"break";if(v==33639248)return c=a-=4,s=3,d.c=0,"break"}},d=this;a<l-4;++a){var h=m();if(h==="break")break}if(this.p=_n,p<0){var y=s?u.subarray(0,c-12-(p==-2&&8)-(_e(u,c-16)==134695760&&4)):u.subarray(0,a);f?f.push(y,!!s):this.k[+(s==2)].push(y)}if(s&2)return this.push(u.subarray(a),n);this.p=u.subarray(a)}n&&(this.c&&de(13),this.p=null)},e.prototype.register=function(t){this.o[t.compression]=t},e})()});import{isAbsolute as Kg}from"node:path";import{crc32 as Zg}from"node:zlib";function bi(e){if(!e||e.includes("\0")||Kg(e)||e.split("/").some(t=>!t||t==="."||t===".."))throw new X(`entry ${JSON.stringify(e)} is not a safe root-relative path.`);return e}function gs(e){let t=new Map;for(let n of e){let r=bi(n.path);if(t.has(r))throw new X(`multiple entries use the destination ${JSON.stringify(r)}.`);t.set(r,n.data)}return t}function wl(e){if(!e.startsWith("<repo>/")){if(!e.startsWith("<root>/"))throw new X(`resource reference ${JSON.stringify(e)} must begin with <root>/ or <repo>/.`);return bi(e.slice(7))}}function ms(e,t,n){function r(i){if(n&&i.startsWith("<repo>/"))throw new X("shared root definitions cannot depend on repository resources.");t.add(i)}if(typeof e=="string"){ot(e)&&r(e);return}if("$type"in e||"$exec"in e){let i=e;if(i.$type==="prompt")ot(i.$exec)&&r(i.$exec);else for(let o of Array.isArray(i.$exec)?i.$exec:[i.$exec])ot(o)&&r(o);return}for(let i of Object.values(e))ms(i,t,n)}function ys(e,...t){let n=new Set;for(let[r,i]of Object.entries(e))r!=="$schemaVersion"&&r!=="$projects"&&ms(i,n,!0);for(let r of t)for(let[i,o]of Object.entries(r))i!=="$schemaVersion"&&i!=="$metadata"&&ms(o,n,!1);return n}function kl(e,t){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch(n){throw new X(`configuration ${t} is not valid UTF-8.`,{cause:n})}}function $l(e){let t=e.get("woof.config.json");if(!t)throw new X("the root woof.config.json is missing.");let n=Ke(kl(t,"woof.config.json"),"root","bundle woof.config.json"),r=Object.entries(n.$projects??{});if(r.length!==1)throw new X(`the root configuration must select exactly one project; found ${r.length}.`);let[i,o]=r[0],s,a,c;if(typeof o=="string"){if(a=o,c=wl(o),!c)throw new X("a selected project configuration cannot be checkout-relative.");if(c==="woof.config.json")throw new X("the selected project configuration cannot alias the root configuration.");let p=e.get(c);if(!p)throw new X(`selected project configuration ${c} is missing.`);s=Ke(kl(p,c),"project",`bundle ${c}`)}else s=o;let u=new Set;c&&u.add(c);for(let p of ys(n,s)){let f=wl(p);if(f){if(f==="woof.config.json")throw new X("a payload cannot replace the root configuration.");u.add(f)}}let l=new Map([...e].filter(([p])=>p==="woof.config.json"||u.has(p)));return{configuration:n,projectName:i,project:s,projectReference:a,files:l}}function xl(e){throw e instanceof X?e:new X(`could not decode the ZIP archive: ${e instanceof Error?e.message:String(e)}`,{cause:e})}function Jg(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=-1;for(let c=e.byteLength-22;c>=Math.max(0,e.byteLength-65557);c-=1){if(t.getUint32(c,!0)!==101010256)continue;let u=t.getUint16(c+20,!0);if(c+22+u===e.byteLength){n=c;break}}if(n<0)throw new X("the central-directory end record is missing or truncated.");if(t.getUint16(n+4,!0)!==0||t.getUint16(n+6,!0)!==0||t.getUint16(n+8,!0)!==t.getUint16(n+10,!0))throw new X("multi-disk archives are not supported.");let r=t.getUint16(n+10,!0),i=t.getUint32(n+12,!0),o=t.getUint32(n+16,!0);if(r===65535||i===4294967295||o===4294967295)throw new X("ZIP64 directory metadata is not supported.");if(o+i!==n)throw new X("the central-directory range is inconsistent.");let s=[],a=o;for(let c=0;c<r;c+=1){if(a+46>n||t.getUint32(a,!0)!==33639248)throw new X(`central-directory entry ${c+1} is missing or malformed.`);let l=t.getUint32(a+38,!0)>>>16&61440,p=t.getUint32(a+42,!0);if(p===4294967295||p>=o)throw new X(`central-directory entry ${c+1} has an invalid local offset.`);if(s.push({compression:t.getUint16(a+10,!0),compressedSize:t.getUint32(a+20,!0),crc:t.getUint32(a+16,!0),size:t.getUint32(a+24,!0),special:l!==0&&l!==32768&&l!==16384}),s.at(-1).compressedSize===4294967295||s.at(-1).size===4294967295)throw new X("ZIP64 entry sizes are not supported.");a+=46+t.getUint16(a+28,!0)+t.getUint16(a+30,!0)+t.getUint16(a+32,!0)}if(a!==n)throw new X("the central-directory entries do not fill the declared range.");return s}function Xg(e){let t=new Set;try{let n=Jg(e),r=[];if(yl(e,{filter(i){let o=n[r.length];if(!o||o.size!==i.originalSize||o.compressedSize!==i.size||o.compression!==i.compression)throw new X(`central-directory metadata is inconsistent for ${i.name}.`);bi(i.name.endsWith("/")?i.name.slice(0,-1):i.name);let s=i.name;if(t.has(s))throw new X(`multiple entries resolve to the destination ${JSON.stringify(i.name)}.`);return t.add(s),r.push({...o,name:i.name}),!1}}),r.length!==n.length)throw new X("the central-directory entry count is inconsistent.");return r}catch(n){xl(n)}}function Yg(e){if(!e.byteLength)throw new X("the archive is empty.");let t=Xg(e),n=[],r=new Set,i=new Set,o,s=new gl(a=>{try{let c=t[n.length];if(!c)throw new X(`local entry ${a.name} is absent from the central directory.`);if(a.name!==c.name||a.compression!==c.compression||a.originalSize!==void 0&&a.originalSize!==c.size||a.size!==void 0&&a.size!==c.compressedSize)throw new X(`local and central-directory metadata disagree for ${a.name}.`);bi(a.name.endsWith("/")?a.name.slice(0,-1):a.name);let u=a.name;if(i.has(u))throw new X(`multiple entries resolve to the destination ${JSON.stringify(a.name)}.`);i.add(u),c.special&&r.add(a.name);let l=[],p=0;a.ondata=(f,m,d)=>{if(!o){if(f){o=f;return}if(p+=m.byteLength,l.push(m.slice()),d){if(p!==c.size){o=new X(`entry ${a.name} has ${p} bytes; expected ${c.size}.`);return}let h=new Uint8Array(p),y=0;for(let v of l)h.set(v,y),y+=v.byteLength;if(Zg(h)>>>0!==c.crc){o=new X(`entry ${a.name} failed CRC-32 verification.`);return}n.push({path:a.name,data:h})}}},a.start()}catch(c){o=c}});s.register(ml);try{for(let a=0;a<e.byteLength;a+=16384)s.push(e.subarray(a,a+16384),a+16384>=e.byteLength)}catch(a){o=a}if(o&&xl(o),n.length!==t.length)throw new X(`decoded ${n.length} entries; the central directory declares ${t.length}.`);return{files:n.filter(a=>!a.path.endsWith("/")),special:r}}function bl(e){let t=Yg(e),n=$l(gs(t.files));for(let r of n.files.keys())if(t.special.has(r))throw new X(`required entry ${r} is not a regular file.`);return n}function El(e,t){let n=gs([{path:"woof.config.json",data:ki(`${JSON.stringify(e,null,2)}
|
|
185
|
-
`)},...t]);return
|
|
186
|
-
`);
|
|
187
|
-
`)}var
|
|
188
|
-
`),
|
|
189
|
-
`));let n=[],r=e.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(let i=0;i<r.length;i++){let o=r[i];i%2&&!t.newlineIsToken?n[n.length-1]+=o:n.push(o)}return n}var
|
|
185
|
+
${m}`},{template:"explain-result",values:{requested:u.requested,project:p,tokens:m}})}catch(t){let n=t instanceof Error?t.message:String(t);he({summary:"woof could not explain the resolution.",details:n,recovery:`Search the tokens with ${I("woof get")}.`},{template:"explain-error",values:{details:n}}),process.exitCode=1}}}});import{createRequire as jg}from"module";function Wg(e,t){return Hg(e,t||{},0,0)}function qg(e,t){return gl(e,{i:2},t&&t.out,t&&t.dictionary)}function Si(e,t){if(t){for(var n=new ue(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(pl)return pl.encode(e);for(var i=e.length,o=new ue(e.length+(e.length>>1)),s=0,a=function(p){o[s++]=p},r=0;r<i;++r){if(s+5>o.length){var c=new ue(s+8+(i-r<<1));c.set(o),o=c}var u=e.charCodeAt(r);u<128||t?a(u):u<2048?(a(192|u>>6),a(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|e.charCodeAt(++r)&1023,a(240|u>>18),a(128|u>>12&63),a(128|u>>6&63),a(128|u&63)):(a(224|u>>12),a(128|u>>6&63),a(128|u&63))}return Xt(o,0,s)}function kl(e,t){if(t){for(var n="",r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else{if(ms)return ms.decode(e);var i=Zg(e),o=i.s,n=i.r;return n.length&&de(8),o}}function ws(e,t){t||(t={});var n={},r=[];wl(e,"",n,t);var i=0,o=0;for(var s in n){var a=n[s],c=a[0],u=a[1],p=u.level==0?0:8,l=Si(s),f=l.length,d=u.comment,m=d&&Si(d),h=m&&m.length,g=gs(u.extra);f>65535&&de(11);var v=p?Wg(c,u):c,y=v.length,R=Gg();R.p(c),r.push(vl(u,{size:c.length,crc:R.d(),c:v,f:l,m,u:f!=s.length||m&&d.length!=h,o:i,compression:p})),i+=30+f+g+y,o+=76+2*(f+g)+(h||0)+y}for(var A=new ue(o+22),k=i,w=o-i,T=0;T<r.length;++T){var l=r[T];fl(A,l.o,l,l.f,l.u,l.c.length);var S=30+l.f.length+gs(l.extra);A.set(l.c,l.o+S),fl(A,i,l,l.f,l.u,l.c.length,l.o,l.m),i+=16+S+(l.m?l.m.length:0)}return Yg(A,i,r.length,w,k),A}function El(e,t){for(var n={},r=e.length-22;Oe(e,r)!=101010256;--r)(!r||e.length-r>65558)&&de(13);var i=Ve(e,r+8);if(!i)return{};var o=Oe(e,r+16),s=Oe(e,r-20)==117853008;if(s){var a=Oe(e,r-12);s=Oe(e,a)==101075792,s&&(i=Oe(e,a+32),o=Oe(e,a+48))}for(var c=t&&t.filter,u=0;u<i;++u){var p=Xg(e,o,s),l=p[0],f=p[1],d=p[2],m=p[3],h=p[4],g=p[5],v=Jg(e,g);o=h,(!c||c({name:m,size:f,originalSize:d,compression:l}))&&(l?l==8?n[m]=qg(e.subarray(v,v+f),{out:new ue(d)}):de(14,"unknown compression type "+l):n[m]=Xt(e,v,v+f))}return n}var Ig,Ln,_g,Pg,ue,nt,ys,Ti,Ai,ps,hl,Ln,dl,fs,ml,Og,cl,hs,Nt,te,Rt,Yt,te,te,te,te,kr,te,Ng,Lg,Dg,Mg,as,yt,cs,vs,Xt,Fg,de,gl,Lt,vr,us,ds,ul,wr,yl,ll,zg,Nn,Bg,Ug,Gg,Hg,vl,Ve,Oe,ls,Ae,Vg,wl,pl,ms,Kg,Zg,Jg,Xg,$l,gs,fl,Yg,Qg,xl,bl,Sl=U(()=>{Ig=jg("/");try{Ln=Ig("worker_threads"),_g=Ln.Worker,Pg=Ln.isMarkedAsUntransferable}catch{}ue=Uint8Array,nt=Uint16Array,ys=Int32Array,Ti=new ue([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ai=new ue([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ps=new ue([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),hl=function(e,t){for(var n=new nt(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new ys(n[30]),r=1;r<30;++r)for(var o=n[r];o<n[r+1];++o)i[o]=o-n[r]<<5|r;return{b:n,r:i}},Ln=hl(Ti,2),dl=Ln.b,fs=Ln.r;dl[28]=258,fs[258]=28;ml=hl(Ai,0),Og=ml.b,cl=ml.r,hs=new nt(32768);for(te=0;te<32768;++te)Nt=(te&43690)>>1|(te&21845)<<1,Nt=(Nt&52428)>>2|(Nt&13107)<<2,Nt=(Nt&61680)>>4|(Nt&3855)<<4,hs[te]=((Nt&65280)>>8|(Nt&255)<<8)>>1;Rt=(function(e,t,n){for(var r=e.length,i=0,o=new nt(t);i<r;++i)e[i]&&++o[e[i]-1];var s=new nt(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(n){a=new nt(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var u=i<<4|e[i],p=t-e[i],l=s[e[i]-1]++<<p,f=l|(1<<p)-1;l<=f;++l)a[hs[l]>>c]=u}else for(a=new nt(r),i=0;i<r;++i)e[i]&&(a[i]=hs[s[e[i]-1]++]>>15-e[i]);return a}),Yt=new ue(288);for(te=0;te<144;++te)Yt[te]=8;for(te=144;te<256;++te)Yt[te]=9;for(te=256;te<280;++te)Yt[te]=7;for(te=280;te<288;++te)Yt[te]=8;kr=new ue(32);for(te=0;te<32;++te)kr[te]=5;Ng=Rt(Yt,9,0),Lg=Rt(Yt,9,1),Dg=Rt(kr,5,0),Mg=Rt(kr,5,1),as=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},yt=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},cs=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},vs=function(e){return(e+7)/8|0},Xt=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new ue(e.subarray(t,n))},Fg=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],de=function(e,t,n){var r=new Error(t||Fg[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,de),!n)throw r;return r},gl=function(e,t,n,r){var i=e.length,o=r?r.length:0;if(!i||t.f&&!t.l)return n||new ue(0);var s=!n,a=s||t.i!=2,c=t.i;s&&(n=new ue(i*3));var u=function(q){var Q=n.length;if(q>Q){var ne=new ue(Math.max(Q*2,q));ne.set(n),n=ne}},p=t.f||0,l=t.p||0,f=t.b||0,d=t.l,m=t.d,h=t.m,g=t.n,v=i*8;do{if(!d){p=yt(e,l,1);var y=yt(e,l+1,3);if(l+=3,y)if(y==1)d=Lg,m=Mg,h=9,g=5;else if(y==2){var w=yt(e,l,31)+257,T=yt(e,l+10,15)+4,S=w+yt(e,l+5,31)+1;l+=14;for(var C=new ue(S),$=new ue(19),E=0;E<T;++E)$[ps[E]]=yt(e,l+E*3,7);l+=T*3;for(var j=as($),_=(1<<j)-1,x=Rt($,j,1),E=0;E<S;){var b=x[yt(e,l,_)];l+=b&15;var R=b>>4;if(R<16)C[E++]=R;else{var O=0,N=0;for(R==16?(N=3+yt(e,l,3),l+=2,O=C[E-1]):R==17?(N=3+yt(e,l,7),l+=3):R==18&&(N=11+yt(e,l,127),l+=7);N--;)C[E++]=O}}var P=C.subarray(0,w),z=C.subarray(w);h=as(P),g=as(z),d=Rt(P,h,1),m=Rt(z,g,1)}else de(1);else{var R=vs(l)+4,A=e[R-4]|e[R-3]<<8,k=R+A;if(k>i){c&&de(0);break}a&&u(f+A),n.set(e.subarray(R,k),f),t.b=f+=A,t.p=l=k*8,t.f=p;continue}if(l>v){c&&de(0);break}}a&&u(f+131072);for(var B=(1<<h)-1,H=(1<<g)-1,W=l;;W=l){var O=d[cs(e,l)&B],G=O>>4;if(l+=O&15,l>v){c&&de(0);break}if(O||de(2),G<256)n[f++]=G;else if(G==256){W=l,d=null;break}else{var V=G-254;if(G>264){var E=G-257,F=Ti[E];V=yt(e,l,(1<<F)-1)+dl[E],l+=F}var pe=m[cs(e,l)&H],ee=pe>>4;pe||de(3),l+=pe&15;var z=Og[ee];if(ee>3){var F=Ai[ee];z+=cs(e,l)&(1<<F)-1,l+=F}if(l>v){c&&de(0);break}a&&u(f+131072);var M=f+V;if(f<z){var Y=o-z,D=Math.min(z,M);for(Y+f<0&&de(3);f<D;++f)n[f]=r[Y+f]}for(;f<M;++f)n[f]=n[f-z]}}t.l=d,t.p=W,t.b=f,t.f=p,d&&(p=1,t.m=h,t.d=m,t.n=g)}while(!p);return f!=n.length&&s?Xt(n,0,f):n.subarray(0,f)},Lt=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},vr=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},us=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,o=n.slice();if(!i)return{t:Nn,l:0};if(i==1){var s=new ue(n[0].s+1);return s[n[0].s]=1,{t:s,l:1}}n.sort(function(k,w){return k.f-w.f}),n.push({s:-1,f:25001});var a=n[0],c=n[1],u=0,p=1,l=2;for(n[0]={s:-1,f:a.f+c.f,l:a,r:c};p!=i-1;)a=n[n[u].f<n[l].f?u++:l++],c=n[u!=p&&n[u].f<n[l].f?u++:l++],n[p++]={s:-1,f:a.f+c.f,l:a,r:c};for(var f=o[0].s,r=1;r<i;++r)o[r].s>f&&(f=o[r].s);var d=new nt(f+1),m=ds(n[p-1],d,0);if(m>t){var r=0,h=0,g=m-t,v=1<<g;for(o.sort(function(w,T){return d[T.s]-d[w.s]||w.f-T.f});r<i;++r){var y=o[r].s;if(d[y]>t)h+=v-(1<<m-d[y]),d[y]=t;else break}for(h>>=g;h>0;){var R=o[r].s;d[R]<t?h-=1<<t-d[R]++-1:++r}for(;r>=0&&h;--r){var A=o[r].s;d[A]==t&&(--d[A],++h)}m=t}return{t:new ue(d),l:m}},ds=function(e,t,n){return e.s==-1?Math.max(ds(e.l,t,n+1),ds(e.r,t,n+1)):t[e.s]=n},ul=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new nt(++t),r=0,i=e[0],o=1,s=function(c){n[r++]=c},a=1;a<=t;++a)if(e[a]==i&&a!=t)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=e[a]}return{c:n.subarray(0,r),n:t}},wr=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},yl=function(e,t,n){var r=n.length,i=vs(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var o=0;o<r;++o)e[i+o+4]=n[o];return(i+4+r)*8},ll=function(e,t,n,r,i,o,s,a,c,u,p){Lt(t,p++,n),++i[256];for(var l=us(i,15),f=l.t,d=l.l,m=us(o,15),h=m.t,g=m.l,v=ul(f),y=v.c,R=v.n,A=ul(h),k=A.c,w=A.n,T=new nt(19),S=0;S<y.length;++S)++T[y[S]&31];for(var S=0;S<k.length;++S)++T[k[S]&31];for(var C=us(T,7),$=C.t,E=C.l,j=19;j>4&&!$[ps[j-1]];--j);var _=u+5<<3,x=wr(i,Yt)+wr(o,kr)+s,b=wr(i,f)+wr(o,h)+s+14+3*j+wr(T,$)+2*T[16]+3*T[17]+7*T[18];if(c>=0&&_<=x&&_<=b)return yl(t,p,e.subarray(c,c+u));var O,N,P,z;if(Lt(t,p,1+(b<x)),p+=2,b<x){O=Rt(f,d,0),N=f,P=Rt(h,g,0),z=h;var B=Rt($,E,0);Lt(t,p,R-257),Lt(t,p+5,w-1),Lt(t,p+10,j-4),p+=14;for(var S=0;S<j;++S)Lt(t,p+3*S,$[ps[S]]);p+=3*j;for(var H=[y,k],W=0;W<2;++W)for(var G=H[W],S=0;S<G.length;++S){var V=G[S]&31;Lt(t,p,B[V]),p+=$[V],V>15&&(Lt(t,p,G[S]>>5&127),p+=G[S]>>12)}}else O=Ng,N=Yt,P=Dg,z=kr;for(var S=0;S<a;++S){var F=r[S];if(F>255){var V=F>>18&31;vr(t,p,O[V+257]),p+=N[V+257],V>7&&(Lt(t,p,F>>23&31),p+=Ti[V]);var pe=F&31;vr(t,p,P[pe]),p+=z[pe],pe>3&&(vr(t,p,F>>5&8191),p+=Ai[pe])}else vr(t,p,O[F]),p+=N[F]}return vr(t,p,O[256]),p+N[256]},zg=new ys([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Nn=new ue(0),Bg=function(e,t,n,r,i,o){var s=o.z||e.length,a=new ue(r+s+5*(1+Math.ceil(s/7e3))+i),c=a.subarray(r,a.length-i),u=o.l,p=(o.r||0)&7;if(t){p&&(c[0]=o.r>>3);for(var l=zg[t-1],f=l>>13,d=l&8191,m=(1<<n)-1,h=o.p||new nt(32768),g=o.h||new nt(m+1),v=Math.ceil(n/3),y=2*v,R=function(ie){return(e[ie]^e[ie+1]<<v^e[ie+2]<<y)&m},A=new ys(25e3),k=new nt(288),w=new nt(32),T=0,S=0,C=o.i||0,$=0,E=o.w||0,j=0;C+2<s;++C){var _=R(C),x=C&32767,b=g[_];if(h[x]=b,g[_]=x,E<=C){var O=s-C;if((T>7e3||$>24576)&&(O>423||!u)){p=ll(e,c,0,A,k,w,S,$,j,C-j,p),$=T=S=0,j=C;for(var N=0;N<286;++N)k[N]=0;for(var N=0;N<30;++N)w[N]=0}var P=2,z=0,B=d,H=x-b&32767;if(O>2&&_==R(C-H))for(var W=Math.min(f,O)-1,G=Math.min(32767,C),V=Math.min(258,O);H<=G&&--B&&x!=b;){if(e[C+P]==e[C+P-H]){for(var F=0;F<V&&e[C+F]==e[C+F-H];++F);if(F>P){if(P=F,z=H,F>W)break;for(var pe=Math.min(H,F-2),ee=0,N=0;N<pe;++N){var M=C-H+N&32767,Y=h[M],D=M-Y&32767;D>ee&&(ee=D,b=M)}}}x=b,b=h[x],H+=x-b&32767}if(z){A[$++]=268435456|fs[P]<<18|cl[z];var q=fs[P]&31,Q=cl[z]&31;S+=Ti[q]+Ai[Q],++k[257+q],++w[Q],E=C+P,++T}else A[$++]=e[C],++k[e[C]]}}for(C=Math.max(C,E);C<s;++C)A[$++]=e[C],++k[e[C]];p=ll(e,c,u,A,k,w,S,$,j,C-j,p),u||(o.r=p&7|c[p/8|0]<<3,p-=7,o.h=g,o.p=h,o.i=C,o.w=E)}else{for(var C=o.w||0;C<s+u;C+=65535){var ne=C+65535;ne>=s&&(c[p/8|0]=u,ne=s),p=yl(c,p+1,e.subarray(C,ne))}o.i=s}return Xt(a,0,r+vs(p)+i)},Ug=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),Gg=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=Ug[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},Hg=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var o=t.dictionary.subarray(-32768),s=new ue(o.length+e.length);s.set(o),s.set(e,o.length),e=s,i.w=o.length}return Bg(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},vl=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},Ve=function(e,t){return e[t]|e[t+1]<<8},Oe=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},ls=function(e,t){return Oe(e,t)+Oe(e,t+4)*4294967296},Ae=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8};Vg=(function(){function e(t,n){typeof t=="function"&&(n=t,t={}),this.ondata=n;var r=t&&t.dictionary&&t.dictionary.subarray(-32768);this.s={i:0,b:r?r.length:0},this.o=new ue(32768),this.p=new ue(0),r&&this.o.set(r)}return e.prototype.e=function(t){if(this.ondata||de(5),this.d&&de(4),!this.p.length)this.p=t;else if(t.length){var n=new ue(this.p.length+t.length);n.set(this.p),n.set(t,this.p.length),this.p=n}},e.prototype.c=function(t){this.s.i=+(this.d=t||!1);var n=this.s.b,r=gl(this.p,this.s,this.o);this.ondata(Xt(r,n,this.s.b),this.d),this.o=Xt(r,this.s.b-32768),this.s.b=this.o.length,this.p=Xt(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(t,n){this.e(t),this.c(n)},e})();wl=function(e,t,n,r){for(var i in e){var o=e[i],s=t+i,a=r;Array.isArray(o)&&(a=vl(r,o[1]),o=o[0]),ArrayBuffer.isView(o)?n[s]=[o,a]:(n[s+="/"]=[new ue(0),a],wl(o,s,n,r))}},pl=typeof TextEncoder<"u"&&new TextEncoder,ms=typeof TextDecoder<"u"&&new TextDecoder,Kg=0;try{ms.decode(Nn,{stream:!0}),Kg=1}catch{}Zg=function(e){for(var t="",n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:Xt(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};Jg=function(e,t){return t+30+Ve(e,t+26)+Ve(e,t+28)},Xg=function(e,t,n){var r=Ve(e,t+28),i=Ve(e,t+30),o=kl(e.subarray(t+46,t+46+r),!(Ve(e,t+8)&2048)),s=t+46+r,a=$l(e,s,i,n,Oe(e,t+20),Oe(e,t+24),Oe(e,t+42)),c=a[0],u=a[1],p=a[2];return[Ve(e,t+10),c,u,o,s+i+Ve(e,t+32),p]},$l=function(e,t,n,r,i,o,s){var a=i==4294967295,c=o==4294967295,u=s==4294967295,p=t+n,l=a+c+u;if(r&&l){for(;t+4<p;t+=4+Ve(e,t+2))if(Ve(e,t)==1)return[a?ls(e,t+4+8*c):i,c?ls(e,t+4):o,u?ls(e,t+4+8*(c+a)):s,1];r<2&&de(13)}return[i,o,s,0]},gs=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&de(9),t+=r+4}return t},fl=function(e,t,n,r,i,o,s,a){var c=r.length,u=n.extra,p=a&&a.length,l=gs(u);Ae(e,t,s!=null?33639248:67324752),t+=4,s!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(o<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),d=f.getFullYear()-1980;if((d<0||d>119)&&de(10),Ae(e,t,d<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,o!=-1&&(Ae(e,t,n.crc),Ae(e,t+4,o<0?-o-2:o),Ae(e,t+8,n.size)),Ae(e,t+12,c),Ae(e,t+14,l),t+=16,s!=null&&(Ae(e,t,p),Ae(e,t+6,n.attrs),Ae(e,t+10,s),t+=14),e.set(r,t),t+=c,l)for(var m in u){var h=u[m],g=h.length;Ae(e,t,+m),Ae(e,t+2,g),e.set(h,t+4),t+=4+g}return p&&(e.set(a,t),t+=p),t},Yg=function(e,t,n,r,i){Ae(e,t,101010256),Ae(e,t+8,n),Ae(e,t+10,n),Ae(e,t+12,r),Ae(e,t+16,i)};Qg=(function(){function e(){}return e.prototype.push=function(t,n){this.ondata(null,t,n)},e.compression=0,e})(),xl=(function(){function e(){var t=this;this.i=new Vg(function(n,r){t.ondata(null,n,r)})}return e.prototype.push=function(t,n){try{this.i.push(t,n)}catch(r){this.ondata(r,null,n)}},e.compression=8,e})(),bl=(function(){function e(t){this.onfile=t,this.k=[],this.o={0:Qg},this.p=Nn}return e.prototype.push=function(t,n){var r=this;if(this.onfile||de(5),this.p||de(4),this.c>0){var i=Math.min(this.c,t.length),o=t.subarray(0,i);if(this.c-=i,this.d?this.d.push(o,!this.c):this.k[0].push(o),t=t.subarray(i),t.length)return this.push(t,n)}else{var s=0,a=0,c=void 0,u=void 0;this.p.length?t.length?(u=new ue(this.p.length+t.length),u.set(this.p),u.set(t,this.p.length)):u=this.p:u=t;for(var p=u.length,l=this.c,f=l&&this.d,d=function(){var v=Oe(u,a);if(v==67324752){s=1,c=a,m.d=null,m.c=0;var y=Ve(u,a+6),R=Ve(u,a+8),A=y&2048,k=y&8,w=Ve(u,a+26),T=Ve(u,a+28);if(p>a+30+w+T){var S=[];m.k.unshift(S),s=2;var C=Oe(u,a+18),$=Oe(u,a+22),E=kl(u.subarray(a+30,a+=30+w),!A),j=$l(u,a,T,2,C,$,0),_=j[0],x=j[1],b=j[3];k&&(_=-1-b),a+=T,m.c=_;var O,N={name:E,compression:R,start:function(){if(N.ondata||de(5),!_)N.ondata(null,Nn,!0);else{var P=r.o[R];P||N.ondata(de(14,"unknown compression type "+R,1),null,!1),O=_<0?new P(E):new P(E,_,x),O.ondata=function(W,G,V){N.ondata(W,G,V)};for(var z=0,B=S;z<B.length;z++){var H=B[z];O.push(H,!1)}r.k[0]==S&&r.c?r.d=O:O.push(Nn,!0)}},terminate:function(){O&&O.terminate&&O.terminate()}};_>=0&&(N.size=_,N.originalSize=x),m.onfile(N)}return"break"}else if(l){if(v==134695760)return c=a+=12+(l==-2&&8),s=3,m.c=0,"break";if(v==33639248)return c=a-=4,s=3,m.c=0,"break"}},m=this;a<p-4;++a){var h=d();if(h==="break")break}if(this.p=Nn,l<0){var g=s?u.subarray(0,c-12-(l==-2&&8)-(Oe(u,c-16)==134695760&&4)):u.subarray(0,a);f?f.push(g,!!s):this.k[+(s==2)].push(g)}if(s&2)return this.push(u.subarray(a),n);this.p=u.subarray(a)}n&&(this.c&&de(13),this.p=null)},e.prototype.register=function(t){this.o[t.compression]=t},e})()});import{isAbsolute as ey}from"node:path";import{crc32 as ty}from"node:zlib";function Ri(e){if(!e||e.includes("\0")||ey(e)||e.split("/").some(t=>!t||t==="."||t===".."))throw new X(`entry ${JSON.stringify(e)} is not a safe root-relative path.`);return e}function $s(e){let t=new Map;for(let n of e){let r=Ri(n.path);if(t.has(r))throw new X(`multiple entries use the destination ${JSON.stringify(r)}.`);t.set(r,n.data)}return t}function Tl(e){if(!e.startsWith("<repo>/")){if(!e.startsWith("<root>/"))throw new X(`resource reference ${JSON.stringify(e)} must begin with <root>/ or <repo>/.`);return Ri(e.slice(7))}}function ks(e,t,n){function r(i){if(n&&i.startsWith("<repo>/"))throw new X("shared root definitions cannot depend on repository resources.");t.add(i)}if(typeof e=="string"){at(e)&&r(e);return}if("$type"in e||"$exec"in e){let i=e;if(i.$type==="prompt")at(i.$exec)&&r(i.$exec);else for(let o of Array.isArray(i.$exec)?i.$exec:[i.$exec])at(o)&&r(o);return}for(let i of Object.values(e))ks(i,t,n)}function xs(e,...t){let n=new Set;for(let[r,i]of Object.entries(e))r!=="$schemaVersion"&&r!=="$projects"&&ks(i,n,!0);for(let r of t)for(let[i,o]of Object.entries(r))i!=="$schemaVersion"&&i!=="$metadata"&&ks(o,n,!1);return n}function Al(e,t){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch(n){throw new X(`configuration ${t} is not valid UTF-8.`,{cause:n})}}function Rl(e){let t=e.get("woof.config.json");if(!t)throw new X("the root woof.config.json is missing.");let n=Je(Al(t,"woof.config.json"),"root","bundle woof.config.json"),r=Object.entries(n.$projects??{});if(r.length!==1)throw new X(`the root configuration must select exactly one project; found ${r.length}.`);let[i,o]=r[0],s,a,c;if(typeof o=="string"){if(a=o,c=Tl(o),!c)throw new X("a selected project configuration cannot be checkout-relative.");if(c==="woof.config.json")throw new X("the selected project configuration cannot alias the root configuration.");let l=e.get(c);if(!l)throw new X(`selected project configuration ${c} is missing.`);s=Je(Al(l,c),"project",`bundle ${c}`)}else s=o;let u=new Set;c&&u.add(c);for(let l of xs(n,s)){let f=Tl(l);if(f){if(f==="woof.config.json")throw new X("a payload cannot replace the root configuration.");u.add(f)}}let p=new Map([...e].filter(([l])=>l==="woof.config.json"||u.has(l)));return{configuration:n,projectName:i,project:s,projectReference:a,files:p}}function Cl(e){throw e instanceof X?e:new X(`could not decode the ZIP archive: ${e instanceof Error?e.message:String(e)}`,{cause:e})}function ny(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=-1;for(let c=e.byteLength-22;c>=Math.max(0,e.byteLength-65557);c-=1){if(t.getUint32(c,!0)!==101010256)continue;let u=t.getUint16(c+20,!0);if(c+22+u===e.byteLength){n=c;break}}if(n<0)throw new X("the central-directory end record is missing or truncated.");if(t.getUint16(n+4,!0)!==0||t.getUint16(n+6,!0)!==0||t.getUint16(n+8,!0)!==t.getUint16(n+10,!0))throw new X("multi-disk archives are not supported.");let r=t.getUint16(n+10,!0),i=t.getUint32(n+12,!0),o=t.getUint32(n+16,!0);if(r===65535||i===4294967295||o===4294967295)throw new X("ZIP64 directory metadata is not supported.");if(o+i!==n)throw new X("the central-directory range is inconsistent.");let s=[],a=o;for(let c=0;c<r;c+=1){if(a+46>n||t.getUint32(a,!0)!==33639248)throw new X(`central-directory entry ${c+1} is missing or malformed.`);let p=t.getUint32(a+38,!0)>>>16&61440,l=t.getUint32(a+42,!0);if(l===4294967295||l>=o)throw new X(`central-directory entry ${c+1} has an invalid local offset.`);if(s.push({compression:t.getUint16(a+10,!0),compressedSize:t.getUint32(a+20,!0),crc:t.getUint32(a+16,!0),size:t.getUint32(a+24,!0),special:p!==0&&p!==32768&&p!==16384}),s.at(-1).compressedSize===4294967295||s.at(-1).size===4294967295)throw new X("ZIP64 entry sizes are not supported.");a+=46+t.getUint16(a+28,!0)+t.getUint16(a+30,!0)+t.getUint16(a+32,!0)}if(a!==n)throw new X("the central-directory entries do not fill the declared range.");return s}function ry(e){let t=new Set;try{let n=ny(e),r=[];if(El(e,{filter(i){let o=n[r.length];if(!o||o.size!==i.originalSize||o.compressedSize!==i.size||o.compression!==i.compression)throw new X(`central-directory metadata is inconsistent for ${i.name}.`);Ri(i.name.endsWith("/")?i.name.slice(0,-1):i.name);let s=i.name;if(t.has(s))throw new X(`multiple entries resolve to the destination ${JSON.stringify(i.name)}.`);return t.add(s),r.push({...o,name:i.name}),!1}}),r.length!==n.length)throw new X("the central-directory entry count is inconsistent.");return r}catch(n){Cl(n)}}function iy(e){if(!e.byteLength)throw new X("the archive is empty.");let t=ry(e),n=[],r=new Set,i=new Set,o,s=new bl(a=>{try{let c=t[n.length];if(!c)throw new X(`local entry ${a.name} is absent from the central directory.`);if(a.name!==c.name||a.compression!==c.compression||a.originalSize!==void 0&&a.originalSize!==c.size||a.size!==void 0&&a.size!==c.compressedSize)throw new X(`local and central-directory metadata disagree for ${a.name}.`);Ri(a.name.endsWith("/")?a.name.slice(0,-1):a.name);let u=a.name;if(i.has(u))throw new X(`multiple entries resolve to the destination ${JSON.stringify(a.name)}.`);i.add(u),c.special&&r.add(a.name);let p=[],l=0;a.ondata=(f,d,m)=>{if(!o){if(f){o=f;return}if(l+=d.byteLength,p.push(d.slice()),m){if(l!==c.size){o=new X(`entry ${a.name} has ${l} bytes; expected ${c.size}.`);return}let h=new Uint8Array(l),g=0;for(let v of p)h.set(v,g),g+=v.byteLength;if(ty(h)>>>0!==c.crc){o=new X(`entry ${a.name} failed CRC-32 verification.`);return}n.push({path:a.name,data:h})}}},a.start()}catch(c){o=c}});s.register(xl);try{for(let a=0;a<e.byteLength;a+=16384)s.push(e.subarray(a,a+16384),a+16384>=e.byteLength)}catch(a){o=a}if(o&&Cl(o),n.length!==t.length)throw new X(`decoded ${n.length} entries; the central directory declares ${t.length}.`);return{files:n.filter(a=>!a.path.endsWith("/")),special:r}}function jl(e){let t=iy(e),n=Rl($s(t.files));for(let r of n.files.keys())if(t.special.has(r))throw new X(`required entry ${r} is not a regular file.`);return n}function Il(e,t){let n=$s([{path:"woof.config.json",data:Si(`${JSON.stringify(e,null,2)}
|
|
186
|
+
`)},...t]);return Rl(n),ws(Object.fromEntries(n),{level:6})}function _l(e){return ws(Object.fromEntries($s(e)),{level:6})}var X,Ci=U(()=>{"use strict";Sl();kt();Ee();X=class extends Error{constructor(t,n){super(`Invalid woof bundle: ${t}`,n),this.name="BundleError"}}});import{mkdirSync as oy,readFileSync as Pl,rmSync as sy,writeFileSync as ay}from"node:fs";import{isDeepStrictEqual as cy,parseArgs as uy}from"node:util";function ly(e,t,n){let r=t.split("."),i=e;for(let o of r.slice(0,-1))i[o]??={},i=i[o];i[r.at(-1)]=n}function py(e,t){let n=J("exports");oy(n,{recursive:!0,mode:448});for(let r=1;;r+=1){let i=r===1?"":`-${r}`,o=J("exports",`${e}${i}.woof.zip`);try{return ay(o,t,{flag:"wx",mode:384}),o}catch(s){if(s.code==="EEXIST")continue;throw sy(o,{force:!0}),s}}}var Ol,Nl=U(()=>{"use strict";qe();Ci();kt();Ge();Ie();Pe();_n();Xe();Ee();et();Ol={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},project:{description:"Registered project to export",type:"string"}},meta:{description:"Export a registered project and required resources",name:"export"},async run({rawArgs:e}){try{let m=function(w,T){let S=d.get(w);if(S&&!Buffer.from(S.data).equals(Buffer.from(T)))throw new Error(`Export resources collide at ${I(w)}. Choose distinct source paths.`);d.set(w,{path:w,data:T})},h=function(w){let T=S=>S.startsWith("<repo>/")?`<root>/${s}-repo-export/${S.slice(7)}`:S;return typeof w=="string"?T(w):{...w,$exec:Array.isArray(w.$exec)?w.$exec.map(T):T(w.$exec)}};var t=m,n=h;let{values:r,positionals:i}=uy({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},project:{type:"string"}}});if(i.length)throw new Error(`Export accepts no positional arguments; use ${I("--project NAME")}.`);let o=r.agent===!0||!!fe(),s=r.project;if(!s&&!o&&process.stdout.isTTY){let w=se({cwd:process.cwd()}),T=bt(w.loadRootConfiguration(),w);if(!T.length)throw new Error(`No project is registered. Register one with ${I("woof init")}.`);if(s=await we({message:"Project to export",options:T.map(S=>{let C=_e(S);return{value:S.name,label:S.name,...C?{hint:C}:{}}})}),!s)return ae("Export cancelled. Nothing was written.")}if(!s)throw new Error(`Name the project with ${I("--project NAME")}. See the registered projects with ${I("woof projects")}. A repository project cannot be exported.`);let a=ye({project:s,loader:se({cwd:process.cwd()})}),c=a.project;if(!c||c.kind!=="registered")throw new Error("Repository-defined projects cannot be exported; select a registered home project explicitly.");let u=a.root.data.$projects?.[s];if(!u)throw new Error(`Registered project ${I(s)} has no exportable definition.`);let p=$e(a);for(let[w,T]of p.tokens)fi(T.value)&&p.tokens.set(w,{...T,value:{...T.value,$exec:ir}});let l=[...p.tokens.values()].filter(w=>w.origin==="project").map(w=>St(p,w.path)),f=new Map(l.flatMap(w=>w.tokens.map(T=>[T.path,T]))),d=new Map,g=structuredClone(c.data),v={},y=new Set;for(let w of f.values()){let T=w.origin==="project"||w.references.some(S=>y.has(S));T&&y.add(w.path),ly(T?g:v,w.path,h(p.tokens.get(w.path).value));for(let S of w.files){let C=S.markedPath.startsWith("<root>/")?S.markedPath.slice(7):`${s}-repo-export/${S.markedPath.slice(7)}`;m(C,Pl(S.file))}}let R=Ze({$schemaVersion:a.root.data.$schemaVersion,...v,$projects:{[s]:typeof u=="string"?u:g}},"root","export payload");if(!c.inline&&typeof u=="string"){let w=u.slice(7),T=cy(g,c.data)?Pl(c.source.file):Buffer.from(`${JSON.stringify(g,null,2)}
|
|
187
|
+
`);m(w,T)}let A=Il(R,d.values()),k=py(s,A);Se({summary:`Exported ${I(s)}.`,details:je([["Archive",k],["Files",String(d.size)]])},{template:"export-result",values:{project:s,archive:k,files:d.size,archiveArgument:Z(k)}}),ln("Import it with",`woof import ${Z(k)}`,null)}catch(r){let i=r instanceof Error?r.message:String(r);he({summary:"woof could not export the project.",details:i},{template:"export-error",values:{details:i}}),process.exitCode=1}}}});import{spawn as fy}from"node:child_process";import{realpathSync as hy}from"node:fs";import{setTimeout as dy}from"node:timers/promises";function yy(e,t,n){return e==="bash"?{command:"bash",args:n?[n.file]:["-c",t]}:e==="node"?{command:process.execPath,args:n?[n.file]:["-e",t]}:e==="tsx"?{command:"npx",args:["--yes","--package",`tsx@${my}`,"tsx",...n?[n.file]:["-e",t]]}:{command:"npx",args:["--yes","--package",`bun@${gy}`,"bun",...n?["run",n.file]:["-e",t]]}}async function Dl(e){try{return process.kill(-e,0),!1}catch(t){if(t.code==="ESRCH")return!0;if(t.code==="EPERM")return!1;throw t}}async function Ml(e){let t=Date.now()+200;for(;Date.now()<t;){if(await Dl(e))return!0;await dy(10)}return Dl(e)}async function vy(e){let t=e.pid;if(!t)return;if(process.platform==="win32"){e.kill("SIGTERM");return}let n=r=>{try{process.kill(-t,r)}catch(i){if(i.code!=="ESRCH")throw i}};if(n("SIGTERM"),!await Ml(t)&&(n("SIGKILL"),!await Ml(t)))throw new Error(`Process group ${t} did not exit after bounded cleanup.`)}function wy(e,t,n,r){let{command:i,args:o}=yy(e,t,n),s=`${i} ${o.join(" ")}`;return new Promise((a,c)=>{if(r.signal?.aborted){c(new Dt(`Cancelled before starting ${s}; no script effects were attempted.`,{cancelled:!0}));return}let u=fy(i,o,{cwd:r.cwd,detached:process.platform!=="win32",env:{...r.env,CI:"1",npm_config_audit:"false",npm_config_fund:"false",npm_config_progress:"false",npm_config_update_notifier:"false",npm_config_yes:"true"},stdio:["ignore","pipe","pipe"]}),p=[],l=0,f=!1,d=!1;function m(v,y){f||(f=!0,r.signal?.removeEventListener("abort",g),v?c(v):a(y))}function h(v){d||(d=!0,vy(u).then(()=>m(v)).catch(y=>{m(new Dt(`${v.message} Process cleanup was incomplete.`,{cancelled:v.cancelled,status:v.status,cause:y}))}))}function g(){h(new Dt(`Cancelled ${s}. Prior script effects are not rolled back.`,{cancelled:!0}))}u.stdout.on("data",v=>{if(l+=v.length,l>Ll){h(new Dt(`${s} exceeded the ${Ll}-byte output limit.`));return}p.push(v)}),u.stderr.on("data",v=>process.stderr.write(v)),u.on("error",v=>{m(new Dt(`Could not start ${s}: ${v.message}`,{cause:v}))}),u.on("close",(v,y)=>{if(!d){if(r.signal?.aborted){g();return}if(v!==0){m(new Dt(`${s} failed with ${v===null?`signal ${y}`:`exit ${v}`}. Prior script effects are not rolled back.`,{status:v}));return}m(void 0,Buffer.concat(p).toString("utf8"))}}),r.signal?.addEventListener("abort",g,{once:!0}),r.signal?.aborted&&g()})}function bs(e={}){let t=e.cwd??process.cwd(),n=hy(e.checkoutRoot??ve(t)??t),r=e.env??process.env;return async({resource:i,locations:o})=>{let s=Array.isArray(i.$exec)?i.$exec:[i.$exec],a="";for(let[c,u]of s.entries()){if(e.signal?.aborted)throw new Dt("Cancellation stopped the script array. Prior script effects are not rolled back.",{cancelled:!0});a+=await wy(i.$type,u,o[c],{cwd:n,env:r,signal:e.signal})}return a}}var my,gy,Ll,Dt,Fl=U(()=>{"use strict";Ee();my="4.23.15",gy="1.4.4",Ll=256*1024*1024,Dt=class extends Error{cancelled;status;constructor(t,n={}){super(t,n.cause===void 0?{}:{cause:n.cause}),this.name="ScriptExecutionError",this.cancelled=n.cancelled===!0,this.status=n.status??null}}});import{parseArgs as ky}from"node:util";function zl(e){for(let n of e.tokens)n.privatePlaceholder&&_t("private-warning",{message:ke("private-value",{path:n.path})});if(e.project?.kind!=="repository"||!e.tokens.some(n=>n.origin==="project"))return;e.tokens.some(n=>n.origin==="root"||n.origin==="project"&&n.files.some(r=>r.markedPath.startsWith("<root>/")))&&_t("get-home-dependencies")}function $y(e,t,n){let r=n?0:Math.max(...t.map(o=>o.path.length)),i=Tt(e);return t.map(o=>{let{description:s,tags:a}=n?o:pi(o,i),c=[o.target&&n?`alias of ${o.target}`:void 0,s,a?.length?`tags: ${a.join(", ")}`:void 0].filter(Boolean).join(" "),u=o.target?"":bn(o.kind),p=`${En(o.origin)}${u?` ${u}`:""}`;return`${n?"- ":""}${o.path.padEnd(r)} ${p}${c?` ${Le(c)}`:""}`}).join(`
|
|
188
|
+
`)}var Bl,Ul=U(()=>{"use strict";qe();fr();Ge();Pe();Xe();Ee();Fl();et();Bl={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},project:{description:"Select a registered project",type:"string"},query:{description:"Exact token address or discovery terms",type:"positional",required:!1},search:{description:"Discover metadata without executing a match",type:"boolean"}},meta:{description:"Resolve an exact token or discover resources",name:"get"},async run({rawArgs:e}){let t=new AbortController,n=()=>t.abort();try{let{values:r,positionals:i}=ky({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},project:{type:"string"},search:{type:"boolean"}}}),o=r.agent===!0||!!fe(),s=i.join(" "),a=i.length===1&&s.startsWith("$projects.")?Ot(s):void 0;if(a?.project&&r.project&&a.project!==r.project)throw new Error(`Qualified address selects ${I(a.project)}, which contradicts ${I(`--project ${r.project}`)}.`);let c=a?.project??r.project,u=r.search===!0;process.on("SIGINT",n),process.on("SIGTERM",n);let p=ye({...c?{project:c}:{},loader:se({cwd:process.cwd()})});if(p.selection==="ambiguous"){let k=p.candidates;if(!o&&process.stdout.isTTY){let w=await we({message:"Project to use",options:k.map(T=>{let S=_e(T);return{value:T.name,label:T.name,...S?{hint:S}:{}}})});if(!w)return ae("Lookup cancelled.");p=ye({project:w,loader:se({cwd:process.cwd()})})}else{let w=k.map(S=>{let C=_e(S),$=`${o?"- ":""}${S.name}`;return C?`${$} ${Le(C)}`:$}).join(`
|
|
189
|
+
`),T=`woof get${s?` ${Z(s)}`:""}${u?" --search":""} --project NAME${o?" --agent":""}`;We({summary:"Several projects match this directory.",details:w,recovery:`Retry with ${I(T)}, with NAME replaced by the project name.`},{template:"get-ambiguous",values:{projects:w,command:T}}),process.exitCode=1;return}}let l=$e(p),f=a?.path??s;if(!!s&&!u&&l.tokens.has(f)){let k=await Fo(l,s,bs({checkoutRoot:p.checkoutRoot,signal:t.signal}),zl);Do(k);return}if(!o&&process.stdout.isTTY&&l.tokens.size){let k=await Zt({message:"Token to get",tokens:Tt(l),query:f});if(!k)return ae("Lookup cancelled.");Do(await Fo(l,k,bs({checkoutRoot:p.checkoutRoot,signal:t.signal}),zl));return}let m=Tt(l,f),h=p.project?.kind==="registered"?p.project:void 0,g=$y(l,m,o),v=h?` --project ${Z(h.name)}`:"",y=`woof get 'PATH'${v}${o?" --agent":""}`,R=`woof get 'TERMS' --search${v}${o?" --agent":""}`,A=u?m.length?"get-search":"get-search-empty":m.length?"get-candidates":"get-no-match";We({summary:m.length?u?"Matching resources":"No token has this exact address. These resources match:":"No resources matched this lookup.",details:g,recovery:m.length?`Get a token with ${I(y)}.`:`Search with other terms: ${I(R)}.`},{template:A,values:{candidates:g,command:y,search:R}}),!u&&s&&(process.exitCode=1)}catch(r){let i=r instanceof Error?r.message:String(r);t.signal.aborted?(Kt({summary:"woof lookup was cancelled.",details:i,recovery:"Earlier completed effects are not rolled back."},{template:"get-cancelled",values:{details:i}}),process.exitCode=130):(he({summary:"woof could not complete the lookup.",details:i,recovery:`Search the tokens with ${I("woof get")}.`},{template:"get-error",values:{details:i}}),process.exitCode=1)}finally{process.removeListener("SIGINT",n),process.removeListener("SIGTERM",n)}}}});var $r,Gl=U(()=>{$r=class{diff(t,n,r={}){let i;typeof r=="function"?(i=r,r={}):"callback"in r&&(i=r.callback);let o=this.castInput(t,r),s=this.castInput(n,r),a=this.removeEmpty(this.tokenize(o,r)),c=this.removeEmpty(this.tokenize(s,r));return this.diffWithOptionsObj(a,c,r,i)}diffWithOptionsObj(t,n,r,i){var o;let s=y=>{if(y=this.postProcess(y,r),i){setTimeout(function(){i(y)},0);return}else return y},a=n.length,c=t.length,u=1,p=a+c;r.maxEditLength!=null&&(p=Math.min(p,r.maxEditLength));let l=(o=r.timeout)!==null&&o!==void 0?o:1/0,f=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],m=this.extractCommon(d[0],n,t,0,r);if(d[0].oldPos+1>=c&&m+1>=a)return s(this.buildValues(d[0].lastComponent,n,t));let h=-1/0,g=1/0,v=()=>{for(let y=Math.max(h,-u);y<=Math.min(g,u);y+=2){let R,A=d[y-1],k=d[y+1];A&&(d[y-1]=void 0);let w=!1;if(k){let S=k.oldPos-y;w=k&&0<=S&&S<a}let T=A&&A.oldPos+1<c;if(!w&&!T){d[y]=void 0;continue}if(!T||w&&A.oldPos<k.oldPos?R=this.addToPath(k,!0,!1,0,r):R=this.addToPath(A,!1,!0,1,r),m=this.extractCommon(R,n,t,y,r),R.oldPos+1>=c&&m+1>=a)return s(this.buildValues(R.lastComponent,n,t))||!0;d[y]=R,R.oldPos+1>=c&&(g=Math.min(g,y-1)),m+1>=a&&(h=Math.max(h,y+1))}u++};if(i)(function y(){setTimeout(function(){if(u>p||Date.now()>f)return i(void 0);v()||y()},0)})();else for(;u<=p&&Date.now()<=f;){let y=v();if(y)return y}}addToPath(t,n,r,i,o){let s=t.lastComponent;return s&&!o.oneChangePerToken&&s.added===n&&s.removed===r?{oldPos:t.oldPos+i,lastComponent:{count:s.count+1,added:n,removed:r,previousComponent:s.previousComponent}}:{oldPos:t.oldPos+i,lastComponent:{count:1,added:n,removed:r,previousComponent:s}}}extractCommon(t,n,r,i,o){let s=n.length,a=r.length,c=t.oldPos,u=c-i,p=0;for(;u+1<s&&c+1<a&&this.equals(r[c+1],n[u+1],o);)u++,c++,p++,o.oneChangePerToken&&(t.lastComponent={count:1,previousComponent:t.lastComponent,added:!1,removed:!1});return p&&!o.oneChangePerToken&&(t.lastComponent={count:p,previousComponent:t.lastComponent,added:!1,removed:!1}),t.oldPos=c,u}equals(t,n,r){return r.comparator?r.comparator(t,n):t===n||!!r.ignoreCase&&t.toLowerCase()===n.toLowerCase()}removeEmpty(t){let n=[];for(let r=0;r<t.length;r++)t[r]&&n.push(t[r]);return n}castInput(t,n){return t}tokenize(t,n){return Array.from(t)}join(t){return t.join("")}postProcess(t,n){return t}get useLongestToken(){return!1}buildValues(t,n,r){let i=[],o;for(;t;)i.push(t),o=t.previousComponent,delete t.previousComponent,t=o;i.reverse();let s=i.length,a=0,c=0,u=0;for(;a<s;a++){let p=i[a];if(p.removed)p.value=this.join(r.slice(u,u+p.count)),u+=p.count;else{if(!p.added&&this.useLongestToken){let l=n.slice(c,c+p.count);l=l.map(function(f,d){let m=r[u+d];return m.length>f.length?m:f}),p.value=this.join(l)}else p.value=this.join(n.slice(c,c+p.count));c+=p.count,p.added||(u+=p.count)}}return i}}});function Ss(e,t,n){return xy.diff(e,t,n)}function by(e,t){t.stripTrailingCr&&(e=e.replace(/\r\n/g,`
|
|
190
|
+
`));let n=[],r=e.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(let i=0;i<r.length;i++){let o=r[i];i%2&&!t.newlineIsToken?n[n.length-1]+=o:n.push(o)}return n}var Es,xy,Hl=U(()=>{Gl();Es=class extends $r{constructor(){super(...arguments),this.tokenize=by}equals(t,n,r){return r.ignoreWhitespace?((!r.newlineIsToken||!t.includes(`
|
|
190
191
|
`))&&(t=t.trim()),(!r.newlineIsToken||!n.includes(`
|
|
191
192
|
`))&&(n=n.trim())):r.ignoreNewlineAtEof&&!r.newlineIsToken&&(t.endsWith(`
|
|
192
193
|
`)&&(t=t.slice(0,-1)),n.endsWith(`
|
|
193
|
-
`)&&(n=n.slice(0,-1))),super.equals(t,n,r)}},
|
|
194
|
-
`)?
|
|
195
|
-
`)}let c=[];if(e.isGit){if(t
|
|
194
|
+
`)&&(n=n.slice(0,-1))),super.equals(t,n,r)}},xy=new Es});function Ey(e){for(let t=0;t<e.length;t++)if(e[t]<" "||e[t]>"~"||e[t]==='"'||e[t]==="\\")return!0;return!1}function Qt(e){if(!Ey(e))return e;let t='"',n=new TextEncoder().encode(e),r=0;for(;r<n.length;){let i=n[r];i===7?t+="\\a":i===8?t+="\\b":i===9?t+="\\t":i===10?t+="\\n":i===11?t+="\\v":i===12?t+="\\f":i===13?t+="\\r":i===34?t+='\\"':i===92?t+="\\\\":i>=32&&i<=126?t+=String.fromCharCode(i):t+="\\"+i.toString(8).padStart(3,"0"),r++}return t+='"',t}function As(e,t,n,r,i,o,s){let a;s?typeof s=="function"?a={callback:s}:a=s:a={},typeof a.context>"u"&&(a.context=4);let c=a.context;if(a.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(a.callback){let{callback:p}=a;Ss(n,r,Object.assign(Object.assign({},a),{callback:l=>{let f=u(l);p(f)}}))}else return u(Ss(n,r,a));function u(p){if(!p)return;p.push({value:"",lines:[]});function l(y){return y.map(function(R){return" "+R})}let f=[],d=0,m=0,h=[],g=1,v=1;for(let y=0;y<p.length;y++){let R=p[y],A=R.lines||Sy(R.value);if(R.lines=A,R.added||R.removed){if(!d){let k=p[y-1];d=g,m=v,k&&(h=c>0?l(k.lines.slice(-c)):[],d-=h.length,m-=h.length)}for(let k of A)h.push((R.added?"+":"-")+k);R.added?v+=A.length:g+=A.length}else{if(d)if(A.length<=c*2&&y<p.length-2)for(let k of l(A))h.push(k);else{let k=Math.min(A.length,c);for(let T of l(A.slice(0,k)))h.push(T);let w={oldStart:d,oldLines:g-d+k,newStart:m,newLines:v-m+k,lines:h};f.push(w),d=0,m=0,h=[]}g+=A.length,v+=A.length}}for(let y of f)for(let R=0;R<y.lines.length;R++)y.lines[R].endsWith(`
|
|
195
|
+
`)?y.lines[R]=y.lines[R].slice(0,-1):(y.lines.splice(R+1,0,"\"),R++);return{oldFileName:e,newFileName:t,oldHeader:i,newHeader:o,hunks:f}}}function ji(e,t){var n,r,i,o,s,a;if(t||(t=Ts),Array.isArray(e)){if(e.length>1&&!t.includeFileHeaders&&!e.every(p=>p.isGit))throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");return e.map(p=>ji(p,t)).join(`
|
|
196
|
+
`)}let c=[];if(e.isGit){if(t=Ts,!e.oldFileName)throw new Error("oldFileName must be specified for Git patches");if(!e.newFileName)throw new Error("newFileName must be specified for Git patches");let p=e.oldFileName,l=e.newFileName;e.isCreate&&p==="/dev/null"?p=l.replace(/^b\//,"a/"):e.isDelete&&l==="/dev/null"&&(l=p.replace(/^a\//,"b/")),c.push("diff --git "+Qt(p)+" "+Qt(l)),e.isDelete&&c.push("deleted file mode "+((n=e.oldMode)!==null&&n!==void 0?n:"100644")),e.isCreate&&c.push("new file mode "+((r=e.newMode)!==null&&r!==void 0?r:"100644")),e.oldMode&&e.newMode&&!e.isDelete&&!e.isCreate&&(c.push("old mode "+e.oldMode),c.push("new mode "+e.newMode)),e.isRename&&(c.push("rename from "+Qt(((i=e.oldFileName)!==null&&i!==void 0?i:"").replace(/^a\//,""))),c.push("rename to "+Qt(((o=e.newFileName)!==null&&o!==void 0?o:"").replace(/^b\//,"")))),e.isCopy&&(c.push("copy from "+Qt(((s=e.oldFileName)!==null&&s!==void 0?s:"").replace(/^a\//,""))),c.push("copy to "+Qt(((a=e.newFileName)!==null&&a!==void 0?a:"").replace(/^b\//,""))))}else t.includeIndex&&e.oldFileName==e.newFileName&&e.oldFileName!==void 0&&c.push("Index: "+e.oldFileName),t.includeUnderline&&c.push("===================================================================");let u=e.hunks.length>0;t.includeFileHeaders&&e.oldFileName!==void 0&&e.newFileName!==void 0&&(!e.isGit||u)&&(c.push("--- "+Qt(e.oldFileName)+(e.oldHeader?" "+e.oldHeader:"")),c.push("+++ "+Qt(e.newFileName)+(e.newHeader?" "+e.newHeader:"")));for(let p=0;p<e.hunks.length;p++){let l=e.hunks[p],f=l.oldLines===0?l.oldStart-1:l.oldStart,d=l.newLines===0?l.newStart-1:l.newStart;c.push("@@ -"+f+","+l.oldLines+" +"+d+","+l.newLines+" @@");for(let m of l.lines)c.push(m)}return c.join(`
|
|
196
197
|
`)+`
|
|
197
|
-
`}function
|
|
198
|
+
`}function Wl(e,t,n,r,i,o,s){if(typeof s=="function"&&(s={callback:s}),s?.callback){let{callback:a}=s;As(e,t,n,r,i,o,Object.assign(Object.assign({},s),{callback:c=>{a(c?ji(c,s.headerOptions):void 0)}}))}else{let a=As(e,t,n,r,i,o,s);return a?ji(a,s?.headerOptions):void 0}}function Rs(e,t,n,r,i,o){return Wl(e,e,t,n,r,i,o)}function Sy(e){let t=e.endsWith(`
|
|
198
199
|
`),n=e.split(`
|
|
199
200
|
`).map(r=>r+`
|
|
200
|
-
`);return t?n.pop():n.push(n.pop().slice(0,-1)),n}var
|
|
201
|
-
`)}function Cy(e,t){let n=[];for(let[i,o]of[...e.files].sort(([s],[a])=>s.localeCompare(a))){let s=e.sources.find(u=>u.path===i);if(!s)throw new Error(`Reviewed source state is missing for ${i}.`);let a=t.get(i);if(a&&Ci(a,o))continue;let c=Xt(e.home,i);n.push({path:i,data:o,original:a,originalDigest:s.digest,mode:c.mode,target:c.target,kind:"resource"})}if(e.projectFile){let{path:i,data:o}=e.projectFile,s=t.get(i),a=Hl(o);if(!(e.initialProject?.path===i&&Gl(e.initialProject.data,o)||s&&Ci(s,a))){let u=e.sources.find(p=>p.path===i);if(!u)throw new Error(`Reviewed project source state is missing for ${i}.`);let l=Xt(e.home,i);n.push({path:i,data:a,original:s,originalDigest:u.digest,mode:l.mode,target:l.target,kind:"project"})}}if(!Gl(e.local,e.configuration)){let i="woof.config.json",o=e.sources.find(c=>c.path===i);if(!o)throw new Error("Reviewed root source state is missing.");let s=t.get(i),a=Xt(e.home,i);n.push({path:i,data:Hl(e.configuration),original:s,originalDigest:o.digest,mode:a.mode,target:a.target,kind:"registry"})}let r=new Map;for(let i of n){let o=r.get(i.target);if(o&&!Ci(o.data,i.data))throw new Error(`Import paths ${o.path} and ${i.path} require conflicting writes to the same file.`);o||r.set(i.target,i)}return[...r.values()]}function Ay(e,t){let n=$r(e),r=ji(n,t),i=Ts(r),o=[],s=i;for(;s!==n;){if(!kr(n,s))throw new Error(`Import parent escapes the woof home: ${t}`);try{if(!Ai(s).isDirectory())throw new Error(`Import parent is not a directory: ${s}`);break}catch(a){if(a.code!=="ENOENT")throw a;o.unshift(s),s=Ts(s)}}return o}function As(e,t,n){by(e,t,{flag:"wx",mode:n}),ky(e,n)}function Es(e){let t=[];for(let n of e)try{Rs(n,{force:!0})}catch(r){t.push(`Could not remove temporary artifact ${n}: ${r instanceof Error?r.message:String(r)}`)}return t}function Wl(e){let t=[];for(let n of e.sort((r,i)=>i.length-r.length))try{xy(n)}catch(r){let i=r.code;if(i==="ENOTEMPTY"||i==="EEXIST"||i==="ENOENT")continue;t.push(`Could not remove empty import directory ${n}: ${r instanceof Error?r.message:String(r)}`)}return t}function Vl(e,t){return Ri(Ts(e),`.${Ey(e)}.woof-import-${t}-${wy()}.tmp`)}function wr(e,t,n,r=[],i=[],o){return{completed:e,restored:t,pending:n,recovery:r,warnings:i,...o?{backup:o}:{}}}function Ry(e,t){let n=new Map,r=c=>{if(n.has(c))return;let u=Ii(e.home,c);u&&n.set(c,u)};r("woof.config.json");let i=[];for(let c of Object.values(e.local.$projects??{})){if(typeof c!="string"){i.push(c);continue}let u=c.slice(7);r(u);let l=n.get(u);l&&i.push(Ke(new TextDecoder().decode(l),"project",u))}for(let c of ys(e.local,...i))c.startsWith("<root>/")&&r(c.slice(7));for(let c of t)c.original&&n.set(c.path,c.original);let o=Sl([...n].sort(([c],[u])=>c.localeCompare(u)).map(([c,u])=>({path:c,data:u}))),s=Ri(e.home,".backups");ql(s,{recursive:!0,mode:448});let a=new Date().toISOString().replaceAll(":","-");for(let c=1;;c+=1){let u=Ri(s,`import-${a}${c===1?"":`-${c}`}.zip`);try{return As(u,o,384),u}catch(l){if(l.code==="EEXIST")continue;throw Rs(u,{force:!0}),l}}}function Jl(e){let t=new Map;for(let c of e.sources)t.set(c.path,Ul(e.home,c));for(let c of e.externalSources)if(Ti(Ss(c.path))!==c.digest)throw new Error(`Reuse source ${c.path} changed after review.`);let n=Cy(e,t);if(!n.length)return wr([],[],[]);let r;try{r=Ry(e,n)}catch(c){throw new Tt(`Import backup failed before any change: ${c instanceof Error?c.message:String(c)}`,wr([],[],n.map(u=>u.path)),{cause:c})}let i=[],o=[];try{for(let c of n){for(let p of Ay(e.home,c.path))ql(p),i.push(p);let u=Vl(c.target,"stage"),l={...c,staging:u,backup:void 0};if(o.push(l),As(u,c.data,c.mode),c.original){let p=Vl(c.target,"backup");l.backup=p,As(p,c.original,c.mode)}}for(let c of e.sources)Ul(e.home,c);for(let c of e.externalSources)if(Ti(Ss(c.path))!==c.digest)throw new Error(`Reuse source ${c.path} changed after review.`)}catch(c){let u=[...Es(o.flatMap(l=>[l.staging,...l.backup?[l.backup]:[]])),...Wl(i)];throw new Tt(`Import staging failed before any live replacement: ${c instanceof Error?c.message:String(c)}`,wr([],[],n.map(l=>l.path),[],u,r),{cause:c})}let s=[];try{for(let c of o){let u=Ii(e.home,c.path);if((u?Ti(u):null)!==c.originalDigest)throw new Error(`Import destination ${c.path} changed before replacement; stale decisions were not applied.`);if(Xt(e.home,c.path).target!==c.target)throw new Error(`Import destination ${c.path} changed location before replacement.`);Bl(c.staging,c.target),s.push(c)}}catch(c){let u=[],l=[],p=[];for(let y of[...s].reverse())try{let v=y.target;if(Xt(e.home,y.path).target!==v)throw new Error(`Import destination ${y.path} changed location before rollback.`,{cause:c});let w=Ii(e.home,y.path);if(!w||!Ci(w,y.data)){y.backup&&l.push(y.backup),p.push(`${y.path} changed after replacement and was not overwritten during rollback.`);continue}y.original?Bl(y.backup,v):Rs(v),u.push(y.path)}catch(v){y.backup&&l.push(y.backup),p.push(`${y.path} could not be restored: ${v instanceof Error?v.message:String(v)}`)}let f=new Set(s.map(y=>y.backup).filter(Boolean)),m=o.filter(y=>!f.has(y.backup)&&y.backup).map(y=>y.backup),d=[...Es([...o.map(y=>y.staging),...m]),...Wl(i)],h=o.filter(y=>!s.includes(y)).map(y=>y.path);throw new Tt(`Import failed: ${c instanceof Error?c.message:String(c)}. ${p.join(" ")}`,wr(s.map(y=>y.path),u,h,[...new Set(l)],[...d,...p],r),{cause:c})}let a=Es(o.flatMap(c=>[c.staging,...c.backup?[c.backup]:[]]));return wr(s.map(c=>c.path),[],[],o.filter(c=>c.backup&&a.some(u=>u.includes(c.backup))).map(c=>c.backup),a,r)}var Tt,js=G(()=>{"use strict";Ei();vt();Tt=class extends Error{report;constructor(t,n,r){super(t,r),this.name="ImportApplyError",this.report=n}}});import{createHash as jy}from"node:crypto";function Ct(e){let t=new Map;function n(r,i){for(let[o,s]of Object.entries(r)){if(o.startsWith("$"))continue;let a=i?`${i}.${o}`:o;typeof s=="string"||s&&typeof s=="object"&&("$type"in s||"$exec"in s)?t.set(a,s):s&&typeof s=="object"&&n(s,a)}}return n(e,""),t}function mt(e,t){let n=e;for(let r of t.split(".")){if(!n||typeof n!="object"||Array.isArray(n)||!Object.hasOwn(n,r))return;n=n[r]}return n}function _i(e,t,n){let r=t.split("."),i=e;for(let o of r.slice(0,-1)){let s=i[o];if(s===void 0)i[o]={};else if(!s||typeof s!="object"||Array.isArray(s)||"$type"in s||"$exec"in s)throw new Error(`Token address ${t} conflicts with the existing token ${o}.`);i=i[o]}i[r.at(-1)]=structuredClone(n)}function Pi(e){if(!/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/.test(e)||e.split(".").some(t=>["__proto__","prototype","constructor"].includes(t)))throw new Error(`Invalid token address: ${e}`)}function Xl(e,t){return typeof e=="string"?e.startsWith("<root>/")||e.startsWith("<repo>/")?e:Yr(e,t):e.$type==="prompt"&&!e.$exec.startsWith("<root>/")&&!e.$exec.startsWith("<repo>/")?{...e,$exec:Yr(e.$exec,t)}:e}function Yt(e){return(typeof e=="string"?[e]:Array.isArray(e.$exec)?e.$exec:[e.$exec]).filter(n=>n.startsWith("<root>/")||n.startsWith("<repo>/"))}function Yl(e,t){if(typeof e=="string")return t.get(e)??e;let n=r=>t.get(r)??r;return{...e,$exec:Array.isArray(e.$exec)?e.$exec.map(n):n(e.$exec)}}function Is(e,t){let n=Buffer.from(e).toString("latin1"),r=Yr(n,t);return r===n?e:Buffer.from(r,"latin1")}function gt(e,t,n=new Map){let r=typeof e=="string"||e.$type==="prompt",i=typeof e=="string"?"prompt":e.$type,o=typeof e=="string"?[e]:Array.isArray(e.$exec)?e.$exec:[e.$exec],s=[];for(let a of o){let c=a.startsWith("<root>/")||a.startsWith("<repo>/"),u=c?t(a):new TextEncoder().encode(a);if(!u)return;let l=r?Is(u,n):u,p=jy("sha256").update(l).digest("hex");s.push(`${r?"":c?"file:":"inline:"}${p}`)}return JSON.stringify({type:i,array:!r&&typeof e!="string"&&Array.isArray(e.$exec),parts:s})}function Ot(e){return typeof e=="string"||!!(e&&typeof e=="object"&&("$type"in e||"$exec"in e))}var Ql=G(()=>{"use strict";Je()});import{createHash as Iy}from"node:crypto";import{readFileSync as Ns,realpathSync as Ln,statSync as _y}from"node:fs";import{isAbsolute as tp,relative as Py,resolve as On,sep as Ps,win32 as Oy}from"node:path";import{isDeepStrictEqual as gn}from"node:util";function Nt(e){return Iy("sha256").update(e).digest("hex")}function ep(e){return e instanceof Uint8Array?Nt(e):Nt(JSON.stringify(e)??"undefined")}function ct(e,t,n,r){let i=ep(n),o=ep(r);return{id:Nt(`${e}\0${t}`).slice(0,32),kind:e,path:t,existing:n,incoming:r,existingDigest:i,incomingDigest:o}}function _s(e,t){return Object.fromEntries(Object.entries(e).filter(([n])=>n!=="$schemaVersion"&&n!=="$projects"&&(!t||n!=="$metadata")))}function xr(e){if(!e||Ps==="\\"&&e.includes("\\")||e.includes("\0")||tp(e)||Ps==="\\"&&Oy.isAbsolute(e)||e.split("/").some(t=>!t||t==="."||t===".."))throw new Error(`Unsafe home resource destination: ${e}`);return e}function Os(e,t){let n=Py(e,t);return n===""||!n.startsWith(`..${Ps}`)&&n!==".."&&!tp(n)}function Me(e,t){return e.byteLength===t.byteLength&&e.every((n,r)=>n===t[r])}function Ny(e,t){xr(t);let n=On(e,t);try{if(t!=="woof.config.json"&&!Os(Ln(e),Ln(n)))throw new Error(`Import destination escapes the woof home: ${t}`);if(!_y(n).isFile())throw new Error(`Import destination is not a regular file: ${t}`);return Ns(n)}catch(r){if(r.code==="ENOENT")return;throw r}}function Ls(e,t){let n=Ny(e,t);return{path:t,digest:n?Nt(n):null,physical:Xt(e,t).target,...n?{data:n}:{}}}function Ly(e,t,n){let r=e.$projects?.[t.projectName];if(r===void 0)return{definition:r,data:void 0,file:void 0,source:void 0};if(typeof r=="string"){let i=r.slice(7),o=Ls(n,i);if(!o.data)throw new Error(`Local selected project configuration is missing: ${i}`);let s=Ke(new TextDecoder().decode(o.data),"project",i);return{definition:r,data:s,file:{path:i,data:s},source:o}}return{definition:r,data:r,file:void 0,source:void 0}}function me(e,t){let n=e.snapshots.get(t);return n||(n=Ls(e.home,t),e.snapshots.set(t,n)),n}function Qt(e,t){if(t.startsWith("<root>/"))try{return me(e,t.slice(7)).data}catch{return}if(!(!t.startsWith("<repo>/")||!e.checkout))try{let n=kt(t,{repoRoot:e.checkout}).file,r=Ns(n),i=Nt(r),o=e.external.get(n);if(o&&o!==i)throw new Error(`Reuse source changed during review: ${n}`);return e.external.set(n,i),r}catch(n){if(n.code==="ENOENT")return;if(n instanceof Error&&n.message.startsWith("Reuse source changed"))throw n;return}}function yn(e,t){return t.startsWith("<root>/")?e.bundle.files.get(t.slice(7)):void 0}function np(e){return Object.entries(e.local.$projects??{}).flatMap(([t,n])=>{if(typeof n!="string")return[[t,n]];let r=Qt(e,n);if(!r)return[];try{return[[t,Ke(new TextDecoder().decode(r),"project",n.slice(7))]]}catch{return[]}})}function Dy(e,t){let n=new Set,r=[["",e.local],...np(e)];for(let[i,o]of r)for(let[s,a]of Ct(o))Yt(a).includes(t)&&n.add(`${i}\0${s}`);return n}function My(e,t){let n=Ct(e.local),r=i=>typeof i!="string"&&i.$type!=="prompt"?[]:(typeof i=="string"?[i]:Array.isArray(i.$exec)?i.$exec:[i.$exec]).flatMap(s=>{if(s.startsWith("<repo>/"))return[];let a=s.startsWith("<root>/")?Qt(e,s):void 0;return s.startsWith("<root>/")&&!a?[]:Xr(a?new TextDecoder().decode(a):s)});return np(e).flatMap(([i,o])=>{let s=Ct(o);if(s.has(t))return[];let a=new Set,c=u=>{if(u===t)return!0;if(a.has(u))return!1;a.add(u);let l=s.get(u)??n.get(u);return l?r(l).some(c):!1};return[...s.values()].some(u=>r(u).some(c))?[i]:[]})}function Fy(e,t,n){if(!Ot(t)||!Ot(n))return t;let r=`<root>/${e.bundle.projectName}-repo-export/`,i=Yt(n),o=a=>{let c=`<repo>/${a.slice(r.length)}`;return a.startsWith(r)&&i.includes(c)?c:a},s=t;return typeof s=="string"?o(s):{...s,$exec:Array.isArray(s.$exec)?s.$exec.map(o):o(s.$exec)}}function Nn(e){return typeof e=="string"?e:e?.action}function zy(e){for(let[t,n]of Object.entries(e))if(!(n==="keep"||n==="take")&&(!n||typeof n!="object"||!["add","reuse"].includes(n.action)||typeof n.address!="string"))throw new Error(`Import decision ${t} must be keep, take, or an add/reuse choice with an address.`)}function By(e,t,n,r,i,o,s,a){let c=Xl(o,s),u=ct(t,n,i,c),l=gt(o,f=>yn(e,f),s);u.incomingDigest=Nt(`${u.incomingDigest}\0${l??"missing content"}`),u.existingDigest=Nt(`${u.existingDigest}\0${Ot(i)?gt(i,f=>Qt(e,f))??"missing content":""}`),u.candidates=[...a.entries()].filter(([f,m])=>f!==n&&l!==void 0&>(m,d=>Qt(e,d))===l).map(([f])=>f).sort(),u.candidateDetails=u.candidates.map(f=>{let m=a.get(f);return typeof m=="string"?{address:f}:{address:f,...m.$description!==void 0?{description:m.$description}:{},...m.$tags!==void 0?{tags:m.$tags}:{}}});let p=Ot(i)?Yt(i):[];if(u.files=Yt(o).flatMap((f,m)=>{let d=p.includes(f)?f:p[m],h=d?Qt(e,d):void 0,y=yn(e,f);return!h&&!y||h&&y&&Me(h,y)?[]:[{reference:f,...h?{existing:h}:{},...y?{incoming:y}:{}}]}),t==="token"&&i!==void 0){let f=My(e,n);f.length&&(u.notice=`Taking this shared token affects the projects that use it: ${f.join(", ")}.`)}return l===void 0&&(u.notice=`${u.notice?`${u.notice} `:""}Incoming file content is unavailable; it cannot be matched for reuse.`),r!==n&&(u.notice=`${u.notice?`${u.notice} `:""}Imported address maps to ${r}.`),u}function rp(e,t={}){let n=t.cwd??process.cwd(),r=Ln(t.home??J()),i=bl(e),o=Ls(r,"woof.config.json");if(!o.data)throw new Error("The local root configuration is missing; initialize woof before import planning.");let s=Ke(new TextDecoder().decode(o.data),"root",J("woof.config.json")),a=Ly(s,i,r),c=a.data?Qn({name:i.projectName,data:a.data},n,ve(n)):void 0,u={archiveDigest:Nt(e),bundle:i,checkout:c,cwd:n,home:r,local:s,selected:a,snapshots:new Map([[o.path,o]]),external:new Map,conflicts:[]};a.source&&u.snapshots.set(a.source.path,a.source);let l=i.projectReference?.slice(7);l&&me(u,l);for(let f of i.files.keys())f!=="woof.config.json"&&me(u,f);for(let f of Object.values(s.$projects??{}))typeof f=="string"&&me(u,f.slice(7));let p=ip(u,{});return u.conflicts=p.issues,u}function ip(e,t){zy(t);let n=Ct(e.bundle.configuration),r=Ct(e.bundle.project),i=Ct(e.local),o=Ct(e.selected.data??{}),s=new Map;for(let x of n.keys()){let j=t[ct("token",x,void 0,void 0).id];j&&typeof j=="object"&&(Pi(j.address),s.set(x,j.address))}for(let x of r.keys()){let j=t[ct("project-token",x,void 0,void 0).id];j&&typeof j=="object"&&!n.has(x)&&(Pi(j.address),s.set(x,j.address))}let a=[],c=[],u=[],l=[],p=new Set,f=structuredClone(_s(e.local,!1)),m=structuredClone(_s(e.selected.data??{},!0)),d=new Map([...i,...o]),h=(x,j,P)=>{let k=x==="root"?"token":"project-token",b=ct(k,j,void 0,void 0).id,N=t[b],_=Nn(N),O=s.get(j)??j,z=x==="root"&&N&&typeof N=="object"?N.address:O,B=x==="root"?e.local:e.selected.data??{},W=mt(B,x==="root"?j:z),q=By(e,k,j,z,W,P,s,x==="root"?i:d);x==="project"&&n.has(j)&&(q.notice=`${q.notice?`${q.notice} `:""}A reused token at another address is connected through a project alias at ${O}.`);let U=z===j&&gn(W,Fy(e,q.incoming,W))&&Ot(W)&>(W,re=>Qt(e,re))!==void 0&>(W,re=>Qt(e,re))===gt(P,re=>yn(e,re),s);if((!U||N)&&(a.push(q),l.push({item:q,origin:x,value:P,candidates:x==="root"?i:d})),U&&!N||!_||_==="keep")return;if(_==="reuse"){if(!N||typeof N=="string"||!q.candidates?.includes(N.address)){q.invalid=!0,q.notice=`Reuse for ${j} is no longer compatible; review this choice again.`;return}let re=(x==="root"?i:d).get(N.address),M={item:q,origin:x,value:P,address:N.address,original:re};if(u.push(M),x==="project"&&n.has(j)&&O!==N.address){let Y=typeof re=="string"?{}:{...re.$description!==void 0?{$description:re.$description}:{},...re.$tags!==void 0?{$tags:re.$tags}:{}},D=Object.keys(Y).length?{$type:"prompt",$exec:`{{${N.address}}}`,...Y}:`{{${N.address}}}`,V=mt(e.selected.data??{},O);if(V!==void 0&&!gn(V,D)){let te=ct("project-token",`${j}\0binding`,V,D);te.path=O,te.keepTakeOnly=!0,te.notice=`The reused token needs a project alias at ${O}. Taking replaces the existing project override; keeping it reopens this reuse choice.`,a.push(te);let ie=t[te.id];if(ie&&typeof ie=="object"){te.invalid=!0,te.notice+=" Choose Keep existing or Take incoming.";return}if(ie==="keep"){q.invalid=!0,q.notice=`Keeping the project override at ${O} is incompatible with this reuse; review the reuse choice again.`;return}if(ie!=="take")return}let Q=`project\0${O}`;if(p.has(Q)){q.invalid=!0,q.notice=`Multiple imported tokens target ${O}; choose distinct addresses.`;return}p.add(Q),_i(m,O,D),M.binding=O,M.sourcePath=j,c.push({origin:"project",path:O,value:D,added:!1,item:q})}return}let H=_==="add"&&N&&typeof N=="object"?N.address:z;if(_==="add"){if(x==="project"&&n.has(j)&&s.get(j)&&H!==s.get(j))throw new Error(`Project override ${j} must remain bound to ${s.get(j)}.`);if(Pi(H),H!==j&&(x==="root"?n:r).has(H)){q.invalid=!0,q.notice=`The new address ${H} is already used by another incoming token.`;return}if(mt(e.local,H)!==void 0||mt(e.selected.data??{},H)!==void 0){q.invalid=!0,q.notice=`The new token address ${H} is occupied; choose another address.`;return}x==="project"&&s.set(j,H)}let F=`${x}\0${H}`;if(p.has(F)){q.invalid=!0,q.notice=`Multiple imported tokens target ${H}; choose distinct addresses.`;return}p.add(F);let pe=x==="root"?f:m;try{_i(pe,H,q.incoming)}catch(re){p.delete(F),q.invalid=!0,q.notice=re instanceof Error?re.message:String(re);return}c.push({origin:x,path:H,value:q.incoming,added:_==="add",item:q})};for(let[x,j]of n)h("root",x,j);let y=e.selected.definition,v=e.bundle.configuration.$projects[e.bundle.projectName],w=y!==void 0&&(typeof y=="object"&&typeof v=="object"||y===v),A=ct("project",`$projects.${e.bundle.projectName}`,y,v),S={..._s(e.bundle.project,!0),...e.bundle.project.$metadata?{$metadata:e.bundle.project.$metadata}:{},$schemaVersion:Ae},g=new TextEncoder().encode(`${JSON.stringify(S,null,2)}
|
|
202
|
-
`);
|
|
203
|
-
`));let
|
|
204
|
-
`),
|
|
205
|
-
`);
|
|
206
|
-
`);if(!
|
|
207
|
-
`}function
|
|
208
|
-
`}function
|
|
201
|
+
`);return t?n.pop():n.push(n.pop().slice(0,-1)),n}var Ts,Vl=U(()=>{Hl();Ts={includeIndex:!0,includeUnderline:!0,includeFileHeaders:!0}});var ql=U(()=>{Vl()});import{createHash as Ty,randomUUID as Ay}from"node:crypto";import{chmodSync as Ry,lstatSync as Cy,mkdirSync as ep,readFileSync as js,realpathSync as Er,renameSync as Kl,rmdirSync as jy,rmSync as Os,statSync as Pi,writeFileSync as Iy}from"node:fs";import{basename as _y,dirname as Is,isAbsolute as tp,join as Oi,relative as Py,resolve as Ni,sep as _s,win32 as Oy}from"node:path";import{isDeepStrictEqual as Zl}from"node:util";function Ii(e){return Ty("sha256").update(e).digest("hex")}function _i(e,t){return e.byteLength===t.byteLength&&e.every((n,r)=>n===t[r])}function np(e){if(!e||_s==="\\"&&e.includes("\\")||e.includes("\0")||tp(e)||_s==="\\"&&Oy.isAbsolute(e)||e.split("/").some(t=>!t||t==="."||t===".."))throw new Error(`Unsafe import destination: ${e}`)}function br(e,t){let n=Py(e,t);return n===""||!n.startsWith(`..${_s}`)&&n!==".."&&!tp(n)}function Li(e,t){np(t);let n=Ni(e,t);try{if(t!=="woof.config.json"&&!br(Er(e),Er(n)))throw new Error(`Import destination escapes the woof home: ${t}`);if(!Pi(n).isFile())throw new Error(`Import destination is not a regular file: ${t}`);return js(n)}catch(r){if(r.code==="ENOENT")return;throw r}}function Jl(e,t){let n=Li(e,t.path),r=n?Ii(n):null,i=en(e,t.path).target;if(r!==t.digest||i!==t.physical)throw new Error(`Import destination ${t.path} changed after review; stale decisions were not applied.`);return n}function en(e,t){np(t);let n=Er(e),r=Ni(n,t),i=n,o=t.split("/");for(let s=0;s<o.length;s+=1){i=Oi(i,o[s]);try{if(Cy(i).isSymbolicLink()){try{i=Er(i)}catch(u){throw new Error(`Import destination has an unresolved symbolic link: ${i}`,{cause:u})}if(!(t==="woof.config.json"&&s===o.length-1)&&!br(n,i))throw new Error(`Import destination escapes the woof home: ${t}`)}let c=Pi(i);if(s===o.length-1&&!c.isFile())throw new Error(`Import destination is not a regular file: ${t}`);if(s<o.length-1&&!c.isDirectory())throw new Error(`Import destination parent is not a directory: ${t}`)}catch(a){if(a.code!=="ENOENT")throw a;let c=Ni(i,...o.slice(s+1));if(!br(n,c))throw new Error(`Import destination escapes the woof home: ${t}`,{cause:a});return{target:c,mode:384}}}if(t!=="woof.config.json"&&!br(n,i))throw new Error(`Import destination escapes the woof home: ${t}`);return{target:i,mode:Pi(r).mode&4095}}function Xl(e){return new TextEncoder().encode(`${JSON.stringify(e,null,2)}
|
|
202
|
+
`)}function Ny(e,t){let n=[];for(let[i,o]of[...e.files].sort(([s],[a])=>s.localeCompare(a))){let s=e.sources.find(u=>u.path===i);if(!s)throw new Error(`Reviewed source state is missing for ${i}.`);let a=t.get(i);if(a&&_i(a,o))continue;let c=en(e.home,i);n.push({path:i,data:o,original:a,originalDigest:s.digest,mode:c.mode,target:c.target,kind:"resource"})}if(e.projectFile){let{path:i,data:o}=e.projectFile,s=t.get(i),a=Xl(o);if(!(e.initialProject?.path===i&&Zl(e.initialProject.data,o)||s&&_i(s,a))){let u=e.sources.find(l=>l.path===i);if(!u)throw new Error(`Reviewed project source state is missing for ${i}.`);let p=en(e.home,i);n.push({path:i,data:a,original:s,originalDigest:u.digest,mode:p.mode,target:p.target,kind:"project"})}}if(!Zl(e.local,e.configuration)){let i="woof.config.json",o=e.sources.find(c=>c.path===i);if(!o)throw new Error("Reviewed root source state is missing.");let s=t.get(i),a=en(e.home,i);n.push({path:i,data:Xl(e.configuration),original:s,originalDigest:o.digest,mode:a.mode,target:a.target,kind:"registry"})}let r=new Map;for(let i of n){let o=r.get(i.target);if(o&&!_i(o.data,i.data))throw new Error(`Import paths ${o.path} and ${i.path} require conflicting writes to the same file.`);o||r.set(i.target,i)}return[...r.values()]}function Ly(e,t){let n=Er(e),r=Ni(n,t),i=Is(r),o=[],s=i;for(;s!==n;){if(!br(n,s))throw new Error(`Import parent escapes the woof home: ${t}`);try{if(!Pi(s).isDirectory())throw new Error(`Import parent is not a directory: ${s}`);break}catch(a){if(a.code!=="ENOENT")throw a;o.unshift(s),s=Is(s)}}return o}function Ps(e,t,n){Iy(e,t,{flag:"wx",mode:n}),Ry(e,n)}function Cs(e){let t=[];for(let n of e)try{Os(n,{force:!0})}catch(r){t.push(`Could not remove temporary artifact ${n}: ${r instanceof Error?r.message:String(r)}`)}return t}function Yl(e){let t=[];for(let n of e.sort((r,i)=>i.length-r.length))try{jy(n)}catch(r){let i=r.code;if(i==="ENOTEMPTY"||i==="EEXIST"||i==="ENOENT")continue;t.push(`Could not remove empty import directory ${n}: ${r instanceof Error?r.message:String(r)}`)}return t}function Ql(e,t){return Oi(Is(e),`.${_y(e)}.woof-import-${t}-${Ay()}.tmp`)}function xr(e,t,n,r=[],i=[],o){return{completed:e,restored:t,pending:n,recovery:r,warnings:i,...o?{backup:o}:{}}}function Dy(e,t){let n=new Map,r=c=>{if(n.has(c))return;let u=Li(e.home,c);u&&n.set(c,u)};r("woof.config.json");let i=[];for(let c of Object.values(e.local.$projects??{})){if(typeof c!="string"){i.push(c);continue}let u=c.slice(7);r(u);let p=n.get(u);p&&i.push(Je(new TextDecoder().decode(p),"project",u))}for(let c of xs(e.local,...i))c.startsWith("<root>/")&&r(c.slice(7));for(let c of t)c.original&&n.set(c.path,c.original);let o=_l([...n].sort(([c],[u])=>c.localeCompare(u)).map(([c,u])=>({path:c,data:u}))),s=Oi(e.home,".backups");ep(s,{recursive:!0,mode:448});let a=new Date().toISOString().replaceAll(":","-");for(let c=1;;c+=1){let u=Oi(s,`import-${a}${c===1?"":`-${c}`}.zip`);try{return Ps(u,o,384),u}catch(p){if(p.code==="EEXIST")continue;throw Os(u,{force:!0}),p}}}function rp(e){let t=new Map;for(let c of e.sources)t.set(c.path,Jl(e.home,c));for(let c of e.externalSources)if(Ii(js(c.path))!==c.digest)throw new Error(`Reuse source ${c.path} changed after review.`);let n=Ny(e,t);if(!n.length)return xr([],[],[]);let r;try{r=Dy(e,n)}catch(c){throw new Ct(`Import backup failed before any change: ${c instanceof Error?c.message:String(c)}`,xr([],[],n.map(u=>u.path)),{cause:c})}let i=[],o=[];try{for(let c of n){for(let l of Ly(e.home,c.path))ep(l),i.push(l);let u=Ql(c.target,"stage"),p={...c,staging:u,backup:void 0};if(o.push(p),Ps(u,c.data,c.mode),c.original){let l=Ql(c.target,"backup");p.backup=l,Ps(l,c.original,c.mode)}}for(let c of e.sources)Jl(e.home,c);for(let c of e.externalSources)if(Ii(js(c.path))!==c.digest)throw new Error(`Reuse source ${c.path} changed after review.`)}catch(c){let u=[...Cs(o.flatMap(p=>[p.staging,...p.backup?[p.backup]:[]])),...Yl(i)];throw new Ct(`Import staging failed before any live replacement: ${c instanceof Error?c.message:String(c)}`,xr([],[],n.map(p=>p.path),[],u,r),{cause:c})}let s=[];try{for(let c of o){let u=Li(e.home,c.path);if((u?Ii(u):null)!==c.originalDigest)throw new Error(`Import destination ${c.path} changed before replacement; stale decisions were not applied.`);if(en(e.home,c.path).target!==c.target)throw new Error(`Import destination ${c.path} changed location before replacement.`);Kl(c.staging,c.target),s.push(c)}}catch(c){let u=[],p=[],l=[];for(let g of[...s].reverse())try{let v=g.target;if(en(e.home,g.path).target!==v)throw new Error(`Import destination ${g.path} changed location before rollback.`,{cause:c});let y=Li(e.home,g.path);if(!y||!_i(y,g.data)){g.backup&&p.push(g.backup),l.push(`${g.path} changed after replacement and was not overwritten during rollback.`);continue}g.original?Kl(g.backup,v):Os(v),u.push(g.path)}catch(v){g.backup&&p.push(g.backup),l.push(`${g.path} could not be restored: ${v instanceof Error?v.message:String(v)}`)}let f=new Set(s.map(g=>g.backup).filter(Boolean)),d=o.filter(g=>!f.has(g.backup)&&g.backup).map(g=>g.backup),m=[...Cs([...o.map(g=>g.staging),...d]),...Yl(i)],h=o.filter(g=>!s.includes(g)).map(g=>g.path);throw new Ct(`Import failed: ${c instanceof Error?c.message:String(c)}. ${l.join(" ")}`,xr(s.map(g=>g.path),u,h,[...new Set(p)],[...m,...l],r),{cause:c})}let a=Cs(o.flatMap(c=>[c.staging,...c.backup?[c.backup]:[]]));return xr(s.map(c=>c.path),[],[],o.filter(c=>c.backup&&a.some(u=>u.includes(c.backup))).map(c=>c.backup),a,r)}var Ct,Ns=U(()=>{"use strict";Ci();kt();Ct=class extends Error{report;constructor(t,n,r){super(t,r),this.name="ImportApplyError",this.report=n}}});import{createHash as My}from"node:crypto";function rt(e){let t=new Map;function n(r,i){for(let[o,s]of Object.entries(r)){if(o.startsWith("$"))continue;let a=i?`${i}.${o}`:o;typeof s=="string"||s&&typeof s=="object"&&("$type"in s||"$exec"in s)?t.set(a,s):s&&typeof s=="object"&&n(s,a)}}return n(e,""),t}function vt(e,t){let n=e;for(let r of t.split(".")){if(!n||typeof n!="object"||Array.isArray(n)||!Object.hasOwn(n,r))return;n=n[r]}return n}function Di(e,t,n){let r=t.split("."),i=e;for(let o of r.slice(0,-1)){let s=i[o];if(s===void 0)i[o]={};else if(!s||typeof s!="object"||Array.isArray(s)||"$type"in s||"$exec"in s)throw new Error(`Token address ${t} conflicts with the existing token ${o}.`);i=i[o]}i[r.at(-1)]=structuredClone(n)}function Mi(e){if(Pt(e))throw new Error(`Token address ${e} is reserved for internal markers.`);if(!/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/.test(e)||e.split(".").some(t=>["__proto__","prototype","constructor"].includes(t)))throw new Error(`Invalid token address: ${e}`)}function ip(e,t){return typeof e=="string"?e.startsWith("<root>/")||e.startsWith("<repo>/")?e:di(e,t):e.$type==="prompt"&&!e.$exec.startsWith("<root>/")&&!e.$exec.startsWith("<repo>/")?{...e,$exec:di(e.$exec,t)}:e}function tn(e){return(typeof e=="string"?[e]:Array.isArray(e.$exec)?e.$exec:[e.$exec]).filter(n=>n.startsWith("<root>/")||n.startsWith("<repo>/"))}function op(e,t){if(typeof e=="string")return t.get(e)??e;let n=r=>t.get(r)??r;return{...e,$exec:Array.isArray(e.$exec)?e.$exec.map(n):n(e.$exec)}}function Ls(e,t){let n=Buffer.from(e).toString("latin1"),r=di(n,t);return r===n?e:Buffer.from(r,"latin1")}function wt(e,t,n=new Map){let r=typeof e=="string"||e.$type==="prompt",i=typeof e=="string"?"prompt":e.$type,o=typeof e=="string"?[e]:Array.isArray(e.$exec)?e.$exec:[e.$exec],s=[];for(let a of o){let c=a.startsWith("<root>/")||a.startsWith("<repo>/"),u=c?t(a):new TextEncoder().encode(a);if(!u)return;let p=r?Ls(u,n):u,l=My("sha256").update(p).digest("hex");s.push(`${r?"":c?"file:":"inline:"}${l}`)}return JSON.stringify({type:i,private:fi(e),array:!r&&typeof e!="string"&&Array.isArray(e.$exec),parts:s})}function Mt(e){return typeof e=="string"||!!(e&&typeof e=="object"&&("$type"in e||"$exec"in e))}var Ds=U(()=>{"use strict";_n();et()});import{createHash as Fy}from"node:crypto";import{readFileSync as Bs,realpathSync as Fn,statSync as zy}from"node:fs";import{isAbsolute as ap,relative as By,resolve as Dn,sep as Fs,win32 as Uy}from"node:path";import{isDeepStrictEqual as vn}from"node:util";function Ft(e){return Fy("sha256").update(e).digest("hex")}function sp(e){return e instanceof Uint8Array?Ft(e):Ft(JSON.stringify(e)??"undefined")}function lt(e,t,n,r){let i=sp(n),o=sp(r);return{id:Ft(`${e}\0${t}`).slice(0,32),kind:e,path:t,existing:n,incoming:r,existingDigest:i,incomingDigest:o}}function Ms(e,t){return Object.fromEntries(Object.entries(e).filter(([n])=>n!=="$schemaVersion"&&n!=="$projects"&&(!t||n!=="$metadata")))}function Sr(e){if(!e||Fs==="\\"&&e.includes("\\")||e.includes("\0")||ap(e)||Fs==="\\"&&Uy.isAbsolute(e)||e.split("/").some(t=>!t||t==="."||t===".."))throw new Error(`Unsafe home resource destination: ${e}`);return e}function zs(e,t){let n=By(e,t);return n===""||!n.startsWith(`..${Fs}`)&&n!==".."&&!ap(n)}function Fe(e,t){return e.byteLength===t.byteLength&&e.every((n,r)=>n===t[r])}function Gy(e,t){Sr(t);let n=Dn(e,t);try{if(t!=="woof.config.json"&&!zs(Fn(e),Fn(n)))throw new Error(`Import destination escapes the woof home: ${t}`);if(!zy(n).isFile())throw new Error(`Import destination is not a regular file: ${t}`);return Bs(n)}catch(r){if(r.code==="ENOENT")return;throw r}}function Us(e,t){let n=Gy(e,t);return{path:t,digest:n?Ft(n):null,physical:en(e,t).target,...n?{data:n}:{}}}function Hy(e,t,n){let r=e.$projects?.[t.projectName];if(r===void 0)return{definition:r,data:void 0,file:void 0,source:void 0};if(typeof r=="string"){let i=r.slice(7),o=Us(n,i);if(!o.data)throw new Error(`Local selected project configuration is missing: ${i}`);let s=Je(new TextDecoder().decode(o.data),"project",i);return{definition:r,data:s,file:{path:i,data:s},source:o}}return{definition:r,data:r,file:void 0,source:void 0}}function me(e,t){let n=e.snapshots.get(t);return n||(n=Us(e.home,t),e.snapshots.set(t,n)),n}function nn(e,t){if(t.startsWith("<root>/"))try{return me(e,t.slice(7)).data}catch{return}if(!(!t.startsWith("<repo>/")||!e.checkout))try{let n=xt(t,{repoRoot:e.checkout}).file,r=Bs(n),i=Ft(r),o=e.external.get(n);if(o&&o!==i)throw new Error(`Reuse source changed during review: ${n}`);return e.external.set(n,i),r}catch(n){if(n.code==="ENOENT")return;if(n instanceof Error&&n.message.startsWith("Reuse source changed"))throw n;return}}function wn(e,t){return t.startsWith("<root>/")?e.bundle.files.get(t.slice(7)):void 0}function cp(e){return Object.entries(e.local.$projects??{}).flatMap(([t,n])=>{if(typeof n!="string")return[[t,n]];let r=nn(e,n);if(!r)return[];try{return[[t,Je(new TextDecoder().decode(r),"project",n.slice(7))]]}catch{return[]}})}function Wy(e,t){let n=new Set,r=[["",e.local],...cp(e)];for(let[i,o]of r)for(let[s,a]of rt(o))tn(a).includes(t)&&n.add(`${i}\0${s}`);return n}function Vy(e,t){let n=rt(e.local),r=i=>typeof i!="string"&&i.$type!=="prompt"?[]:(typeof i=="string"?[i]:Array.isArray(i.$exec)?i.$exec:[i.$exec]).flatMap(s=>{if(s.startsWith("<repo>/"))return[];let a=s.startsWith("<root>/")?nn(e,s):void 0;return s.startsWith("<root>/")&&!a?[]:hi(a?new TextDecoder().decode(a):s)});return cp(e).flatMap(([i,o])=>{let s=rt(o);if(s.has(t))return[];let a=new Set,c=u=>{if(u===t)return!0;if(a.has(u))return!1;a.add(u);let p=s.get(u)??n.get(u);return p?r(p).some(c):!1};return[...s.values()].some(u=>r(u).some(c))?[i]:[]})}function qy(e,t,n){if(!Mt(t)||!Mt(n))return t;let r=`<root>/${e.bundle.projectName}-repo-export/`,i=tn(n),o=a=>{let c=`<repo>/${a.slice(r.length)}`;return a.startsWith(r)&&i.includes(c)?c:a},s=t;return typeof s=="string"?o(s):{...s,$exec:Array.isArray(s.$exec)?s.$exec.map(o):o(s.$exec)}}function Mn(e){return typeof e=="string"?e:e?.action}function Ky(e){for(let[t,n]of Object.entries(e))if(!(n==="keep"||n==="take")&&(!n||typeof n!="object"||!["add","reuse"].includes(n.action)||typeof n.address!="string"))throw new Error(`Import decision ${t} must be keep, take, or an add/reuse choice with an address.`)}function Zy(e,t,n,r,i,o,s,a){let c=ip(o,s),u=lt(t,n,i,c),p=wt(o,f=>wn(e,f),s);u.incomingDigest=Ft(`${u.incomingDigest}\0${p??"missing content"}`),u.existingDigest=Ft(`${u.existingDigest}\0${Mt(i)?wt(i,f=>nn(e,f))??"missing content":""}`),u.candidates=[...a.entries()].filter(([f,d])=>f!==n&&!dt(o)&&!dt(d)&&p!==void 0&&wt(d,m=>nn(e,m))===p).map(([f])=>f).sort(),u.candidateDetails=u.candidates.map(f=>{let d=a.get(f);return typeof d=="string"?{address:f}:{address:f,...d.$description!==void 0?{description:d.$description}:{},...d.$tags!==void 0?{tags:d.$tags}:{}}});let l=Mt(i)?tn(i):[];if(u.files=tn(o).flatMap((f,d)=>{let m=l.includes(f)?f:l[d],h=m?nn(e,m):void 0,g=wn(e,f);return!h&&!g||h&&g&&Fe(h,g)?[]:[{reference:f,...h?{existing:h}:{},...g?{incoming:g}:{}}]}),t==="token"&&i!==void 0){let f=Vy(e,n);f.length&&(u.notice=`Taking this shared token affects the projects that use it: ${f.join(", ")}.`)}return p===void 0&&(u.notice=`${u.notice?`${u.notice} `:""}Incoming file content is unavailable; it cannot be matched for reuse.`),r!==n&&(u.notice=`${u.notice?`${u.notice} `:""}Imported address maps to ${r}.`),u}function up(e,t={}){let n=t.cwd??process.cwd(),r=Fn(t.home??J()),i=jl(e),o=Us(r,"woof.config.json");if(!o.data)throw new Error("The local root configuration is missing; initialize woof before import planning.");let s=Je(new TextDecoder().decode(o.data),"root",J("woof.config.json")),a=Hy(s,i,r),c=a.data?nr({name:i.projectName,data:a.data},n,ve(n)):void 0,u={archiveDigest:Ft(e),bundle:i,checkout:c,cwd:n,home:r,local:s,selected:a,snapshots:new Map([[o.path,o]]),external:new Map,conflicts:[]};a.source&&u.snapshots.set(a.source.path,a.source);let p=i.projectReference?.slice(7);p&&me(u,p);for(let f of i.files.keys())f!=="woof.config.json"&&me(u,f);for(let f of Object.values(s.$projects??{}))typeof f=="string"&&me(u,f.slice(7));let l=lp(u,{});return u.conflicts=l.issues,u}function lp(e,t){Ky(t);let n=rt(e.bundle.configuration),r=rt(e.bundle.project),i=rt(e.local),o=rt(e.selected.data??{}),s=new Map;for(let E of n.keys()){let j=t[lt("token",E,void 0,void 0).id];j&&typeof j=="object"&&(Mi(j.address),s.set(E,j.address))}for(let E of r.keys()){let j=t[lt("project-token",E,void 0,void 0).id];j&&typeof j=="object"&&!n.has(E)&&(Mi(j.address),s.set(E,j.address))}let a=[],c=[],u=[],p=[],l=new Set,f=structuredClone(Ms(e.local,!1)),d=structuredClone(Ms(e.selected.data??{},!0)),m=new Map([...i,...o]),h=(E,j,_)=>{let x=E==="root"?"token":"project-token",b=lt(x,j,void 0,void 0).id,O=t[b],N=Mn(O),P=s.get(j)??j,z=E==="root"&&O&&typeof O=="object"?O.address:P,B=E==="root"?e.local:e.selected.data??{},H=vt(B,E==="root"?j:z),W=Zy(e,x,j,z,H,_,s,E==="root"?i:m);E==="project"&&n.has(j)&&(W.notice=`${W.notice?`${W.notice} `:""}A reused token at another address is connected through a project alias at ${P}.`);let G=z===j&&vn(H,qy(e,W.incoming,H))&&Mt(H)&&wt(H,ee=>nn(e,ee))!==void 0&&wt(H,ee=>nn(e,ee))===wt(_,ee=>wn(e,ee),s);if((!G||O)&&(a.push(W),p.push({item:W,origin:E,value:_,candidates:E==="root"?i:m})),G&&!O||!N||N==="keep")return;if(N==="reuse"){if(!O||typeof O=="string"||!W.candidates?.includes(O.address)){W.invalid=!0,W.notice=`Reuse for ${j} is no longer compatible; review this choice again.`;return}let ee=(E==="root"?i:m).get(O.address),M={item:W,origin:E,value:_,address:O.address,original:ee};if(u.push(M),E==="project"&&n.has(j)&&P!==O.address){let Y=typeof ee=="string"?{}:{...ee.$description!==void 0?{$description:ee.$description}:{},...ee.$tags!==void 0?{$tags:ee.$tags}:{},...ee.$private!==void 0?{$private:ee.$private}:{}},D=Object.keys(Y).length?{$type:"prompt",$exec:`{{${O.address}}}`,...Y}:`{{${O.address}}}`,q=vt(e.selected.data??{},P);if(q!==void 0&&!vn(q,D)){let ne=lt("project-token",`${j}\0binding`,q,D);ne.path=P,ne.keepTakeOnly=!0,ne.notice=`The reused token needs a project alias at ${P}. Taking replaces the existing project override; keeping it reopens this reuse choice.`,a.push(ne);let ie=t[ne.id];if(ie&&typeof ie=="object"){ne.invalid=!0,ne.notice+=" Choose Keep existing or Take incoming.";return}if(ie==="keep"){W.invalid=!0,W.notice=`Keeping the project override at ${P} is incompatible with this reuse; review the reuse choice again.`;return}if(ie!=="take")return}let Q=`project\0${P}`;if(l.has(Q)){W.invalid=!0,W.notice=`Multiple imported tokens target ${P}; choose distinct addresses.`;return}l.add(Q),Di(d,P,D),M.binding=P,M.sourcePath=j,c.push({origin:"project",path:P,value:D,added:!1,item:W})}return}let V=N==="add"&&O&&typeof O=="object"?O.address:z;if(N==="add"){if(E==="project"&&n.has(j)&&s.get(j)&&V!==s.get(j))throw new Error(`Project override ${j} must remain bound to ${s.get(j)}.`);if(Mi(V),V!==j&&(E==="root"?n:r).has(V)){W.invalid=!0,W.notice=`The new address ${V} is already used by another incoming token.`;return}if(vt(e.local,V)!==void 0||vt(e.selected.data??{},V)!==void 0){W.invalid=!0,W.notice=`The new token address ${V} is occupied; choose another address.`;return}E==="project"&&s.set(j,V)}let F=`${E}\0${V}`;if(l.has(F)){W.invalid=!0,W.notice=`Multiple imported tokens target ${V}; choose distinct addresses.`;return}l.add(F);let pe=E==="root"?f:d;try{Di(pe,V,W.incoming)}catch(ee){l.delete(F),W.invalid=!0,W.notice=ee instanceof Error?ee.message:String(ee);return}c.push({origin:E,path:V,value:W.incoming,added:N==="add",item:W})};for(let[E,j]of n)h("root",E,j);let g=e.selected.definition,v=e.bundle.configuration.$projects[e.bundle.projectName],y=g!==void 0&&(typeof g=="object"&&typeof v=="object"||g===v),R=lt("project",`$projects.${e.bundle.projectName}`,g,v),A={...Ms(e.bundle.project,!0),...e.bundle.project.$metadata?{$metadata:e.bundle.project.$metadata}:{},$schemaVersion:Ce},k=new TextEncoder().encode(`${JSON.stringify(A,null,2)}
|
|
203
|
+
`);R.candidates=[...e.snapshots.values()].filter(E=>E.path!=="woof.config.json"&&E.data&&Fe(E.data,k)).map(E=>E.path);let w=t[R.id];y||a.push(R);let T=g!==void 0||Mn(w)!=="keep";if(T)for(let[E,j]of r)h("project",E,j);let S=e.selected.data?.$metadata,C=e.bundle.project.$metadata,$=S;if(T&&C!==void 0&&!vn(S,C)){let E=lt("project-token","$metadata",S,C);a.push(E),t[E.id]&&typeof t[E.id]=="object"?(E.invalid=!0,E.notice="Project metadata supports Keep existing or Take incoming."):Mn(t[E.id])==="take"&&($=C)}return{issues:a,mappings:s,root:f,project:d,metadata:$,projectChoice:w,includeProject:T,selectedTokens:c,reuses:u,tokenChecks:p}}function rn(e,t){let n=lp(e,t),r=[...n.issues],i=()=>r.filter(k=>!t[k.id]||k.invalid),o,s=new Map,a=new Map,c=new Map,u=new Map,p=new Map;for(let k of n.selectedTokens){let w=typeof k.value=="string"||k.value.$type==="prompt",T=`${k.origin==="root"?"":e.bundle.projectName}\0${k.path}`;for(let S of tn(k.value)){let C=`${S}\0${w?"prompt":"script"}`,$=p.get(C);p.set(C,{reference:S,prompt:w,added:k.added||!!$?.added,users:new Set([...$?.users??[],T])})}}for(let[k,w]of p){let T=w.reference,S=T.startsWith("<root>/")?T.slice(7):T,$=wn(e,T),E=!1;if($&&w.prompt){let G=Ls($,n.mappings);G!==$&&($=G,E=!0)}let j=T.startsWith("<root>/")?me(e,S).data:void 0,_=w.added||!!($&&E);if($&&j&&Fe($,j)&&!_){u.set(k,T);continue}let x=lt("file",`${S}\0${w.prompt?"prompt":"script"}`,j,$);if(x.path=S,x.requiredNewPath=_,$?_&&(x.notice="Choose a distinct destination for the imported file."):x.notice=`Incoming file ${T} is unavailable; ${_?"choose a distinct destination":"keeping the reference"} will produce a validation finding.`,j&&(x.notice=`${x.notice?`${x.notice} `:""}Taking replaces this file for every existing token that uses it.`),j&&T.startsWith("<root>/")){let G=Fn(Dn(e.home,S)),V=Object.entries(e.local.$projects??{}).filter(([,pe])=>{if(typeof pe!="string")return!1;let ee=me(e,pe.slice(7));return ee.data&&Fn(Dn(e.home,ee.path))===G}).map(([pe])=>pe);V.length&&(x.notice=`This file is registered as configuration for ${V.join(", ")}. Taking raw bytes may prevent woof from starting. ${x.notice??""}`);let F=Wy(e,T);!V.length&&F.size&&[...F].every(pe=>w.users.has(pe))&&(x.derived=!0)}let b=T.startsWith("<root>/")?me(e,S).physical:null;x.candidates=$&&!w.added?[...e.snapshots.values()].filter(G=>G.data&&Fe(G.data,$)&&(!_||G.path!==S&&(!b||G.physical!==b))).map(G=>G.path):[],r.push(x);let O=t[x.id],N=Mn(O);if(!N)continue;if(N==="keep"){if(_)throw new Error(`File ${S} requires a distinct destination; choose Add as new.`);if(T.startsWith("<root>/")){let G=me(e,S),V=G.physical??Dn(e.home,S),F=c.get(V);if(F&&F.action!=="keep"&&(!G.data||!F.data||!Fe(G.data,F.data))){x.invalid=!0,x.notice=`Keeping ${S} conflicts with an earlier choice to replace the same file.`;continue}c.set(V,{action:"keep",item:x,...G.data?{data:G.data}:{}})}u.set(k,T);continue}if(!$){if(_&&O&&typeof O=="object"&&O.action==="add"){let G=Sr(O.address.replace(/^<root>\//,"")),V=me(e,G);if(G===S||V.physical===b||V.data)throw new Error(`Choose a distinct unused file destination instead of ${G}.`);let F=V.physical;if(c.has(F)){x.invalid=!0,x.notice="This destination is already claimed by another import decision.";continue}c.set(F,{action:"reserve",item:x}),u.set(k,`<root>/${G}`);continue}throw new Error(`File ${T} is unavailable and cannot be taken or reused.`)}let P=S;if(O&&typeof O=="object"){P=Sr(O.address.startsWith("<root>/")?O.address.slice(7):O.address);let G=me(e,P).data;if(O.action==="add"&&(G||_&&P===S))throw new Error(`Choose a distinct unused file destination instead of ${P}.`);if(O.action==="reuse"&&(!G||!Fe(G,$)))throw new Error(`File ${P} is no longer identical; review reuse again.`);if(O.action==="reuse"){if(_&&(w.added||P===S||b&&me(e,P).physical===b))throw new Error("This file needs a distinct destination.");u.set(k,`<root>/${P}`);continue}}else if(_)throw new Error(`File ${S} requires a distinct destination; choose Add as new.`);if(P==="woof.config.json")throw new Error("A raw payload cannot replace the root registry.");let B=me(e,P).physical??Dn(e.home,P),H=c.get(B);if(H&&(H.action==="reserve"||H.added||O&&typeof O=="object"&&O.action==="add"||!H.data||!Fe(H.data,$))){x.invalid=!0,x.notice="This choice conflicts with an earlier decision for the same file; select a different destination.";continue}c.set(B,{action:"write",data:$,item:x,added:typeof O=="object"&&O.action==="add"});let W=s.get(P);if(W&&!Fe(W,$))throw new Error(`Multiple imported files require incompatible bytes at ${P}.`);s.set(P,$),a.set(P,x),u.set(k,`<root>/${P}`)}function l(k){let w=new Map(s);k&&w.set(k.path,new TextEncoder().encode(`${JSON.stringify(k.data,null,2)}
|
|
204
|
+
`));let T=E=>{if(!E.startsWith("<root>/"))return nn(e,E);let j=E.slice(7),_=me(e,j);for(let[x,b]of w){let O=me(e,x);if(x===j||_.physical&&O.physical===_.physical)return b}return _.data},S=rt(e.bundle.configuration),C=rt(e.bundle.project),$=E=>{let j=new Set,_=x=>{if(x===E&&j.size)return!0;if(j.has(x))return!1;j.add(x);let b=C.get(x)??S.get(x);if(!b||typeof b!="string"&&b.$type!=="prompt")return!1;let O=typeof b=="string"?b:b.$exec,N=O.startsWith("<root>/")||O.startsWith("<repo>/"),P=N?wn(e,O):void 0;return N&&!P?!1:hi(P?new TextDecoder().decode(P):O).some(_)};return _(E)};for(let E of n.tokenChecks){let j=wt(E.value,_=>wn(e,_),n.mappings);E.item.candidates=[...E.candidates.entries()].filter(([_,x])=>{if(_===E.item.path||dt(E.value)||dt(x))return!1;let b=(E.origin==="project"?vt(n.project,_):void 0)??vt(n.root,_);return j!==void 0&&vn(b,x)&&Mt(b)&&wt(b,T)===j}).map(([_])=>_).sort(),E.item.candidateDetails=E.item.candidates.map(_=>{let x=E.candidates.get(_);return typeof x=="string"?{address:_}:{address:_,...x.$description!==void 0?{description:x.$description}:{},...x.$tags!==void 0?{tags:x.$tags}:{}}})}for(let E of n.reuses){if(E.binding&&E.sourcePath&&E.binding!==E.sourcePath){let b=new Set,O=N=>{if(N===E.binding)return!0;if(b.has(N))return!1;b.add(N);let P=vt(n.project,N)??vt(n.root,N);if(!Mt(P))return!1;let z=P;if(typeof z!="string"&&z.$type!=="prompt")return!1;let B=typeof z=="string"?z:z.$exec,H=B.startsWith("<root>/")||B.startsWith("<repo>/")?T(B):void 0;if((B.startsWith("<root>/")||B.startsWith("<repo>/"))&&!H)return!1;let W=H?new TextDecoder().decode(H):B;return hi(W).some(O)};if(O(E.address)&&!$(E.sourcePath)){E.item.invalid=!0,E.item.notice=`Reuse would make the project binding ${E.binding} reference itself; choose a different mapping.`;let N=r.find(P=>P.id===lt("token",E.sourcePath,void 0,void 0).id);N&&t[N.id]&&typeof t[N.id]=="object"&&(N.invalid=!0,N.notice="This mapping makes the reused project override circular; choose a different address.");continue}}let j=(E.origin==="project"?vt(n.project,E.address):void 0)??vt(n.root,E.address),_=wt(E.value,b=>wn(e,b),n.mappings),x=Mt(j)?wt(j,T):void 0;if(!vn(j,E.original)||!_||x!==_){if(E.item.invalid=!0,E.item.notice=`The reused token ${E.address} changes under another choice; review this reuse again.`,E.item.candidates=(E.item.candidates??[]).filter(b=>b!==E.address),!vn(j,E.original))for(let b of n.selectedTokens)b.path===E.address&&(E.origin==="project"||b.origin==="root")&&(b.item.invalid=!0,b.item.notice=`This token change conflicts with reuse of ${E.address}; review both choices.`);for(let b of tn(E.original)){if(!b.startsWith("<root>/"))continue;let O=b.slice(7),N=me(e,O);for(let[P,z]of a){let B=me(e,P);(P===O||N.physical&&N.physical===B.physical)&&(z.invalid=!0,z.notice=`This file change conflicts with reuse of ${E.address}; review both choices.`)}}}}}if(l(),o=i(),o.length)return{status:"incomplete",next:o[0],remaining:o.length,issues:r};for(let k of n.selectedTokens){let w=typeof k.value=="string"||k.value.$type==="prompt",T=new Map;for(let C of tn(k.value)){let $=u.get(`${C}\0${w?"prompt":"script"}`);$&&T.set(C,$)}let S=op(k.value,T);Di(k.origin==="root"?n.root:n.project,k.path,S)}let f=e.selected.definition,d=e.bundle.configuration.$projects[e.bundle.projectName],h=Mn(n.projectChoice)==="keep"?f:d;if(n.projectChoice&&typeof n.projectChoice=="object"){let k=Sr(n.projectChoice.address.replace(/^<root>\//,"")),w=me(e,k).data;if(n.projectChoice.action==="add"&&w){let T=r.find(S=>S.id===lt("project",`$projects.${e.bundle.projectName}`,void 0,void 0).id);return T.invalid=!0,T.notice=`Project storage ${k} is occupied; choose another path.`,{status:"incomplete",next:T,remaining:1,issues:r}}h=`<root>/${k}`}let g={...n.project,...n.metadata?{$metadata:n.metadata}:{}},v;if(n.includeProject&&typeof h=="string"){let k=h.slice(7),w=Ze({...g,$schemaVersion:Ce},"project",h),T=new TextEncoder().encode(`${JSON.stringify(w,null,2)}
|
|
205
|
+
`),S=me(e,k).data;if(n.projectChoice&&typeof n.projectChoice=="object"&&n.projectChoice.action==="reuse"&&(!S||!Fe(S,T))){let $=r.find(E=>E.id===lt("project",`$projects.${e.bundle.projectName}`,void 0,void 0).id);return $.invalid=!0,$.notice=`Project storage ${k} is no longer identical; review reuse again.`,{status:"incomplete",next:$,remaining:1,issues:r}}if(!(e.selected.file?.path===k&&vn(e.selected.file.data,w))&&(!S||!Fe(S,T))){let $=lt("file",`${k}\0project configuration`,S,T);$.path=k,$.candidates=[...e.snapshots.values()].filter(B=>B.data&&Fe(B.data,T)).map(B=>B.path);let E=me(e,k).physical,j=Object.entries(e.local.$projects??{}).filter(([,B])=>{if(typeof B!="string")return!1;let H=me(e,B.slice(7));return H.path===k||!!(E&&H.physical===E)}).map(([B])=>B);j.every(B=>B===e.bundle.projectName)?$.derived=!0:$.notice=`This configuration is used by ${j.join(", ")}; taking changes affects those projects.`,r.push($);let _=t[$.id],x=Mn(_),b=k;_&&typeof _=="object"&&(b=Sr(_.address.replace(/^<root>\//,"")));let O=me(e,b);if(_&&typeof _=="object"&&_.action==="add"&&O.data)throw new Error(`Project storage ${b} is occupied.`);if(_&&typeof _=="object"&&_.action==="reuse"&&(!O.data||!Fe(O.data,T)))throw new Error(`Project storage ${b} is not identical.`);let N=O.physical??Dn(e.home,b),P=c.get(N),z=x==="keep"?O.data:T;x&&P&&(P.action==="reserve"||P.added||_&&typeof _=="object"&&_.action==="add"||!P.data||!z||!Fe(P.data,z))?($.invalid=!0,$.notice="This decision conflicts with another choice for the same physical file."):x==="take"?(v={path:k,data:w},a.set(k,$)):_&&typeof _=="object"&&(h=`<root>/${b}`,_.action==="add"&&(v={path:b,data:w},a.set(b,$)))}else v={path:k,data:w}}if(v){let k=me(e,v.path),w=c.get(k.physical),T=new TextEncoder().encode(`${JSON.stringify(v.data,null,2)}
|
|
206
|
+
`);w&&(!w.data||!Fe(w.data,T))&&(w.item.invalid=!0,w.item.notice="This destination conflicts with the imported project configuration.")}if(l(v),o=i(),o.length)return{status:"incomplete",next:o[0],remaining:o.length,issues:r};let y={...e.local.$projects};n.includeProject&&(y[e.bundle.projectName]=typeof h=="string"?h:g);let R=Ze({...n.root,$schemaVersion:Ce,$projects:y},"root","import candidate");if(v&&s.has(v.path)){let k=new TextEncoder().encode(`${JSON.stringify(v.data,null,2)}
|
|
207
|
+
`);if(!Fe(s.get(v.path),k))throw new Error(`Project configuration and raw payload require incompatible writes to ${v.path}.`)}let A=[...e.snapshots.values()].map(({path:k,digest:w,physical:T})=>({path:k,digest:w,physical:T}));return{status:"ready",issues:r,candidate:{configuration:R,files:s,home:e.home,local:e.local,projectFile:v,projectName:e.bundle.projectName,initialProject:e.selected.file,sources:A,externalSources:[...e.external].map(([k,w])=>({path:k,digest:w}))}}}function pp(e){return{home:[...e.snapshots.values()].map(({path:t,digest:n,physical:r})=>({path:t,digest:n,physical:r})),external:[...e.external].map(([t,n])=>({path:t,digest:n}))}}function fp(e,t){if(!t||!Array.isArray(t.home)||!Array.isArray(t.external))throw new Error("Decisions are missing reviewed source snapshots.");for(let r of t.home){if(!r||typeof r.path!="string"||typeof r.digest!="string"&&r.digest!==null||typeof r.physical!="string"&&r.physical!==null)throw new Error("Decisions contain invalid source snapshots.");let i=me(e,r.path);if(i.digest!==r.digest||i.physical!==r.physical)throw new Error(`Import destination ${r.path} changed after review; review it again.`)}let n=e.checkout;for(let r of t.external){if(!r||typeof r.path!="string"||typeof r.digest!="string"||!n||!zs(n,r.path))throw new Error("Decisions contain an invalid checkout source.");let i=Fn(r.path);if(!zs(n,i)||Ft(Bs(i))!==r.digest)throw new Error(`Reuse source ${r.path} changed after review.`);e.external.set(i,r.digest)}}var hp=U(()=>{"use strict";Ci();kt();Ns();Ds();Ie();_n();Xe();Ee();Vn();et()});import{createHash as Jy}from"node:crypto";import{readFileSync as $p}from"node:fs";import{resolve as dp}from"node:path";import{parseArgs as Xy}from"node:util";function xp(e){return typeof e=="string"?e:`${JSON.stringify(e,null,2)}
|
|
208
|
+
`}function Yy(e){return`Binary content: ${e.byteLength} bytes, SHA-256 ${Jy("sha256").update(e).digest("hex")}
|
|
209
|
+
`}function Fi(e){return e===void 0?"":e instanceof Uint8Array?Yy(e):xp(e)}function Gs(e,t){return Rs("",e,t,"","",{context:3}).split(`
|
|
209
210
|
`).slice(4).filter(n=>!n.startsWith("\\ No newline")).join(`
|
|
210
|
-
`).trimEnd()}function
|
|
211
|
-
`)}}function
|
|
212
|
-
`;if(!e||typeof e!="object"||!("$exec"in e))return
|
|
211
|
+
`).trimEnd()}function gp(e){return e.candidateDetails??(e.candidates??[]).map(t=>({address:t}))}function yp(e,t){let n=new TextDecoder("utf-8",{fatal:!0});try{return Gs(e===void 0?"":n.decode(e),t===void 0?"":n.decode(t))}catch{return[Fi(e),Fi(t)].filter(Boolean).join(`
|
|
212
|
+
`)}}function vp(e){if(e===void 0)return"";if(typeof e=="string")return`${e}
|
|
213
|
+
`;if(!e||typeof e!="object"||!("$exec"in e))return xp(e);let t=e;return`${[...t.$type?[`Type: ${t.$type}`]:[],...t.$private!==void 0?[`Private: ${t.$private?"yes":"no"}`]:[],...t.$description!==void 0?[`Description: ${t.$description}`]:[],...t.$tags?.length?[`Tags: ${t.$tags.join(", ")}`]:[],"",...Array.isArray(t.$exec)?t.$exec:[t.$exec]].join(`
|
|
213
214
|
`)}
|
|
214
|
-
`}function
|
|
215
|
-
${
|
|
215
|
+
`}function Qy(e){return e.kind==="file"?yp(e.existing,e.incoming):e.kind==="project"?Gs(Fi(e.existing),Fi(e.incoming)):[Gs(vp(e.existing),vp(e.incoming)),...(e.files??[]).map(t=>`${t.reference}
|
|
216
|
+
${yp(t.existing,t.incoming)}`)].filter(Boolean).join(`
|
|
216
217
|
|
|
217
|
-
`)}function
|
|
218
|
-
`)}function
|
|
219
|
-
${g.
|
|
220
|
-
${
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
${
|
|
218
|
+
`)}function ev(e,t,n,r,i=[]){let o=s=>({id:s.id,kind:s.kind,path:s.path,existingDigest:s.existingDigest,incomingDigest:s.incomingDigest,...s.notice?{notice:s.notice}:{},...s.candidates?.length?{candidates:s.candidates,candidateDetails:s.candidateDetails}:{},...s.requiredNewPath?{requiredNewPath:!0}:{},...s.keepTakeOnly?{keepTakeOnly:!0}:{}});return{archive:e.archiveDigest,sources:pp(e),choices:{...t},next:r?o(r):void 0,conflicts:n.map(o),...i.length?{invalidated:i}:{}}}function tv(e,t){let n=JSON.parse($p(e,"utf8"));if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Decisions must be a JSON object.");let r=n;if(r.archive!==t.archiveDigest)throw new Error("Decisions belong to a different archive; review this archive again.");if(!Array.isArray(r.conflicts)||!r.choices||typeof r.choices!="object"||Array.isArray(r.choices))throw new Error("Decisions require reviewed conflicts and a choices object.");fp(t,r.sources);let i=new Set(r.conflicts.map(o=>o.id));for(let o of Object.keys(r.choices))if(!i.has(o))throw new Error(`Decision ${o} was not in the reviewed conflict list.`);return r}function nv(e){let t=[],n=se({cwd:e}),r;try{r=n.loadRootConfiguration()}catch(o){return[ke("import-finding-unreadable",{file:J("woof.config.json"),details:String(o)})]}let i=o=>{let s=o?`project ${o}`:"shared tokens";try{let a=o?ye({project:o,cwd:e,loader:n}):{root:r,candidates:[],checkoutRoot:n.repoRoot,selection:"root"},c=$e(a);for(let u of c.tokens.keys())try{cu(c,u)}catch(p){t.push(`${s}, ${u}: ${p instanceof Error?p.message:String(p)}`)}}catch(a){t.push(`${s}: ${a instanceof Error?a.message:String(a)}`)}};i();for(let o of Object.keys(r.data.$projects??{}))i(o);return t}function Hs(e){return[...Me("Completed",e.completed,"Completed"),...Me("Restored",e.restored,"Restored"),...Me("Pending",e.pending,"Pending"),...Me("Recovery",e.recovery,"Recovery"),...Me("Warning",e.warnings)].join(`
|
|
219
|
+
`)}function wp(e){return ke("import-report",{fields:Hs(e)})}function kp(e){e&&ln("Backup of woof home before this import",e,{template:"import-backup",values:{backup:e,backupArgument:Z(e),homeArgument:Z(J())}})}var mp,bp,Ep=U(()=>{"use strict";ql();qe();Ge();Ns();hp();Ds();Ie();Pe();_n();Xe();Ee();an();et();mp={token:"shared token","project-token":"project token",file:"file",project:"project"};bp={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},archive:{description:"Project ZIP archive to import",type:"positional",required:!0},decisions:{description:"Reviewed import choices JSON",type:"string"}},meta:{description:"Review and import a portable project archive",name:"import"},async run({rawArgs:e}){try{let{values:t,positionals:n}=Xy({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},decisions:{type:"string"}}});if(n.length!==1)throw new Error("Import requires exactly one ARCHIVE path.");let r=process.cwd(),i=dp(r,n[0]),o=t.decisions?dp(r,t.decisions):void 0,s=t.agent===!0||!!fe(),a=$p(i),c=up(a,{cwd:r}),u=[...[...rt(c.bundle.configuration)].filter(([,w])=>dt(w)).map(([w])=>`- shared: ${w}`),...[...rt(c.bundle.project)].filter(([,w])=>dt(w)).map(([w])=>`- ${c.bundle.projectName}: ${w}`)];u.length&&_t("import-private",{tokens:u.join(`
|
|
220
|
+
`)});let p=o?tv(o,c):void 0,l={...p?.choices??{}},f=p?.conflicts??[],d=[],m=new Set,h;try{h=rn(c,l)}catch(w){let T=p?.next?.id;if(!T||!l[T])throw w;delete l[T],m.add(T),d.push(`${f.find(S=>S.id===T)?.path??T}: ${w instanceof Error?w.message:String(w)}`),h=rn(c,l)}let g=p?.next?.id;for(;;){let w=Object.keys(l).filter(T=>{let S=f.find($=>$.id===T),C=h.issues.find($=>$.id===T);return C?.invalid?!0:T===g?!1:!S||!C||S.path!==C.path||S.existingDigest!==C.existingDigest||S.incomingDigest!==C.incomingDigest});if(!w.length)break;for(let T of w)d.push(f.find(S=>S.id===T)?.path??T),m.add(T),delete l[T];h=rn(c,l),g=void 0}for(;h.status!=="ready";){let w=h.next;if((w.existing===void 0&&w.incoming!==void 0&&!w.candidates?.length||w.derived)&&!w.requiredNewPath&&!m.has(w.id)&&!w.invalid){l[w.id]="take",h=rn(c,l);continue}let S=Qy(w),C=w.notice?`
|
|
221
|
+
${w.notice}`:"",$=w.candidates?.length?`
|
|
222
|
+
${ke("import-reusable",{candidates:gp(w).map(({address:P,description:z})=>s?`- ${P}${z?`: ${z}`:""}`:`- ${I(P)}${z?` ${Le(z)}`:""}`).join(`
|
|
223
|
+
`)})}`:"",E=d.length?`
|
|
224
|
+
${ke("import-rechecks",{items:d.join(", ")})}`:"";if(Lo({summary:`Review ${mp[w.kind]} ${I(w.path)}`,details:ba(S),notes:`${C}${$}${E}`.trim()},null),s||!Ne()){let P=o??`${i}.decisions.json`,z=JSON.stringify(ev(c,l,h.issues,w,d),null,2);Lo({summary:"Import requires an explicit decision for the next item.",details:z,recovery:`Set choices[next.id] to "keep", "take", {"action":"add","address":"..."}, or {"action":"reuse","address":"..."} as applicable. Save the file and run woof import ${Z(i)} --decisions ${Z(P)}${s?" --agent":""}.`},{template:"import-decision",values:{kind:mp[w.kind],path:w.path,diff:S,notice:C,reusable:$,rechecks:E,document:z,archive:Z(i),decisions:Z(P)}}),process.exitCode=1;return}let j=w.existing!==void 0,_=w.kind==="file"||w.kind==="project",x=[...!w.requiredNewPath&&w.incoming!==void 0?[{value:"take",label:"Take incoming",hint:j?"replace yours with the archive's version":"import the archive's version"}]:[],...w.requiredNewPath?[]:[{value:"keep",label:"Keep existing",hint:j?"keep yours and skip the archive's version":"do not import it"}],...(w.incoming!==void 0||w.requiredNewPath)&&w.path!=="$metadata"&&!w.keepTakeOnly?[{value:"add",label:"Add as new",hint:`import it at a new ${_?"path":"address"}${j?" and keep yours":""}`}]:[],...w.candidates?.length&&!w.keepTakeOnly?[{value:"reuse",label:"Reuse existing",hint:`use your identical ${_?"file":"token"} instead of importing it`}]:[]],b=await we({message:`${I(w.path)}: choose an action`,options:x});if(!b)return ae("Import cancelled. Nothing was changed.");let O;if(b==="keep"||b==="take")O=b;else if(b==="add"){let P=await Qe(w.kind==="token"||w.kind==="project-token"&&w.path!=="$metadata"?`Token address ${De("unused")}`:`Path under woof home ${De("unused")}`);if(!P)return ae("Import cancelled. Nothing was changed.");O={action:"add",address:P}}else if(b==="reuse"){let P=await we({message:w.kind==="file"?"File to reuse":"Token to reuse",options:gp(w).map(({address:z,description:B})=>({value:z,label:z,...B?{hint:B}:{}}))});if(!P)return ae("Import cancelled. Nothing was changed.");O={action:"reuse",address:P}}else throw new Error(`Unsupported import choice: ${b}`);f=h.issues,l[w.id]=O;try{h=rn(c,l)}catch(P){delete l[w.id],_t("import-choice-rejected",{details:P instanceof Error?P.message:String(P)}),h=rn(c,l);continue}let N=w.id;for(;;){let P=Object.keys(l).filter(z=>{let B=f.find(W=>W.id===z),H=h.issues.find(W=>W.id===z);return H?.invalid?!0:z===N?!1:!B||!H||B.path!==H.path||B.existingDigest!==H.existingDigest||B.incomingDigest!==H.incomingDigest});if(!P.length)break;for(let z of P)d.push(f.find(B=>B.id===z)?.path??z),m.add(z),delete l[z];h=rn(c,l),N=void 0}}let v=rp(h.candidate),y;try{y=nv(r)}catch(w){y=[ke("import-finding-incomplete",{details:w instanceof Error?w.message:String(w)})]}let R=wp(v),A=d.length?`
|
|
225
|
+
${ke("import-rechecked",{items:d.join(", ")})}`:"",k=y.length?ke("import-validation-findings"):"";if(v.completed.length?Se({summary:`Imported ${I(c.bundle.projectName)}.`,details:`${Hs(v)}${A}`,...k?{recovery:k}:{}},{template:"import-imported",values:{project:c.bundle.projectName,report:R,rechecked:A,validation:k?`
|
|
224
226
|
|
|
225
|
-
${
|
|
226
|
-
`),project:Z(c.bundle.projectName)})}}catch(t){let n=t instanceof Error?t.message:String(t),r=t instanceof
|
|
227
|
-
${
|
|
228
|
-
${
|
|
229
|
-
`,{flag:"wx"}),r}function
|
|
230
|
-
Locations: ${
|
|
231
|
-
${
|
|
227
|
+
${k}`:""}}):Kt({summary:"Nothing was imported. Each item already matched or was kept.",details:A.trim()},{template:"import-unchanged",values:{rechecked:A}}),kp(v.backup),y.length){let w=y.some(T=>/Could not parse configuration|Invalid configuration|Could not read configuration|requires an explicit \$schemaVersion|unsupported \$schemaVersion/.test(T));_t(w?"import-findings-configuration":"import-findings",{findings:y.join(`
|
|
228
|
+
`),project:Z(c.bundle.projectName)})}}catch(t){let n=t instanceof Error?t.message:String(t),r=t instanceof Ct?`
|
|
229
|
+
${wp(t.report)}`:"";he({summary:"woof could not complete the import.",details:t instanceof Ct?`${n}
|
|
230
|
+
${Hs(t.report)}`:n,...t instanceof Ct?{recovery:"The report above lists what changed."}:{}},{template:"import-error",values:{details:n,report:r}}),t instanceof Ct&&kp(t.report.backup),process.exitCode=1}}}});import{mkdirSync as rv,readFileSync as iv,writeFileSync as ov}from"node:fs";import{homedir as sv}from"node:os";import{basename as av,dirname as cv,join as uv,sep as lv}from"node:path";import{parseArgs as pv}from"node:util";function hv(e){let t=sv();return e.startsWith(`${t}${lv}`)?`~/${e.slice(t.length+1)}`:e}function Sp(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function dv(e,t){let n=Wt(e);if(n)throw new Error(`This checkout already has a repository configuration: ${I(n)}`);let r=uv(e,t);return rv(cv(r),{recursive:!0}),ov(r,`${JSON.stringify(kn,null,2)}
|
|
231
|
+
`,{flag:"wx"}),r}function mv(e,t){return Sn(J("woof.config.json"),n=>{let r=iv(n,"utf8"),i=Je(r,"root",n);if(Object.hasOwn(i.$projects??{},e))throw new Error(`Registered project ${I(e)} already exists in ${I(n)}.`);let o=JSON.parse(r),s=o.$projects,a={...o,$projects:{...s,[e]:Object.keys(t).length?{$metadata:t}:{}}};return Ze(a,"root",n),Kn(n,a),n})}function Ws(e,t,n,r){We({summary:e,details:t,recovery:"Retry with one exact command."},{template:n,values:r}),process.exitCode=1}var Tr,fv,Tp,Ap=U(()=>{"use strict";Mr();Fr();qe();kt();Ge();Xr();Ie();Pe();Xe();Ee();Vn();an();Tr=["woof.config.json",".agents/woof.config.json",".claude/woof.config.json"],fv={"woof.config.json":"at the checkout root",".agents/woof.config.json":"in the .agents folder",".claude/woof.config.json":"in the .claude folder"};Tp={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},repo:{description:"Create a repository configuration in this checkout",type:"boolean"},location:{description:"Repository configuration file in the checkout",type:"positional",required:!1},name:{description:"Register a project in woof home under this name",type:"string"},"base-path":{description:"Base path of the registered project (repeatable)",type:"string"},"worktree-path":{description:"Worktree path of the registered project (repeatable)",type:"string"}},meta:{description:"Create a project configuration",name:"init"},async run({rawArgs:e}){try{let{values:t,positionals:n}=pv({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},repo:{type:"boolean"},name:{type:"string"},"base-path":{type:"string",multiple:!0},"worktree-path":{type:"string",multiple:!0}}}),r=t.agent===!0||!!fe(),i=!r&&Ne(),o=r?" --agent":"",s=n[0],a=t.name,c=t["base-path"]??[],u=t["worktree-path"]??[],p=c.length>0||u.length>0;if(t.repo&&(a!==void 0||p))throw new Error(`${I("--repo")} cannot be combined with ${I("--name")}, ${I("--base-path")} or ${I("--worktree-path")}.`);if(a===void 0&&p)throw new Error(`${I("--base-path")} and ${I("--worktree-path")} require ${I("--name")}.`);if(s!==void 0&&!Tr.includes(s))throw new Error(`The repository location must be one of: ${Tr.map(A=>I(A)).join(", ")}.`);let l=process.cwd(),f=ve(l),d=hv(f??l),m=`woof init --name NAME --base-path ${Z(d)}${o}`,h=t.repo?"repo":a!==void 0||!f?"home":void 0;if(!h){if(!i){let k=`woof init --repo LOCATION${o}
|
|
232
|
+
Locations: ${Tr.join(", ")}`;return Ws("Choose where to create the project configuration.",`In this repo (shared with the team): ${f}
|
|
233
|
+
${k}
|
|
232
234
|
|
|
233
235
|
In woof home (only you): ${J("woof.config.json")}
|
|
234
|
-
${
|
|
235
|
-
Locations: ${
|
|
236
|
-
`),
|
|
236
|
+
${m}`,"init-target",{checkout:f,repository:k,home:m,rootFile:J("woof.config.json")})}let A=await we({message:"Where should the project configuration live?",options:[{value:"repo",label:"in this repo (shared with the team)",hint:f},{value:"home",label:"in woof home (only you)",hint:J("woof.config.json")}]});if(!A)return ae("Init cancelled. Nothing was changed.");h=A}if(h==="repo"){if(Ht(l))throw new Error("woof ignores repository configuration inside woof home. Run init from a project checkout.");if(!f)throw new Error(`${I("init --repo")} needs a Git checkout. Register a woof home project with ${I("--name")} instead.`);if(s===void 0){if(!i){let w=`woof init --repo LOCATION${o}
|
|
237
|
+
Locations: ${Tr.join(", ")}`;return Ws(`Choose the location of the repository configuration in ${f}.`,w,"init-location",{checkout:f,commands:w})}let k=await we({message:"Which file should hold the repository configuration?",options:Tr.map(w=>({value:w,label:w,hint:fv[w]}))});if(!k)return ae("Init cancelled. Nothing was changed.");s=k}let A=dv(f,s);Se({summary:"Created a repository configuration.",details:je([["File",A]]),recovery:`To add a token, run ${I(`woof add --repo${o}`)}.`},{template:"init-repository",values:{file:A,add:`woof add --repo${o}`}});return}if(a===void 0){if(!i)return Ws("Choose a name for the registered project.",m,"init-home",{command:m});let A=av(f??l);if(a=await Qe("Project name",ua(Wn,A)?{initialValue:A}:{}),a===void 0)return ae("Init cancelled. Nothing was changed.")}let g=Dr(Wn,a);if(!g.success)throw new Error(`Project name ${I(a)}: ${g.issues[0].message}`);if(i&&!p){let A=await Qe(`Base paths ${De("comma separated - optional")}`,{initialValue:d,optional:!0});if(A===void 0)return ae("Init cancelled. Nothing was changed.");let k=await Qe(`Worktree paths ${De("comma separated - optional")}`,{optional:!0});if(k===void 0)return ae("Init cancelled. Nothing was changed.");c=Sp(A),u=Sp(k)}for(let A of[...c,...u])tr(A,a);let v=await mv(a,{...c.length?{$basePaths:c}:{},...u.length?{$worktreePaths:u}:{}}),y=[`${je([["Configuration",v]])} ${qr()}`,...Me("Base path",c),...Me("Worktree path",u)].join(`
|
|
238
|
+
`),R=`woof add --project ${Z(a)}${o}`;Se({summary:`Registered project ${I(a)}.`,details:y,recovery:`To add a token, run ${I(R)}.`},{template:"init-registered",values:{name:a,fields:y,add:R}})}catch(t){let n=t instanceof Error?t.message:String(t);he({summary:"woof could not create the project configuration.",details:n},{template:"init-error",values:{details:n}}),process.exitCode=1}}}});import{homedir as Rp}from"node:os";import{basename as gv,resolve as yv}from"node:path";import{parseArgs as vv}from"node:util";function Cp(e){return(e??[]).map(t=>t==="~"?Rp():t.startsWith("~/")?yv(Rp(),t.slice(2)):t)}var wv,kv,jp,Ip=U(()=>{"use strict";qe();Ge();Pe();Xe();Ee();wv="#afd7ff",kv="#dadada";jp={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"}},meta:{description:"List the detected project and the registered projects",name:"projects"},async run({rawArgs:e}){try{let{values:t,positionals:n}=vv({args:e,allowPositionals:!0,options:{agent:{type:"boolean"}}});if(n.length)throw new Error("Projects does not accept positional arguments.");let r=t.agent===!0||!!fe(),i=process.cwd(),o=se({cwd:i}),s=o.loadRootConfiguration(),a=bt(s,o),c=ye({cwd:i,loader:o}),u="project"in c?c.project:void 0,p=new Set(a.filter(h=>gc(h,i)).map(h=>h.name)),l=An(c),f=l?`Current project: ${l}`:c.selection==="ambiguous"?`Several projects match this directory. Pick one with ${I("--project NAME")}.`:"No project detected. Only shared tokens apply.",d=[...u?.kind==="repository"?[{name:gv(c.checkoutRoot),kind:"repo",badge:"current",config:u.source.file,inline:!1,basePaths:[],worktreePaths:[]}]:[],...[...a].sort((h,g)=>+(g.name===u?.name)-+(h.name===u?.name)||Number(p.has(g.name))-Number(p.has(h.name))).map(h=>{let g=h.name===u?.name?"current":p.has(h.name)?u?"also matches":"matches":void 0;return{name:h.name,kind:"registered",...g?{badge:g}:{},config:h.source.file,inline:h.inline,basePaths:Cp(h.data.$metadata?.$basePaths),worktreePaths:Cp(h.data.$metadata?.$worktreePaths)}})],m=d.length?d.map(h=>{let g=h.badge?` ${Zn(h.badge,h.badge==="current"?wv:kv)}`:"",v=r?`- ${h.name} (${[h.kind,h.badge].filter(Boolean).join(", ")})`:`${h.name}${g}`,y=h.inline?` ${qr()}`:"";return[v,` ${je([["Configuration",h.config]])}${y}`,...[...Me("Base path",h.basePaths),...Me("Worktree path",h.worktreePaths)].map(R=>` ${R}`)].join(`
|
|
237
239
|
`)}).join(`
|
|
238
|
-
`):`No projects. To create one, run ${I(`woof init${r?" --agent":""}`)}.`;Se({summary:f,details:
|
|
239
|
-
`),
|
|
240
|
-
`);return n(`woof found ${
|
|
241
|
-
`)})):o=
|
|
240
|
+
`):`No projects. To create one, run ${I(`woof init${r?" --agent":""}`)}.`;Se({summary:f,details:m},{template:"projects-result",values:{summary:f,list:m}})}catch(t){let n=t instanceof Error?t.message:String(t);he({summary:"woof could not list projects.",details:n},{template:"projects-error",values:{details:n}}),process.exitCode=1}}}});import{readFileSync as $v}from"node:fs";import{parseArgs as xv}from"node:util";var _p,Pp=U(()=>{"use strict";Ie();Pe();_p={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"}},meta:{description:"Print the user guide. Agents: run this first to learn what woof can do",name:"readme"},run({rawArgs:e}){try{let{positionals:t}=xv({args:e,allowPositionals:!0,options:{agent:{type:"boolean"}}});if(t.length)throw new Error("Readme does not accept positional arguments.");process.stdout.write($v(Ut("README.md"),"utf8"))}catch(t){let n=t instanceof Error?t.message:String(t);he({summary:"woof could not print its user guide.",details:n,recovery:"Run woof from its checkout or an installed package; a standalone bundle copied elsewhere has no guide."},{template:"readme-error",values:{details:n}}),process.exitCode=1}}}});import{parseArgs as bv}from"node:util";var Op,Np=U(()=>{"use strict";qe();fr();Ge();Pe();Xe();Ee();et();Op={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},project:{description:"Select a registered project",type:"string"},token:{description:"Optional token graph to validate",type:"positional",required:!1}},meta:{description:"Validate token catalogs without executing scripts",name:"validate"},async run({rawArgs:e}){try{let{values:r,positionals:i}=bv({args:e,allowPositionals:!0,options:{agent:{type:"boolean"},project:{type:"string"}}});if(i.length>1)throw new Error("Validate accepts at most one token address.");let o=i[0]??"",s=o.startsWith("$projects.")?Ot(o):void 0;if(s?.project&&r.project&&s.project!==r.project)throw new Error(`Qualified address selects ${I(s.project)}, which contradicts ${I(`--project ${r.project}`)}.`);let a=s?.project??r.project,c=r.agent===!0||!!fe(),u=ye({...a?{project:a}:{},loader:se({cwd:process.cwd()})});if(u.selection==="ambiguous"){let m=u.candidates;if(!c&&process.stdout.isTTY){let h=await we({message:"Project to use",options:m.map(g=>{let v=_e(g);return{value:g.name,label:g.name,...v?{hint:v}:{}}})});if(!h)return ae("Validation cancelled.");u=ye({project:h,loader:se({cwd:process.cwd()})})}else{let h=m.map(v=>{let y=_e(v),R=`${c?"- ":""}${v.name}`;return y?`${R} ${Le(y)}`:R}).join(`
|
|
241
|
+
`),g=`woof validate${o?` ${Z(o)}`:""} --project NAME${c?" --agent":""}`;We({summary:"Several projects match this directory.",details:h,recovery:`Retry with ${I(g)}, with NAME replaced by the project name.`},{template:"validate-ambiguous",values:{projects:h,command:g}}),process.exitCode=1;return}}let p=$e(u);if(o&&!c&&process.stdout.isTTY&&!p.tokens.has(s?.path??o)){let m=await Zt({message:"Token to validate",tokens:Tt(p),query:o});if(!m)return ae("Validation cancelled.");o=m}let l=An(u)??"none (shared tokens only)";if(o){let m;try{m=St(p,o)}catch(y){if(!p.tokens.has(s?.path??o))throw y;return n("woof found 1 problem.",y instanceof Error?y.message:String(y),"it")}let h=m.requested,g=m.tokens.length-1,v=g===1?"1 referenced token":`${g} referenced tokens`;return t(`${I(h)} is valid${g?`, with ${v}`:""}.`,l)}let f=new Set;for(let m of p.tokens.keys())try{St(p,m)}catch(h){f.add(h instanceof Error?h.message:String(h))}if(f.size){let m=f.size===1?"1 problem":`${f.size} problems`,h=f.size===1?[...f][0]:[...f].map(g=>`- ${g}`).join(`
|
|
242
|
+
`);return n(`woof found ${m}.`,h,f.size===1?"it":"them")}let d=p.tokens.size;t(d===0?"There are no tokens to validate.":d===1?"1 token is valid.":`All ${d} tokens are valid.`,l)}catch(r){n("woof validation failed.",r instanceof Error?r.message:String(r),"it")}function t(r,i){Se({summary:r,details:je([["Project",i]])},{template:"validate-result",values:{summary:r,project:i}})}function n(r,i,o){he({summary:r,details:i,recovery:`Fix ${o}, then run ${I("woof validate")} again.`},{template:"validate-error",values:{summary:r,details:i,fix:o}}),process.exitCode=1}}}});import{parseArgs as Lp}from"node:util";function Mp(e){let t=e.indexOf("--"),n=t<0?e:e.slice(0,t),r=t<0?[]:e.slice(t),i=n.includes("--migrate"),o=[...n.filter(m=>m!=="--migrate"),...r],s=n.findIndex(m=>!m.startsWith("-")),a=s<0?void 0:n[s];if(a&&!Object.hasOwn(Dp,a))throw new Error(`Unknown command: ${a}`);let c=s<0?[...n,...r]:n.slice(0,s),u=s<0?[]:[...n.slice(s+1),...r],p={migrate:{type:"boolean"},agent:{type:"boolean"},help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"}},l=Lp({args:c,options:p,allowPositionals:!1}),f=Lp({args:u,options:{...p,...a?Dp[a]:{}},allowPositionals:!0}),d=!a||l.values.help===!0||l.values.version===!0||f.values.help===!0||f.values.version===!0;if(a&&!d){let m=f.values;if(a==="edit"&&m.private&&m["no-private"])throw new Error("Choose --private or --no-private, not both.");let h=f.positionals.length;if(a==="import"&&h!==1)throw new Error("import requires exactly one argument.");if(a==="explain"&&h>1)throw new Error("explain accepts one token address.");if((a==="projects"||a==="export"||a==="readme")&&h!==0)throw new Error(`${a} accepts no positional arguments.`);if(a==="validate"&&h>1)throw new Error("validate accepts at most one token address.");if((a==="add"||a==="edit")&&h>1)throw new Error(`${a} accepts at most one token path.`);if(a==="init"&&h>(m.repo?1:0))throw new Error("init accepts one location, and only with --repo.");if(["get","explain","validate"].includes(a)&&h===1&&f.positionals[0].startsWith("$projects.")){let g=Ot(f.positionals[0]),v=m.project;if(v&&g.project!==v)throw new Error(`Qualified address selects ${g.project}, which contradicts --project ${String(v)}.`)}}return{migrate:i,passive:d,command:a,args:o}}var Dp,Fp=U(()=>{"use strict";et();Dp={add:{private:{type:"boolean"},type:{type:"string"},content:{type:"string"},description:{type:"string"},tag:{type:"string",multiple:!0},shared:{type:"boolean"},repo:{type:"boolean"},project:{type:"string"}},get:{project:{type:"string"},search:{type:"boolean"}},edit:{private:{type:"boolean"},"no-private":{type:"boolean"},project:{type:"string"},content:{type:"string"},description:{type:"string"},tag:{type:"string",multiple:!0},shared:{type:"boolean"},override:{type:"boolean"}},explain:{project:{type:"string"}},validate:{project:{type:"string"}},projects:{},export:{project:{type:"string"}},import:{decisions:{type:"string"}},init:{repo:{type:"boolean"},name:{type:"string"},"base-path":{type:"string",multiple:!0},"worktree-path":{type:"string",multiple:!0}},readme:{}}});import{readFileSync as Ev,writeSync as Sv}from"node:fs";import{homedir as Tv}from"node:os";import{join as Vs}from"node:path";function Bp(e){try{return Number(/^\s+version:\s*(\d+)\s*$/m.exec(Ev(e,"utf8"))?.[1]??0)}catch{return}}function Up(){let e=Ut("skills",zp),t=Bp(Vs(e,"SKILL.md"))??0,n=[".claude",".agents"].map(s=>{let a=Vs(Tv(),s,"skills",zp);return{location:a,version:Bp(Vs(a,"SKILL.md"))}}),r=n.filter(s=>s.version!==void 0),i=r.filter(s=>s.version<t),o;r.length?i.length&&(o=ke("skill-outdated",{source:e,bundled:t,copies:i.map(s=>`- ${s.location} (version ${s.version})`).join(`
|
|
243
|
+
`)})):o=ke("skill-missing",{source:e,claude:n[0].location,agents:n[1].location}),o&&Sv(2,`
|
|
242
244
|
${o}
|
|
243
|
-
`)}var
|
|
244
|
-
`,{flag:"wx",mode:384}),await
|
|
245
|
+
`)}var zp,Gp=U(()=>{"use strict";Ie();Pe();zp="woof-execution"});import{randomUUID as Av}from"node:crypto";import{link as Rv,mkdir as Cv,rm as jv,writeFile as Iv}from"node:fs/promises";import{dirname as Hp,join as _v}from"node:path";async function Wp(e=J("woof.config.json")){let t=_v(Hp(e),`.woof.config.${process.pid}.${Av()}.tmp`);try{return await Cv(Hp(e),{recursive:!0}),await Iv(t,`${JSON.stringify(kn,null,2)}
|
|
246
|
+
`,{flag:"wx",mode:384}),await Rv(t,e),{file:e,created:!0}}catch(n){if(n.code==="EEXIST")return{file:e,created:!1};throw new Error(`Could not initialize personal configuration at ${e}.`,{cause:n})}finally{await jv(t,{force:!0})}}var Vp=U(()=>{"use strict";Fr();Ie()});import{lstatSync as Pv,realpathSync as qp}from"node:fs";function Kp(e){try{return Pv(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function Zp(e){let t=J("woof.config.json");Kp(t)||(!e.passive||e.migrate)&&await Wp();let n=Kp(t),r=n&&e.migrate?po([{file:t,kind:"root"}]):void 0,i=n?r?.documents[0].migrated??Bt(t,"root"):void 0,o=ve(e.cwd),s=n?[{file:t,kind:"root"}]:[],a=new Map(n?[[qp(t),"root"]]:[]),c=(u,p)=>{let l=qp(u),f=a.get(l);if(f==="root")throw new Error(`Configuration has conflicting root and project roles: ${u}`);f||(a.set(l,p),s.push({file:u,kind:p}))};if(i&&"$projects"in i&&i.$projects)for(let u of Object.values(i.$projects))typeof u=="string"&&c(xt(u,o?{repoRoot:o}:{}).file,"project");if(o&&!Ht(e.cwd)){let u=Wt(o);u&&c(u,"repository")}if(e.migrate){let u=po(s);if(r&&(u.documents[0]?.source!==r.documents[0]?.source||u.documents[0]?.target!==r.documents[0]?.target))throw new Error("Root configuration changed while identifying migration documents; retry.");if(u.documents.some(p=>p.changed)){let p=await Ia(u);for(let l of p)_t("migration-notice",{file:l.file,from:l.from,to:l.to});for(let l of s)l.kind==="root"?Bt(l.file,"root"):Bt(l.file,l.kind)}}else for(let u of s)u.kind!=="root"&&Bt(u.file,u.kind)}var Jp=U(()=>{"use strict";Vp();kt();Xr();Ie();Pe();Xe();Ee()});var Lv={};var Ov,Nv,Xp=U(async()=>{"use strict";na();Vi();Au();ol();al();Nl();Ul();Ep();Ap();Ip();Pp();Np();Fp();Ie();Pe();Gp();Jp();process.stdout.on("error",e=>{if(e.code!=="EPIPE")throw e});process.once("exit",()=>{ut()&&Up()});Ov={add:Tu,edit:il,explain:sl,export:Ol,get:Bl,import:bp,init:Tp,projects:jp,readme:_p,validate:Op},Nv={args:{agent:{description:"Use plain, noninteractive agent output",type:"boolean"},migrate:{description:"Migrate configuration to the current schema",type:"boolean"}},meta:{name:"woof",version:Un.version,description:Un.description},subCommands:Ov};try{let e=Mp(process.argv.slice(2));(e.command!=="readme"||e.migrate)&&await Zp({migrate:e.migrate,passive:e.passive,cwd:process.cwd()});let n=e.args.some(r=>r==="--version"||r==="-v")&&e.args.every(r=>["--agent","--version","-v"].includes(r))?["--version"]:e.args.every(r=>r==="--agent")?[...e.args,"--help"]:e.args;await ta(Nv,{rawArgs:n})}catch(e){let t=e instanceof Error?e.message:String(e),n=J("woof.config.json");he({summary:"woof could not prepare the invocation.",details:t,recovery:`Review the arguments and ${n}. If woof reports a pending migration, retry with --migrate.`},{template:"invocation-error",values:{details:t,configuration:n}}),process.exitCode=1}});qe();(process.argv.includes("--agent")||fe())&&(process.env.NO_COLOR="1",delete process.env.FORCE_COLOR);await Xp().then(()=>Lv);
|