@politty/zod 0.2.3 → 0.2.4

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.
@@ -359,6 +359,8 @@ interface CommandBase<TArgsSchema extends ArgsSchema | undefined = undefined, TA
359
359
  interface RunnableCommand<TArgsSchema extends ArgsSchema | undefined = undefined, TArgs = unknown, TResult = unknown> extends CommandBase<TArgsSchema, TArgs> {
360
360
  /** Main run function */
361
361
  run: (args: TArgs) => TResult;
362
+ /** Not settable alongside `run` (see `NonRunnableCommand.defaultSubCommand`) */
363
+ defaultSubCommand?: undefined;
362
364
  }
363
365
  /**
364
366
  * A command without a run function (e.g., subcommand-only parent)
@@ -368,6 +370,23 @@ interface RunnableCommand<TArgsSchema extends ArgsSchema | undefined = undefined
368
370
  interface NonRunnableCommand<TArgsSchema extends ArgsSchema | undefined = undefined, TArgs = unknown> extends CommandBase<TArgsSchema, TArgs> {
369
371
  /** No run function */
370
372
  run?: undefined;
373
+ /**
374
+ * Name of a `subCommands` entry to run when this command is invoked with
375
+ * no subcommand specified, instead of showing help. Used for CLI plugin
376
+ * dispatch (`onUnknownSubcommand`) to reach a command group whose "no
377
+ * subcommand" case still routes somewhere runnable (e.g. `cli group`
378
+ * falling back to `cli group sub`), without the group itself defining
379
+ * `run` (which would exempt it from plugin dispatch — see
380
+ * `MainOptions.onUnknownSubcommand`).
381
+ *
382
+ * Only fires when this level has zero unconsumed tokens (the same
383
+ * condition that would otherwise show help), so it only covers a bare
384
+ * invocation — a local flag meant for the default subcommand still needs
385
+ * the subcommand named explicitly (`cli group sub --limit 10`, not
386
+ * `cli group --limit 10`), since this command's own (typically
387
+ * schema-less) parse level has no way to know `--limit` belongs to `sub`.
388
+ */
389
+ defaultSubCommand?: string | undefined;
371
390
  }
372
391
  /**
373
392
  * A defined command (union of runnable and non-runnable)
package/dist/augment.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as ArgMeta } from "./arg-registry-BzQ-y-e0.js";
1
+ import { n as ArgMeta } from "./arg-registry-C-fvuAAg.js";
2
2
  //#region src/augment.d.ts
3
3
  declare module "zod" {
4
4
  interface ZodTypeDef {
@@ -0,0 +1 @@
1
+ import{t as e}from"./cli-main-KajE103P.js";export{e as runPolittyCli};
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-Mbdt0bmN.js";import{n as r}from"./runner-BBzVbri9.js";import{chmodSync as i,existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";import{basename as l,dirname as u,extname as d,isAbsolute as f,join as p,relative as m,resolve as h}from"node:path";import{fileURLToPath as g}from"node:url";const _=`Generated by politty: compile-cache bin shim`,v=[`./cli.js`,`./cli.mjs`,`./index.js`,`./index.mjs`];function y(e){let t=h(e);for(;;){let e=p(t,`package.json`);if(a(e))return{pkg:JSON.parse(s(e,`utf8`)),dir:t};let n=u(t);if(n===t)return;t=n}}function b(e){if(!e)return[];if(typeof e.bin==`string`&&e.bin){let t=x(e);return t?[[t,e.bin]]:[]}return typeof e.bin==`object`&&e.bin!==null?Object.entries(e.bin).filter(e=>typeof e[1]==`string`&&e[1]!==``):[]}function x(e){if(e){if(typeof e.bin==`object`&&e.bin!==null){let[t]=Object.keys(e.bin);if(t)return t}if(typeof e.name==`string`&&e.name){let t=e.name;return t.startsWith(`@`)?t.split(`/`)[1]??t:t}}}function S(e){let t=u(e),n=l(e);for(let e of v)if(l(e)!==n&&a(p(t,e)))return e}function C(e,t,n){return[`#!/usr/bin/env node`,``,`// ${_}.`,`// Enables the Node.js on-disk compile cache (V8 code cache) before the`,`// CLI module graph is compiled, so warm starts skip recompilation`,`// (Node >= 22.8.0; silent no-op otherwise).`,`try {`,` const { enableCompileCache } = await import(${JSON.stringify(n)});`,` enableCompileCache(${JSON.stringify(e)});`,`} catch {`,` // ${n} is not resolvable from here (e.g. a fully`,` // bundled CLI) — start without the compile cache rather than failing`,` // the CLI.`,`}`,`await import(${JSON.stringify(t)});`,``].join(`
2
- `)}function w(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function T(e){return(t={})=>E(`${e}/compile-cache`,t)}function E(e,t){let n=t.cwd??process.cwd(),r=y(n),l=r?.pkg,p=w(t.entry),m=w(t.out),T=b(l),E;if(m.length>0){if(p.length>0&&p.length!==m.length)throw Error(`--entry count (${p.length}) does not match --out count (${m.length}); pass one --out per --entry or omit --out entirely.`);E=m.map(e=>f(e)?e:h(n,e))}else{if(T.length===0||r===void 0)throw Error(`Cannot derive the output path: no bin entry in package.json. Pass --out explicitly.`);if(p.length>0&&p.length!==T.length)throw Error(`--entry count (${p.length}) does not match the package's bin entries (${T.length}); pass one --entry per bin (in declaration order) or matching --out paths.`);E=T.map(([,e])=>h(r.dir,e))}if(new Set(E).size!==E.length)throw Error(`Duplicate output paths; each shim needs a distinct output file. Check the --out values (or the bin paths in package.json when --out is omitted).`);let O=new Map;if(r)for(let[e,t]of T)O.set(h(r.dir,t),e);let k=[],A=t.compileCacheSpecifier??e;if(/[\r\n\u2028\u2029]/.test(A))throw Error(`Invalid compile-cache specifier ${JSON.stringify(A)}: a module specifier cannot contain a line terminator.`);let j=E.map((e,r)=>{let i=O.get(e),o=t.program??i??x(l);if(!o)throw Error(`Cannot derive a program name: no bin or name in package.json. Pass --program explicitly.`);if(t.program===void 0&&i===void 0&&m.length>0&&k.push(`Warning: ${D(e,n)} does not match any bin path in package.json, so its cache directory uses the program name ${JSON.stringify(o)}. Pass --program to override.`),e.endsWith(`.cjs`))throw Error(`The generated shim is an ES module and cannot be written to a .cjs file. Use a .mjs (or .js in a "type": "module" package) output path.`);if(d(e)===``)throw Error(`The generated shim is an ES module and cannot be written to an extensionless file (it would not load on every supported Node.js version). Use a .mjs (or .js in a "type": "module" package) output path.`);if(e.endsWith(`.js`)&&l?.type!==`module`)throw Error(l===void 0?`The generated shim is an ES module, and no package.json was found to confirm .js files are treated as ESM. Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`:`The generated shim is an ES module, but the package is not "type": "module". Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`);let c=p[r]??S(e);if(c===void 0)throw Error(`Cannot derive an entry: none of ${v.join(`, `)} exist next to ${e}. Pass --entry explicitly.`);if(!c.startsWith(`./`)&&!c.startsWith(`../`)&&!c.startsWith(`file:`))throw Error(`Invalid entry ${c}: pass a specifier relative to the shim file ("./..." or "../...") or a file: URL.`);let f;if(c.startsWith(`file:`))try{f=g(c)}catch{f=void 0}else f=h(u(e),c);if(f===e)throw Error(`The shim at ${e} would import itself (entry ${c}). Point bin at a separate shim path (e.g. dist/bin.js) or pass a different --entry.`);if(a(e)&&!s(e,`utf8`).includes(_))throw Error(`Refusing to overwrite ${e}: it exists and was not generated by politty. If bin currently points at your real CLI entry, point it at a separate shim path (e.g. dist/bin.js) or pass --out explicitly.`);return{outputPath:e,program:o,entry:c,compileCacheSpecifier:A}});for(let e of k)console.warn(e);for(let{outputPath:e,program:t,entry:n}of j)o(u(e),{recursive:!0}),c(e,C(t,n,A)),i(e,493);return j}function D(e,t){let n=m(t,e);return n&&!n.startsWith(`..`)?n:e}const O=t({bin:e.string({description:`CLI binary or built JS entry file to invoke`,placeholder:`PATH`}),program:e.string({description:`Program name embedded in worker metadata`,placeholder:`NAME`}),shell:e.enum([`bash`,`zsh`,`fish`],{description:`Shell worker to generate`,placeholder:`SHELL`}),out:e.optionalString({description:`Output worker path (defaults to dist/completion/<shell>-worker.<ext>)`,placeholder:`PATH`}),verify:e.boolean({description:`Verify __completion-worker-path resolves to the generated worker`})}),k=n({name:`generate-worker`,description:`Generate and verify a bundled shell completion worker`,args:O,async run(e){let{generateBundledCompletionWorker:t}=await import(`./completion-DUMcvXkT.js`);await t({bin:e.bin,programName:e.program,shell:e.shell,...e.out!==void 0&&{outputPath:e.out},verify:e.verify})}}),A=t({entry:e.optionalStringArray({description:`Module specifier the shim imports, relative to the shim file; repeatable, one per bin/--out (defaults to ./cli.js, ./cli.mjs, ./index.js, or ./index.mjs next to each shim)`,placeholder:`SPECIFIER`}),out:e.optionalStringArray({description:`Output path for the generated shim; repeatable, one per --entry (defaults to the bin paths in package.json)`,placeholder:`PATH`}),program:e.optionalString({description:`Program name for the cache directory, applied to all shims (defaults per shim to its bin name)`,placeholder:`NAME`}),compileCacheSpecifier:e.optionalString({description:`Module specifier the shim imports enableCompileCache from (defaults to the compile-cache subpath of the politty package running this command)`,placeholder:`SPECIFIER`})});function j(e){let t=T(e),i=n({name:`generate-shim`,description:`Generate a compile-cache bin shim that loads the real CLI via dynamic import`,args:A,run(e){let n=process.cwd(),r=t({...e.entry!==void 0&&{entry:e.entry},...e.out!==void 0&&{out:e.out},...e.program!==void 0&&{program:e.program},...e.compileCacheSpecifier!==void 0&&{compileCacheSpecifier:e.compileCacheSpecifier},cwd:n});for(let e of r)console.log(`Generated compile-cache shim: ${D(e.outputPath,n)} (program: ${e.program}, entry: ${e.entry}, compile-cache: ${e.compileCacheSpecifier})`)}}),a=n({name:`politty`,description:`politty development utilities`,subCommands:{"generate-shim":i,"generate-worker":k}});return r(a).catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})}export{T as n,j as t};
1
+ import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-tLHaJHe6.js";import{n as r}from"./runner-DECNQyff.js";import{chmodSync as i,existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";import{basename as l,dirname as u,extname as d,isAbsolute as f,join as p,relative as m,resolve as h}from"node:path";import{fileURLToPath as g}from"node:url";const _=`Generated by politty: compile-cache bin shim`,v=[`./cli.js`,`./cli.mjs`,`./index.js`,`./index.mjs`];function y(e){let t=h(e);for(;;){let e=p(t,`package.json`);if(a(e))return{pkg:JSON.parse(s(e,`utf8`)),dir:t};let n=u(t);if(n===t)return;t=n}}function b(e){if(!e)return[];if(typeof e.bin==`string`&&e.bin){let t=x(e);return t?[[t,e.bin]]:[]}return typeof e.bin==`object`&&e.bin!==null?Object.entries(e.bin).filter(e=>typeof e[1]==`string`&&e[1]!==``):[]}function x(e){if(e){if(typeof e.bin==`object`&&e.bin!==null){let[t]=Object.keys(e.bin);if(t)return t}if(typeof e.name==`string`&&e.name){let t=e.name;return t.startsWith(`@`)?t.split(`/`)[1]??t:t}}}function S(e){let t=u(e),n=l(e);for(let e of v)if(l(e)!==n&&a(p(t,e)))return e}function C(e,t,n){return[`#!/usr/bin/env node`,``,`// ${_}.`,`// Enables the Node.js on-disk compile cache (V8 code cache) before the`,`// CLI module graph is compiled, so warm starts skip recompilation`,`// (Node >= 22.8.0; silent no-op otherwise).`,`try {`,` const { enableCompileCache } = await import(${JSON.stringify(n)});`,` enableCompileCache(${JSON.stringify(e)});`,`} catch {`,` // ${n} is not resolvable from here (e.g. a fully`,` // bundled CLI) — start without the compile cache rather than failing`,` // the CLI.`,`}`,`await import(${JSON.stringify(t)});`,``].join(`
2
+ `)}function w(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function T(e){return(t={})=>E(`${e}/compile-cache`,t)}function E(e,t){let n=t.cwd??process.cwd(),r=y(n),l=r?.pkg,p=w(t.entry),m=w(t.out),T=b(l),E;if(m.length>0){if(p.length>0&&p.length!==m.length)throw Error(`--entry count (${p.length}) does not match --out count (${m.length}); pass one --out per --entry or omit --out entirely.`);E=m.map(e=>f(e)?e:h(n,e))}else{if(T.length===0||r===void 0)throw Error(`Cannot derive the output path: no bin entry in package.json. Pass --out explicitly.`);if(p.length>0&&p.length!==T.length)throw Error(`--entry count (${p.length}) does not match the package's bin entries (${T.length}); pass one --entry per bin (in declaration order) or matching --out paths.`);E=T.map(([,e])=>h(r.dir,e))}if(new Set(E).size!==E.length)throw Error(`Duplicate output paths; each shim needs a distinct output file. Check the --out values (or the bin paths in package.json when --out is omitted).`);let O=new Map;if(r)for(let[e,t]of T)O.set(h(r.dir,t),e);let k=[],A=t.compileCacheSpecifier??e;if(/[\r\n\u2028\u2029]/.test(A))throw Error(`Invalid compile-cache specifier ${JSON.stringify(A)}: a module specifier cannot contain a line terminator.`);let j=E.map((e,r)=>{let i=O.get(e),o=t.program??i??x(l);if(!o)throw Error(`Cannot derive a program name: no bin or name in package.json. Pass --program explicitly.`);if(t.program===void 0&&i===void 0&&m.length>0&&k.push(`Warning: ${D(e,n)} does not match any bin path in package.json, so its cache directory uses the program name ${JSON.stringify(o)}. Pass --program to override.`),e.endsWith(`.cjs`))throw Error(`The generated shim is an ES module and cannot be written to a .cjs file. Use a .mjs (or .js in a "type": "module" package) output path.`);if(d(e)===``)throw Error(`The generated shim is an ES module and cannot be written to an extensionless file (it would not load on every supported Node.js version). Use a .mjs (or .js in a "type": "module" package) output path.`);if(e.endsWith(`.js`)&&l?.type!==`module`)throw Error(l===void 0?`The generated shim is an ES module, and no package.json was found to confirm .js files are treated as ESM. Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`:`The generated shim is an ES module, but the package is not "type": "module". Write it to a .mjs file instead (e.g. --out dist/bin.mjs).`);let c=p[r]??S(e);if(c===void 0)throw Error(`Cannot derive an entry: none of ${v.join(`, `)} exist next to ${e}. Pass --entry explicitly.`);if(!c.startsWith(`./`)&&!c.startsWith(`../`)&&!c.startsWith(`file:`))throw Error(`Invalid entry ${c}: pass a specifier relative to the shim file ("./..." or "../...") or a file: URL.`);let f;if(c.startsWith(`file:`))try{f=g(c)}catch{f=void 0}else f=h(u(e),c);if(f===e)throw Error(`The shim at ${e} would import itself (entry ${c}). Point bin at a separate shim path (e.g. dist/bin.js) or pass a different --entry.`);if(a(e)&&!s(e,`utf8`).includes(_))throw Error(`Refusing to overwrite ${e}: it exists and was not generated by politty. If bin currently points at your real CLI entry, point it at a separate shim path (e.g. dist/bin.js) or pass --out explicitly.`);return{outputPath:e,program:o,entry:c,compileCacheSpecifier:A}});for(let e of k)console.warn(e);for(let{outputPath:e,program:t,entry:n}of j)o(u(e),{recursive:!0}),c(e,C(t,n,A)),i(e,493);return j}function D(e,t){let n=m(t,e);return n&&!n.startsWith(`..`)?n:e}const O=t({bin:e.string({description:`CLI binary or built JS entry file to invoke`,placeholder:`PATH`}),program:e.string({description:`Program name embedded in worker metadata`,placeholder:`NAME`}),shell:e.enum([`bash`,`zsh`,`fish`],{description:`Shell worker to generate`,placeholder:`SHELL`}),out:e.optionalString({description:`Output worker path (defaults to dist/completion/<shell>-worker.<ext>)`,placeholder:`PATH`}),verify:e.boolean({description:`Verify __completion-worker-path resolves to the generated worker`})}),k=n({name:`generate-worker`,description:`Generate and verify a bundled shell completion worker`,args:O,async run(e){let{generateBundledCompletionWorker:t}=await import(`./completion-OEWfekOk.js`);await t({bin:e.bin,programName:e.program,shell:e.shell,...e.out!==void 0&&{outputPath:e.out},verify:e.verify})}}),A=t({entry:e.optionalStringArray({description:`Module specifier the shim imports, relative to the shim file; repeatable, one per bin/--out (defaults to ./cli.js, ./cli.mjs, ./index.js, or ./index.mjs next to each shim)`,placeholder:`SPECIFIER`}),out:e.optionalStringArray({description:`Output path for the generated shim; repeatable, one per --entry (defaults to the bin paths in package.json)`,placeholder:`PATH`}),program:e.optionalString({description:`Program name for the cache directory, applied to all shims (defaults per shim to its bin name)`,placeholder:`NAME`}),compileCacheSpecifier:e.optionalString({description:`Module specifier the shim imports enableCompileCache from (defaults to the compile-cache subpath of the politty package running this command)`,placeholder:`SPECIFIER`})});function j(e){let t=T(e),i=n({name:`generate-shim`,description:`Generate a compile-cache bin shim that loads the real CLI via dynamic import`,args:A,run(e){let n=process.cwd(),r=t({...e.entry!==void 0&&{entry:e.entry},...e.out!==void 0&&{out:e.out},...e.program!==void 0&&{program:e.program},...e.compileCacheSpecifier!==void 0&&{compileCacheSpecifier:e.compileCacheSpecifier},cwd:n});for(let e of r)console.log(`Generated compile-cache shim: ${D(e.outputPath,n)} (program: ${e.program}, entry: ${e.entry}, compile-cache: ${e.compileCacheSpecifier})`)}}),a=n({name:`politty`,description:`politty development utilities`,subCommands:{"generate-shim":i,"generate-worker":k}});return r(a).catch(e=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)})}export{T as n,j as t};
@@ -1 +1 @@
1
- import"./register-C1WbbeYH.js";const{runPolittyCli:e}=await import(`./cli-main-BzHcRGOO.js`);await e(`@politty/zod`);export{};
1
+ import"./register-C1WbbeYH.js";const{runPolittyCli:e}=await import(`./cli-main-B0jMuGGi.js`);await e(`@politty/zod`);export{};
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{n as e}from"./compile-cache-VuUbFWIo.js";e(`politty`),await import(`./cli-run-BqCOn4Ag.js`);export{};
2
+ import{n as e}from"./compile-cache-VuUbFWIo.js";e(`politty`),await import(`./cli-run-Bm3vsxIB.js`);export{};
@@ -0,0 +1 @@
1
+ function e(e){return{name:e.name,description:e.description,aliases:e.aliases,args:e.args,subCommands:e.subCommands,defaultSubCommand:e.defaultSubCommand,setup:e.setup,run:e.run,cleanup:e.cleanup,notes:e.notes,examples:e.examples}}function t(){return e}export{e as n,t};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./schema-extractor-DU0Vuhbd.js";import{n as t}from"./command-Mbdt0bmN.js";import{c as n}from"./subcommand-router-D8GTMXYL.js";import{a as r,i,n as a,o,r as s,s as c}from"./with-completion-command-DDohm8U6.js";import{c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,p as _,s as v,t as y,u as ee}from"./dynamic-CrnlveHj.js";import{existsSync as b,mkdirSync as x,readFileSync as S,realpathSync as C,renameSync as te,rmSync as ne,statSync as w,writeFileSync as re}from"node:fs";import{dirname as T,extname as ie,isAbsolute as ae,join as E,relative as oe,resolve as se}from"node:path";import{promisify as ce}from"node:util";import{execFile as le}from"node:child_process";function ue(e,t,n=[],r=!1){if(t.length===0)return;let i=de(e,n);for(let e of t)e.set(fe(e,i,r))}function de(e,t){let n=new Map,r=new Set;for(let t of[...e.options,...e.positionals])r.add(t.name);let i=(e,t)=>{for(let i of e){if(n.has(i.name)||t&&r.has(i.name))continue;let e=i.valueCompletion;e?.type===`choices`&&e.choices&&e.choices.length>0&&n.set(i.name,e.choices)}};return i([...e.options,...e.positionals],!1),i(t,!0),n}function fe(e,t,n=!1){let{spec:r}=e,i=r.dependsOn;if(i.length===0)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn must list at least one sibling arg.`);let a=[];for(let n of i){if(n===e.name)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn cannot reference the field itself ("${n}").`);let r=t.get(n);if(!r)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn references "${n}", which is not a sibling arg with a static \`choices\`/enum schema on the same command. Chaining expand specs is not supported.`);a.push([...r])}if(n)return{type:`expand`,dependsOn:i,table:[]};let o=[];for(let t of me(a)){let n={};i.forEach((e,r)=>{n[e]=t[r]});let a;try{a=r.enumerate(n)}catch(t){let r=t instanceof Error?t.message:String(t);throw Error(`Field "${e.describe}": completion.custom.expand.enumerate threw for deps=${JSON.stringify(n)}: ${r}`)}let s=pe(a);s.length!==0&&o.push({key:t,candidates:s})}return{type:`expand`,dependsOn:i,table:o}}function pe(e){let t=[],n=new Set;for(let r of e){let e=typeof r==`string`?r:r.value;if(n.has(e))continue;n.add(e);let i={value:e};typeof r!=`string`&&r.description!==void 0&&(i.description=r.description),t.push(i)}return t}function*me(e){if(e.length===0){yield[];return}let t=Array.from({length:e.length}).fill(0);for(;;){yield t.map((t,n)=>e[n][t]);let n=e.length-1;for(;n>=0&&(t[n]++,!(t[n]<e[n].length));)t[n]=0,n--;if(n<0)return}}function he(e,t,n,r){let i=v(e);if(i?.type===`pending-expand`){t.push({name:e.name,describe:n,set:r,spec:i.spec});return}i!==void 0&&r(i)}function D(e){return e.replace(/[^a-zA-Z0-9_]/g,`_`)}function O(e){let t=e.toUpperCase();return/^[A-Z_]/.test(t)?`${t}_BIN`:`_${t}_BIN`}function k(e,t,n){return`__${e}_expand_${t}__${D(n)}`}function ge(e,t){return[`__${e}_invoke_complete() {`,` local _shell="$1"; shift`,` "\${${O(e)}:-${t}}" __complete --shell "$_shell" -- "$@" 2>/dev/null`,`}`]}function A(e){return e.filter(e=>!e.name.startsWith(`__`))}function j(e){let t=[];for(let n of A(e))if(t.push({name:n.name,description:n.description}),n.aliases)for(let e of n.aliases)t.push({name:e,description:n.description});return t}function _e(e,t){let n=e.type===`boolean`&&e.negation===!0,r={name:e.name,cliName:e.cliName,alias:e.alias,negation:e.negationDisplay,negationDescription:e.negationDescription,description:e.description,takesValue:e.type!==`boolean`,valueType:e.type,required:e.required,defaultNegationAccepted:n};return he(e,t,`--${e.cliName}`,e=>{r.valueCompletion=e}),r}function ve(t){return t.args?e(t.args).fields.filter(e=>e.positional):[]}function ye(e,t){return e.filter(e=>!e.positional).map(e=>_e(e,t))}function be(e,t){return e.filter(e=>e.positional).map((e,n)=>{let r={name:e.name,cliName:e.cliName,position:n,description:e.description,required:e.required,variadic:e.type===`array`};return he(e,t,`<${e.cliName}>`,e=>{r.valueCompletion=e}),r})}function xe(t,r,i=[],a=!1){let o=[];if(r.subCommands)for(let[e,t]of Object.entries(r.subCommands)){let r=n(t);r?o.push(xe(e,r,i,a)):o.push({name:e,description:`(lazy loaded)`,subcommands:[],options:[],positionals:[]})}let s=[],c=r.args?e(r.args).fields:[],l={name:t,description:r.description,aliases:r.aliases,subcommands:o,options:ye(c,s),positionals:be(c,s)};return ue(l,s,i,a),l}function M(e,t,n){return e?`${e}${n}${t}`:t}function Se(e,t){let n=[t.name,...t.aliases??[]];return e.flatMap(e=>n.map(t=>M(e,t,`:`)))}function Ce(e,t){let n=[],r=A(e.subcommands).length>0;for(let i of e.options){if(!i.takesValue)continue;let a=r&&i.isGlobal===!0?h(i.cliName,i.alias):P(i,e.options);a.length!==0&&n.push({parentPath:t,tokens:a})}for(let r of A(e.subcommands))for(let e of[r.name,...r.aliases??[]])n.push(...Ce(r,M(t,e,`:`)));return n}function we(e,t){return Ce(e,t).map(e=>` ${e.tokens.map(t=>`${e.parentPath}:${t}`).join(`|`)}) return 0 ;;`)}function N(e,t=``,n=``){let r=[];for(let i of A(e.subcommands)){let e=M(n,D(i.name),`_`);for(let n of[i.name,...i.aliases??[]]){let a=M(t,n,`:`);r.push(...N(i,a,e)),r.push({pathStr:a,funcSuffix:e,lookupPattern:`${t}:${n}`})}}return r}function Te(e){return e.map(e=>` ${e.lookupPattern}) return 0 ;;`)}function Ee(e,t){return e.map(e=>` ${e.pathStr}) __${t}_complete_${e.funcSuffix} ;;`)}function De(e,t){let n=e.isGlobal?`_global_arg_values`:`_arg_values`;return t===`bash`?`${n}_${D(e.fieldName)}="$3"`:`${n}[${e.fieldName}]="$3"`}function Oe(e,t){let n=[];for(let r of e){if(r.isPositional||!r.optionTokens||r.optionTokens.length===0)continue;let e=r.pathStrs.flatMap(e=>r.optionTokens.map(t=>`${e}:${t}`)).join(`|`);n.push(` ${e}) ${De(r,t)} ;;`)}return n}function ke(e,t){let n=[];for(let r of e){if(!r.isPositional)continue;let e=r.pathStrs.map(e=>`${e}:${r.position}`).join(`|`);n.push(` ${e}) ${De(r,t)} ;;`)}return n}function Ae(e,t){let n=[];for(let r of e){if(r.optionTokens.length===0)continue;let e=r.pathStrs.flatMap(e=>r.optionTokens.map(t=>`${e}:${t}`)).join(`|`),i=D(r.fieldName),a=r.isGlobal?`_global_used_field_keys`:`_used_field_keys`,o=t===`bash`?`${a}_${i}`:`${a}[${i}]`,s=t===`bash`?`_global_arr_seen_${i}`:`_global_arr_seen[${i}]`,c=`${o}=" $_k "`,l=`${o}+=" $_k "`,u=`${s}=1`;n.push(` ${e})`),n.push(` if [[ "$3" == *=* ]]; then`),n.push(' local _k="${3%%=*}"'),r.isGlobal?(n.push(` if [[ -n "$_k" ]]; then`),n.push(` if [[ -z "\${${s}:-}" ]]; then`),n.push(` ${c}`),n.push(` ${u}`),n.push(` else`),n.push(` ${l}`),n.push(` fi`),n.push(` fi`)):n.push(` [[ -n "$_k" ]] && ${l}`),n.push(` fi`),n.push(` ;;`)}return n}function P(e,t){let n=h(e.cliName,e.alias);if(e.isGlobal===!0){let e=new Set;for(let n of t)if(n.isGlobal!==!0)for(let t of u(n.cliName,n.alias))e.add(t);return n.filter(t=>!e.has(t))}let r=ee(t);return r.size===0?n:n.filter(t=>!t.startsWith(`-`)||t.startsWith(`--`)||!r.has(t)?!0:e.alias?.includes(t.slice(1))===!0)}function je(e){let t=[];return Me(e,[],[``],[],`root`,t),t}function Me(e,t,n,r,i,a){let o=n[0];for(let s of e.options){let c=s.valueCompletion;if(c?.type===`expand`){let l=s.valueType===`array`;a.push({path:t,pathStr:o,pathStrs:n,intermediatePathStrs:r,funcSuffix:i,fieldName:s.name,isGlobal:s.isGlobal===!0,isPositional:!1,isArrayOption:l,optionTokens:l?P(s,e.options):[],vc:c})}}for(let s of e.positionals){let e=s.valueCompletion;e?.type===`expand`&&a.push({path:t,pathStr:o,pathStrs:n,intermediatePathStrs:r,funcSuffix:i,fieldName:s.name,isGlobal:!1,isPositional:!0,isArrayOption:!1,optionTokens:[],vc:e})}for(let o of A(e.subcommands))Me(o,[...t,o.name],Se(n,o),[...r,...n],i===`root`?D(o.name):`${i}_${D(o.name)}`,a)}function Ne(e,t,n=[]){let r=Pe(e),i=new Map,a=(e,t,n)=>{let r=i.get(e);r||(r={ref:t,pathStrs:[],seen:new Set},i.set(e,r));for(let e of n)r.seen.has(e)||(r.seen.add(e),r.pathStrs.push(e))},o=(e,t,n)=>{let i=new Map,a=(e,t)=>{if(t.length===0)return;let n=t.join(` `),r=i.get(n);r||(r={tokens:t,paths:[]},i.set(n,r)),r.paths.push(e)};for(let n of t){let t=r.get(n);if(!t)continue;let i=new Set;for(let e of t.options)if(e.isGlobal!==!0)for(let t of u(e.cliName,e.alias))i.add(t);a(n,e.filter(e=>!i.has(e)))}for(let t of n)a(t,e);return i},s=(e,t,n)=>{let r=h(t.cliName,t.alias),i=o(r,n.pathStrs,n.intermediatePathStrs);for(let[t,n]of i)a(`g::${e}::${t}`,{fieldName:e,isGlobal:!0,isPositional:!1,optionTokens:n.tokens},n.paths)};for(let e of t){let t=r.get(e.pathStr);if(t)for(let r of e.vc.dependsOn){if(e.isGlobal){let t=n.find(e=>e.name===r);if(!t)continue;s(r,t,e);continue}let i=t.positionals.findIndex(e=>e.name===r);if(i>=0){a(`lp::${e.pathStr}::${r}`,{fieldName:r,isGlobal:!1,isPositional:!0,position:i},e.pathStrs);continue}let o=t.options.find(e=>e.name===r);if(o){if(o.isGlobal===!0){s(r,o,e);continue}a(`lo::${e.pathStr}::${r}`,{fieldName:r,isGlobal:!1,isPositional:!1,optionTokens:P(o,t.options)},e.pathStrs)}}}let c=[];for(let e of i.values())e.pathStrs.length!==0&&c.push({...e.ref,pathStr:e.pathStrs[0],pathStrs:e.pathStrs});return c}function Pe(e){let t=new Map,n=(e,r)=>{for(let n of r)t.set(n,e);for(let t of A(e.subcommands))n(t,Se(r,t))};return n(e,[``]),t}function F(e){for(let t of e.options)if(t.valueCompletion?.type===`dynamic`)return!0;for(let t of e.positionals)if(t.valueCompletion?.type===`dynamic`)return!0;for(let t of e.subcommands)if(F(t))return!0;return!1}function Fe(e,t){let n=new Set(e.options.map(e=>e.name)),r=t.filter(e=>!n.has(e.name));e.options=[...e.options,...r];for(let n of e.subcommands)Fe(n,t)}function I(t,n,r,i=!1){let a=[];if(r){let t=[];a=ye(e(r).fields,t).map(e=>(e.isGlobal=!0,e)),ue({name:n,subcommands:[],options:a,positionals:[]},t,[],i)}let o=xe(n,t,a,i);return r?Fe(o,a):a=o.options,{command:o,programName:n,globalOptions:a}}function L(e){try{return Math.floor(w(e).mtimeMs/1e3).toString()}catch{return`0`}}function Ie(e){return e.replace(/\r?\n/g,` `)}function Le(e){if(!e||/[/\\\0]/.test(e))return null;let t=process.env.PATH??``;for(let n of t.split(`:`)){if(!n)continue;let t=E(n,e);try{if(w(t).isFile())return t}catch{}}return null}function R(e,t){return t||process.env[O(D(e))]||(Le(e)??process.argv[1]??``)}function z(e){let t=R(e.programName,e.binPath),n=[`# politty-completion-version: 1`,`# politty-bin-sig: ${L(t)}`,`# politty-bin-path: ${Ie(t)}`,`# program: ${e.programName}`];return e.programVersion&&n.push(`# program-version: ${e.programVersion}`),n.push(`# shell: ${e.shell}`),n}function Re(e){let{programName:t,binPath:n}=e,r=D(t),i=O(r),a=R(t,n),o=L(a),s=p(a),c=`__${r}_self_refresh`;return[`${c}() {`,` local _self _bin _sig`," _self=${BASH_SOURCE[0]:-}",` [[ -n "$_self" && -f "$_self" ]] || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qF "# politty-completion-version:" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# program: ${t}" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# shell: bash" || return 1`,` _bin="\${${i}:-$(type -P ${t} 2>/dev/null)}"`,` [[ -n "$_bin" ]] || return 1`,` _sig=${f(`$_bin`,{shell:`posix`})} || return 1`,` [[ "$_sig" != "${o}" || "$_bin" != ${s} ]] || return 1`,` "$_bin" __refresh-completion bash "$_self" --static 2>/dev/null || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-sig: $_sig" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-path: $_bin" || return 1`,` source "$_self" 2>/dev/null || return 1`,` return 0`,`}`,`if ${c}; then`,` unset -f ${c}`,` return 0 2>/dev/null || true`,`else`,` unset -f ${c}`,`fi`,``]}function ze(e){let{programName:t,binPath:n}=e,r=D(t),i=O(r),a=`_${t}`,o=R(t,n),s=L(o),c=p(o),l=`__${r}_self_refresh`;return[`${l}() {`,` emulate -L zsh`,` setopt local_options no_aliases`,` local _self _bin _sig`,' _self="${(%):-%x}"',` [[ -n "$_self" && -f "$_self" ]] || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qF "# politty-completion-version:" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# program: ${t}" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# shell: zsh" || return 1`,` _bin="\${${i}:-$(whence -p ${t} 2>/dev/null)}"`,` [[ -n "$_bin" ]] || return 1`,` _sig=${f(`$_bin`,{shell:`posix`})} || return 1`,` [[ "$_sig" != "${s}" || "$_bin" != ${c} ]] || return 1`,` "$_bin" __refresh-completion zsh "$_self" --static 2>/dev/null || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-sig: $_sig" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-path: $_bin" || return 1`,` source "$_self" 2>/dev/null || return 1`,` ${a} "$@"`,` return 0`,`}`,`if ${l} "$@"; then`,` unfunction ${l} 2>/dev/null`,` return 0 2>/dev/null || true`,`else`,` unfunction ${l} 2>/dev/null`,`fi`,``]}function Be(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\$/g,`\\$`).replace(/`/g,"\\`")}function Ve(e){let t=``,n=new TextEncoder().encode(e);for(let e of n)t+=e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122?String.fromCharCode(e):`_${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function He(e,t,n,r){if(!e)return[];switch(e.type){case`expand`:{if(!r)throw Error(`bashValueLines: expand variant requires a location`);let e=k(n,r.funcSuffix,r.fieldName),i=[`local _enc_key='' _enc_v`];r.resolvedDeps.forEach((e,t)=>{let r=D(e.name),a=e.isGlobal?`_global_arg_values_${r}`:`_arg_values_${r}`;i.push(`_enc_v="\${${a}:-}"`),i.push(t===0?`_enc_key="$(__${n}_enc "$_enc_v")"`:`_enc_key+="_$(__${n}_enc "$_enc_v")"`)});let a=t?'"${_inline_prefix}${_c}"':`"$_c"`,o=r.isGlobal?`\${_global_used_field_keys_${D(r.fieldName)}:-}`:`\${_used_field_keys_${D(r.fieldName)}:-}`,s=r.isArrayOption?[` if [[ -n "$_ck" && " ${o} " == *" $_ck "* ]]; then continue; fi`]:[];return[`compopt +o default 2>/dev/null`,...i,`local _varname=${e}__\${_enc_key}`,'local _raw="${!_varname:-}"',`if [[ -n "$_raw" ]]; then`,` local -a _vals=()`,` local _line`,` while IFS= read -r _line; do _vals+=("$_line"); done <<< "$_raw"`,` local _c _ck _seen_keys=" " _had_key=0`,' for _c in "${_vals[@]}"; do',` [[ -z "$_c" ]] && continue`,` if [[ "$_c" == *=* ]]; then`,' _ck="${_c%%=*}"',...s,` if [[ "$_cur" != *=* ]]; then`,` [[ "$_seen_keys" == *" $_ck "* ]] && continue`,` _seen_keys+="$_ck "`,' _c="${_ck}="',` _had_key=1`,` elif [[ "$_c" != *=?* ]]; then`,` continue`,` fi`,` fi`,` [[ "$_c" == "$_cur"* ]] && COMPREPLY+=(${a})`,` done`,` if (( _had_key )); then compopt -o nospace 2>/dev/null; fi`,`fi`,'if (( ${#COMPREPLY[@]} == 0 )); then COMPREPLY=( "" ); fi']}case`dynamic`:return[`local _dyn_out`,`_dyn_out=$(__${n}_invoke_complete bash "\${_words[@]}")`,`__${n}_apply_dynamic_output "$_dyn_out"`];case`choices`:{let n=[`local -a _choices=(${e.choices.map(e=>`"${Be(e)}"`).join(` `)})`,`COMPREPLY=()`,'local _c; for _c in "${_choices[@]}"; do [[ "$_c" == "$_cur"* ]] && COMPREPLY+=("${_inline_prefix}${_c}"); done'];return t&&n.push(`compopt -o nospace`),n.push(`compopt +o default 2>/dev/null`),n}case`file`:return e.matcher?.length?Ue(e.matcher.map(e=>`[[ "\${_f##*/}" == ${e} ]]`).join(` || `)):e.extensions?.length?Ue(e.extensions.map(e=>`[[ "$_f" == *".${e}" ]]`).join(` || `)):[`COMPREPLY=($(compgen -P "$_inline_prefix" -f -- "$_cur"))`,`compopt -o filenames`];case`directory`:return[`COMPREPLY=($(compgen -P "$_inline_prefix" -d -- "$_cur"))`,`compopt -o filenames`];case`command`:return[`COMPREPLY=($(compgen -P "$_inline_prefix" -W "$(${e.shellCommand})" -- "$_cur"))`];case`none`:return[`compopt +o default 2>/dev/null`];case`runtime-expand`:return[]}}function B(e){return`unset $(compgen -v ${e} 2>/dev/null) 2>/dev/null`}function Ue(e){return[`local -a _all_entries=($(compgen -f -- "$_cur"))`,'for _f in "${_all_entries[@]}"; do',` if [[ -d "$_f" ]]; then`,' COMPREPLY+=("${_inline_prefix}$_f")',` elif ${e}; then`,' COMPREPLY+=("${_inline_prefix}$_f")',` fi`,`done`,`compopt -o filenames`,`compopt +o default 2>/dev/null`]}function We(e,t,n,r,i){let a=[];for(let o of e){if(!o.takesValue||!o.valueCompletion)continue;let s=He(o.valueCompletion,n,r,{funcSuffix:i,...d(o,e,t)});if(s.length===0)continue;let c=P(o,e);if(c.length!==0){a.push(` ${c.join(`|`)})`);for(let e of s)a.push(` ${e}`);a.push(` return ;;`)}}return a}function V(e,t,n,r=[]){if(e.length===0)return[];let i=[];i.push(` case "$_pos_count" in`);for(let a of e){a.variadic?i.push(` ${a.position}|*)`):i.push(` ${a.position})`);for(let o of He(a.valueCompletion,!1,t,{funcSuffix:n,..._(a,r,e)}))i.push(` ${o}`);i.push(` ;;`)}return i.push(` esac`),i}function Ge(e,t,n,r,i){let a=[`COMPREPLY=($(compgen -W "${e}" -- "$_cur"))`,`compopt +o default 2>/dev/null`];return t.length===0?a:[`local -a _sub_names=(${e})`,`local _sub_name _sub_match=0`,'for _sub_name in "${_sub_names[@]}"; do',` [[ "$_sub_name" == "$_cur"* ]] && _sub_match=1 && break`,`done`,`if (( _sub_match )); then`,...a.map(e=>` ${e}`),`else`,...V(t,n,r,i),`fi`]}function Ke(e,t,n,r){if(!e.some(e=>e.takesValue&&e.valueCompletion))return[];let i=[],a=We(e,t,!1,n,r);a.length>0&&(i.push(` if [[ -z "$_inline_prefix" ]]; then`),i.push(` case "$_prev" in`),i.push(...a),i.push(` esac`),i.push(` fi`));let o=We(e,t,!0,n,r);return o.length>0&&(i.push(` if [[ -n "$_inline_prefix" ]]; then`),i.push(' case "${_inline_prefix%=}" in'),i.push(...o),i.push(` esac`),i.push(` fi`)),i}function qe(e,t){let n=[];for(let r of e){if(r.valueType===`array`){n.push(` _avail+=(--${r.cliName})`);continue}let i=g(r.cliName,r.alias,r.negation,{isGlobal:r.isGlobal===!0,frameOptions:e}),a=`__${t}_not_used ${i.join(` `)}`,o=r.negation?[r.cliName,r.negation]:[r.cliName];for(let e of o)i.includes(`"--${e}"`)&&n.push(` ${a} && _avail+=(--${e})`)}return n.push(` __${t}_not_used "--help" && _avail+=(--help)`),n}function Je(e,t,n){let r=[...n,e.name],i=r.map(D).join(`_`),a=`__${t}_complete_${i}`,o=A(e.subcommands),s=[];for(let e of o)s.push(...Je(e,t,r));s.push(`${a}() {`),s.push(...Ke(e.options,e.positionals,t,i));let c=r.join(`:`);if(s.push(` if [[ -z "$_inline_prefix" ]] && __${t}_opt_takes_value "${c}" "$_prev"; then return; fi`),s.push(` if [[ -n "$_inline_prefix" ]] && __${t}_opt_takes_value "${c}" "\${_inline_prefix%=}"; then return; fi`),e.positionals.length>0?(s.push(` if (( _after_dd )); then`),s.push(...V(e.positionals,t,i,e.options).map(e=>` ${e}`)),s.push(` return`),s.push(` fi`)):s.push(` if (( _after_dd )); then return; fi`),s.push(` if [[ "$_cur" == -* ]]; then`),s.push(` local -a _avail=()`),s.push(...qe(e.options,t)),s.push(' COMPREPLY=($(compgen -W "${_avail[*]}" -- "$_cur"))'),s.push(` compopt +o default 2>/dev/null`),s.push(` return`),s.push(` fi`),o.length>0){let n=j(e.subcommands).map(e=>e.name).join(` `);s.push(...Ge(n,e.positionals,t,i,e.options).map(e=>` ${e}`))}else e.positionals.length>0&&s.push(...V(e.positionals,t,i,e.options));return s.push(`}`),s.push(``),s}function Ye(e,t){let{programName:n}=t,r=I(e,n,t.globalArgsSchema),i=D(n),a=t.staticWorker?`${i}_${D(t.staticWorker.functionSuffix)}`:i,o=t.staticWorker!==void 0,s=r.command,c=A(s.subcommands),u=je(s),d=Ne(s,u,r.globalOptions),f=[];f.push(...z({programName:n,shell:`bash`,binPath:t.binPath,programVersion:t.programVersion})),f.push(`# politty-completion-mode: ${o?`worker`:`static`}`),o&&f.push(`# politty-completion-worker: true`),f.push(`# Generated by politty`),f.push(``),o||f.push(...Re({programName:n,binPath:t.binPath}));let p=u.length>0,h=u.filter(e=>e.isArrayOption),g=h.length>0;p&&(f.push(`__${a}_enc() {`),f.push(` local LC_ALL=C`),f.push(` local _s=$1 _r='' _c _i`),f.push(" for (( _i=0; _i<${#_s}; _i++ )); do"),f.push(" _c=${_s:_i:1}"),f.push(` case "$_c" in`),f.push(` [a-zA-Z0-9]) _r+="$_c" ;;`),f.push(` *) printf -v _r '%s_%02X' "$_r" "'$_c" ;;`),f.push(` esac`),f.push(` done`),f.push(` printf '%s' "$_r"`),f.push(`}`),f.push(``));for(let e of u){let t=k(a,e.funcSuffix,e.fieldName);for(let n of e.vc.table){let e=n.key.map(Ve).join(`_`),r=n.candidates.map(e=>e.value).join(`
1
+ import{t as e}from"./schema-extractor-DU0Vuhbd.js";import{n as t}from"./command-tLHaJHe6.js";import{c as n}from"./subcommand-router-D8GTMXYL.js";import{a as r,i,n as a,o,r as s,s as c}from"./with-completion-command-DM6F5LyO.js";import{c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,p as _,s as v,t as y,u as ee}from"./dynamic-D7QInkeD.js";import{existsSync as b,mkdirSync as x,readFileSync as S,realpathSync as C,renameSync as te,rmSync as ne,statSync as w,writeFileSync as re}from"node:fs";import{dirname as T,extname as ie,isAbsolute as ae,join as E,relative as oe,resolve as se}from"node:path";import{promisify as ce}from"node:util";import{execFile as le}from"node:child_process";function ue(e,t,n=[],r=!1){if(t.length===0)return;let i=de(e,n);for(let e of t)e.set(fe(e,i,r))}function de(e,t){let n=new Map,r=new Set;for(let t of[...e.options,...e.positionals])r.add(t.name);let i=(e,t)=>{for(let i of e){if(n.has(i.name)||t&&r.has(i.name))continue;let e=i.valueCompletion;e?.type===`choices`&&e.choices&&e.choices.length>0&&n.set(i.name,e.choices)}};return i([...e.options,...e.positionals],!1),i(t,!0),n}function fe(e,t,n=!1){let{spec:r}=e,i=r.dependsOn;if(i.length===0)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn must list at least one sibling arg.`);let a=[];for(let n of i){if(n===e.name)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn cannot reference the field itself ("${n}").`);let r=t.get(n);if(!r)throw Error(`Field "${e.describe}": completion.custom.expand.dependsOn references "${n}", which is not a sibling arg with a static \`choices\`/enum schema on the same command. Chaining expand specs is not supported.`);a.push([...r])}if(n)return{type:`expand`,dependsOn:i,table:[]};let o=[];for(let t of me(a)){let n={};i.forEach((e,r)=>{n[e]=t[r]});let a;try{a=r.enumerate(n)}catch(t){let r=t instanceof Error?t.message:String(t);throw Error(`Field "${e.describe}": completion.custom.expand.enumerate threw for deps=${JSON.stringify(n)}: ${r}`)}let s=pe(a);s.length!==0&&o.push({key:t,candidates:s})}return{type:`expand`,dependsOn:i,table:o}}function pe(e){let t=[],n=new Set;for(let r of e){let e=typeof r==`string`?r:r.value;if(n.has(e))continue;n.add(e);let i={value:e};typeof r!=`string`&&r.description!==void 0&&(i.description=r.description),t.push(i)}return t}function*me(e){if(e.length===0){yield[];return}let t=Array.from({length:e.length}).fill(0);for(;;){yield t.map((t,n)=>e[n][t]);let n=e.length-1;for(;n>=0&&(t[n]++,!(t[n]<e[n].length));)t[n]=0,n--;if(n<0)return}}function he(e,t,n,r){let i=v(e);if(i?.type===`pending-expand`){t.push({name:e.name,describe:n,set:r,spec:i.spec});return}i!==void 0&&r(i)}function D(e){return e.replace(/[^a-zA-Z0-9_]/g,`_`)}function O(e){let t=e.toUpperCase();return/^[A-Z_]/.test(t)?`${t}_BIN`:`_${t}_BIN`}function k(e,t,n){return`__${e}_expand_${t}__${D(n)}`}function ge(e,t){return[`__${e}_invoke_complete() {`,` local _shell="$1"; shift`,` "\${${O(e)}:-${t}}" __complete --shell "$_shell" -- "$@" 2>/dev/null`,`}`]}function A(e){return e.filter(e=>!e.name.startsWith(`__`))}function j(e){let t=[];for(let n of A(e))if(t.push({name:n.name,description:n.description}),n.aliases)for(let e of n.aliases)t.push({name:e,description:n.description});return t}function _e(e,t){let n=e.type===`boolean`&&e.negation===!0,r={name:e.name,cliName:e.cliName,alias:e.alias,negation:e.negationDisplay,negationDescription:e.negationDescription,description:e.description,takesValue:e.type!==`boolean`,valueType:e.type,required:e.required,defaultNegationAccepted:n};return he(e,t,`--${e.cliName}`,e=>{r.valueCompletion=e}),r}function ve(t){return t.args?e(t.args).fields.filter(e=>e.positional):[]}function ye(e,t){return e.filter(e=>!e.positional).map(e=>_e(e,t))}function be(e,t){return e.filter(e=>e.positional).map((e,n)=>{let r={name:e.name,cliName:e.cliName,position:n,description:e.description,required:e.required,variadic:e.type===`array`};return he(e,t,`<${e.cliName}>`,e=>{r.valueCompletion=e}),r})}function xe(t,r,i=[],a=!1){let o=[];if(r.subCommands)for(let[e,t]of Object.entries(r.subCommands)){let r=n(t);r?o.push(xe(e,r,i,a)):o.push({name:e,description:`(lazy loaded)`,subcommands:[],options:[],positionals:[]})}let s=[],c=r.args?e(r.args).fields:[],l={name:t,description:r.description,aliases:r.aliases,subcommands:o,options:ye(c,s),positionals:be(c,s)};return ue(l,s,i,a),l}function M(e,t,n){return e?`${e}${n}${t}`:t}function Se(e,t){let n=[t.name,...t.aliases??[]];return e.flatMap(e=>n.map(t=>M(e,t,`:`)))}function Ce(e,t){let n=[],r=A(e.subcommands).length>0;for(let i of e.options){if(!i.takesValue)continue;let a=r&&i.isGlobal===!0?h(i.cliName,i.alias):P(i,e.options);a.length!==0&&n.push({parentPath:t,tokens:a})}for(let r of A(e.subcommands))for(let e of[r.name,...r.aliases??[]])n.push(...Ce(r,M(t,e,`:`)));return n}function we(e,t){return Ce(e,t).map(e=>` ${e.tokens.map(t=>`${e.parentPath}:${t}`).join(`|`)}) return 0 ;;`)}function N(e,t=``,n=``){let r=[];for(let i of A(e.subcommands)){let e=M(n,D(i.name),`_`);for(let n of[i.name,...i.aliases??[]]){let a=M(t,n,`:`);r.push(...N(i,a,e)),r.push({pathStr:a,funcSuffix:e,lookupPattern:`${t}:${n}`})}}return r}function Te(e){return e.map(e=>` ${e.lookupPattern}) return 0 ;;`)}function Ee(e,t){return e.map(e=>` ${e.pathStr}) __${t}_complete_${e.funcSuffix} ;;`)}function De(e,t){let n=e.isGlobal?`_global_arg_values`:`_arg_values`;return t===`bash`?`${n}_${D(e.fieldName)}="$3"`:`${n}[${e.fieldName}]="$3"`}function Oe(e,t){let n=[];for(let r of e){if(r.isPositional||!r.optionTokens||r.optionTokens.length===0)continue;let e=r.pathStrs.flatMap(e=>r.optionTokens.map(t=>`${e}:${t}`)).join(`|`);n.push(` ${e}) ${De(r,t)} ;;`)}return n}function ke(e,t){let n=[];for(let r of e){if(!r.isPositional)continue;let e=r.pathStrs.map(e=>`${e}:${r.position}`).join(`|`);n.push(` ${e}) ${De(r,t)} ;;`)}return n}function Ae(e,t){let n=[];for(let r of e){if(r.optionTokens.length===0)continue;let e=r.pathStrs.flatMap(e=>r.optionTokens.map(t=>`${e}:${t}`)).join(`|`),i=D(r.fieldName),a=r.isGlobal?`_global_used_field_keys`:`_used_field_keys`,o=t===`bash`?`${a}_${i}`:`${a}[${i}]`,s=t===`bash`?`_global_arr_seen_${i}`:`_global_arr_seen[${i}]`,c=`${o}=" $_k "`,l=`${o}+=" $_k "`,u=`${s}=1`;n.push(` ${e})`),n.push(` if [[ "$3" == *=* ]]; then`),n.push(' local _k="${3%%=*}"'),r.isGlobal?(n.push(` if [[ -n "$_k" ]]; then`),n.push(` if [[ -z "\${${s}:-}" ]]; then`),n.push(` ${c}`),n.push(` ${u}`),n.push(` else`),n.push(` ${l}`),n.push(` fi`),n.push(` fi`)):n.push(` [[ -n "$_k" ]] && ${l}`),n.push(` fi`),n.push(` ;;`)}return n}function P(e,t){let n=h(e.cliName,e.alias);if(e.isGlobal===!0){let e=new Set;for(let n of t)if(n.isGlobal!==!0)for(let t of u(n.cliName,n.alias))e.add(t);return n.filter(t=>!e.has(t))}let r=ee(t);return r.size===0?n:n.filter(t=>!t.startsWith(`-`)||t.startsWith(`--`)||!r.has(t)?!0:e.alias?.includes(t.slice(1))===!0)}function je(e){let t=[];return Me(e,[],[``],[],`root`,t),t}function Me(e,t,n,r,i,a){let o=n[0];for(let s of e.options){let c=s.valueCompletion;if(c?.type===`expand`){let l=s.valueType===`array`;a.push({path:t,pathStr:o,pathStrs:n,intermediatePathStrs:r,funcSuffix:i,fieldName:s.name,isGlobal:s.isGlobal===!0,isPositional:!1,isArrayOption:l,optionTokens:l?P(s,e.options):[],vc:c})}}for(let s of e.positionals){let e=s.valueCompletion;e?.type===`expand`&&a.push({path:t,pathStr:o,pathStrs:n,intermediatePathStrs:r,funcSuffix:i,fieldName:s.name,isGlobal:!1,isPositional:!0,isArrayOption:!1,optionTokens:[],vc:e})}for(let o of A(e.subcommands))Me(o,[...t,o.name],Se(n,o),[...r,...n],i===`root`?D(o.name):`${i}_${D(o.name)}`,a)}function Ne(e,t,n=[]){let r=Pe(e),i=new Map,a=(e,t,n)=>{let r=i.get(e);r||(r={ref:t,pathStrs:[],seen:new Set},i.set(e,r));for(let e of n)r.seen.has(e)||(r.seen.add(e),r.pathStrs.push(e))},o=(e,t,n)=>{let i=new Map,a=(e,t)=>{if(t.length===0)return;let n=t.join(` `),r=i.get(n);r||(r={tokens:t,paths:[]},i.set(n,r)),r.paths.push(e)};for(let n of t){let t=r.get(n);if(!t)continue;let i=new Set;for(let e of t.options)if(e.isGlobal!==!0)for(let t of u(e.cliName,e.alias))i.add(t);a(n,e.filter(e=>!i.has(e)))}for(let t of n)a(t,e);return i},s=(e,t,n)=>{let r=h(t.cliName,t.alias),i=o(r,n.pathStrs,n.intermediatePathStrs);for(let[t,n]of i)a(`g::${e}::${t}`,{fieldName:e,isGlobal:!0,isPositional:!1,optionTokens:n.tokens},n.paths)};for(let e of t){let t=r.get(e.pathStr);if(t)for(let r of e.vc.dependsOn){if(e.isGlobal){let t=n.find(e=>e.name===r);if(!t)continue;s(r,t,e);continue}let i=t.positionals.findIndex(e=>e.name===r);if(i>=0){a(`lp::${e.pathStr}::${r}`,{fieldName:r,isGlobal:!1,isPositional:!0,position:i},e.pathStrs);continue}let o=t.options.find(e=>e.name===r);if(o){if(o.isGlobal===!0){s(r,o,e);continue}a(`lo::${e.pathStr}::${r}`,{fieldName:r,isGlobal:!1,isPositional:!1,optionTokens:P(o,t.options)},e.pathStrs)}}}let c=[];for(let e of i.values())e.pathStrs.length!==0&&c.push({...e.ref,pathStr:e.pathStrs[0],pathStrs:e.pathStrs});return c}function Pe(e){let t=new Map,n=(e,r)=>{for(let n of r)t.set(n,e);for(let t of A(e.subcommands))n(t,Se(r,t))};return n(e,[``]),t}function F(e){for(let t of e.options)if(t.valueCompletion?.type===`dynamic`)return!0;for(let t of e.positionals)if(t.valueCompletion?.type===`dynamic`)return!0;for(let t of e.subcommands)if(F(t))return!0;return!1}function Fe(e,t){let n=new Set(e.options.map(e=>e.name)),r=t.filter(e=>!n.has(e.name));e.options=[...e.options,...r];for(let n of e.subcommands)Fe(n,t)}function I(t,n,r,i=!1){let a=[];if(r){let t=[];a=ye(e(r).fields,t).map(e=>(e.isGlobal=!0,e)),ue({name:n,subcommands:[],options:a,positionals:[]},t,[],i)}let o=xe(n,t,a,i);return r?Fe(o,a):a=o.options,{command:o,programName:n,globalOptions:a}}function L(e){try{return Math.floor(w(e).mtimeMs/1e3).toString()}catch{return`0`}}function Ie(e){return e.replace(/\r?\n/g,` `)}function Le(e){if(!e||/[/\\\0]/.test(e))return null;let t=process.env.PATH??``;for(let n of t.split(`:`)){if(!n)continue;let t=E(n,e);try{if(w(t).isFile())return t}catch{}}return null}function R(e,t){return t||process.env[O(D(e))]||(Le(e)??process.argv[1]??``)}function z(e){let t=R(e.programName,e.binPath),n=[`# politty-completion-version: 1`,`# politty-bin-sig: ${L(t)}`,`# politty-bin-path: ${Ie(t)}`,`# program: ${e.programName}`];return e.programVersion&&n.push(`# program-version: ${e.programVersion}`),n.push(`# shell: ${e.shell}`),n}function Re(e){let{programName:t,binPath:n}=e,r=D(t),i=O(r),a=R(t,n),o=L(a),s=p(a),c=`__${r}_self_refresh`;return[`${c}() {`,` local _self _bin _sig`," _self=${BASH_SOURCE[0]:-}",` [[ -n "$_self" && -f "$_self" ]] || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qF "# politty-completion-version:" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# program: ${t}" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# shell: bash" || return 1`,` _bin="\${${i}:-$(type -P ${t} 2>/dev/null)}"`,` [[ -n "$_bin" ]] || return 1`,` _sig=${f(`$_bin`,{shell:`posix`})} || return 1`,` [[ "$_sig" != "${o}" || "$_bin" != ${s} ]] || return 1`,` "$_bin" __refresh-completion bash "$_self" --static 2>/dev/null || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-sig: $_sig" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-path: $_bin" || return 1`,` source "$_self" 2>/dev/null || return 1`,` return 0`,`}`,`if ${c}; then`,` unset -f ${c}`,` return 0 2>/dev/null || true`,`else`,` unset -f ${c}`,`fi`,``]}function ze(e){let{programName:t,binPath:n}=e,r=D(t),i=O(r),a=`_${t}`,o=R(t,n),s=L(o),c=p(o),l=`__${r}_self_refresh`;return[`${l}() {`,` emulate -L zsh`,` setopt local_options no_aliases`,` local _self _bin _sig`,' _self="${(%):-%x}"',` [[ -n "$_self" && -f "$_self" ]] || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qF "# politty-completion-version:" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# program: ${t}" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# shell: zsh" || return 1`,` _bin="\${${i}:-$(whence -p ${t} 2>/dev/null)}"`,` [[ -n "$_bin" ]] || return 1`,` _sig=${f(`$_bin`,{shell:`posix`})} || return 1`,` [[ "$_sig" != "${s}" || "$_bin" != ${c} ]] || return 1`,` "$_bin" __refresh-completion zsh "$_self" --static 2>/dev/null || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-sig: $_sig" || return 1`,` head -n 8 "$_self" 2>/dev/null | grep -qxF "# politty-bin-path: $_bin" || return 1`,` source "$_self" 2>/dev/null || return 1`,` ${a} "$@"`,` return 0`,`}`,`if ${l} "$@"; then`,` unfunction ${l} 2>/dev/null`,` return 0 2>/dev/null || true`,`else`,` unfunction ${l} 2>/dev/null`,`fi`,``]}function Be(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\$/g,`\\$`).replace(/`/g,"\\`")}function Ve(e){let t=``,n=new TextEncoder().encode(e);for(let e of n)t+=e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122?String.fromCharCode(e):`_${e.toString(16).toUpperCase().padStart(2,`0`)}`;return t}function He(e,t,n,r){if(!e)return[];switch(e.type){case`expand`:{if(!r)throw Error(`bashValueLines: expand variant requires a location`);let e=k(n,r.funcSuffix,r.fieldName),i=[`local _enc_key='' _enc_v`];r.resolvedDeps.forEach((e,t)=>{let r=D(e.name),a=e.isGlobal?`_global_arg_values_${r}`:`_arg_values_${r}`;i.push(`_enc_v="\${${a}:-}"`),i.push(t===0?`_enc_key="$(__${n}_enc "$_enc_v")"`:`_enc_key+="_$(__${n}_enc "$_enc_v")"`)});let a=t?'"${_inline_prefix}${_c}"':`"$_c"`,o=r.isGlobal?`\${_global_used_field_keys_${D(r.fieldName)}:-}`:`\${_used_field_keys_${D(r.fieldName)}:-}`,s=r.isArrayOption?[` if [[ -n "$_ck" && " ${o} " == *" $_ck "* ]]; then continue; fi`]:[];return[`compopt +o default 2>/dev/null`,...i,`local _varname=${e}__\${_enc_key}`,'local _raw="${!_varname:-}"',`if [[ -n "$_raw" ]]; then`,` local -a _vals=()`,` local _line`,` while IFS= read -r _line; do _vals+=("$_line"); done <<< "$_raw"`,` local _c _ck _seen_keys=" " _had_key=0`,' for _c in "${_vals[@]}"; do',` [[ -z "$_c" ]] && continue`,` if [[ "$_c" == *=* ]]; then`,' _ck="${_c%%=*}"',...s,` if [[ "$_cur" != *=* ]]; then`,` [[ "$_seen_keys" == *" $_ck "* ]] && continue`,` _seen_keys+="$_ck "`,' _c="${_ck}="',` _had_key=1`,` elif [[ "$_c" != *=?* ]]; then`,` continue`,` fi`,` fi`,` [[ "$_c" == "$_cur"* ]] && COMPREPLY+=(${a})`,` done`,` if (( _had_key )); then compopt -o nospace 2>/dev/null; fi`,`fi`,'if (( ${#COMPREPLY[@]} == 0 )); then COMPREPLY=( "" ); fi']}case`dynamic`:return[`local _dyn_out`,`_dyn_out=$(__${n}_invoke_complete bash "\${_words[@]}")`,`__${n}_apply_dynamic_output "$_dyn_out"`];case`choices`:{let n=[`local -a _choices=(${e.choices.map(e=>`"${Be(e)}"`).join(` `)})`,`COMPREPLY=()`,'local _c; for _c in "${_choices[@]}"; do [[ "$_c" == "$_cur"* ]] && COMPREPLY+=("${_inline_prefix}${_c}"); done'];return t&&n.push(`compopt -o nospace`),n.push(`compopt +o default 2>/dev/null`),n}case`file`:return e.matcher?.length?Ue(e.matcher.map(e=>`[[ "\${_f##*/}" == ${e} ]]`).join(` || `)):e.extensions?.length?Ue(e.extensions.map(e=>`[[ "$_f" == *".${e}" ]]`).join(` || `)):[`COMPREPLY=($(compgen -P "$_inline_prefix" -f -- "$_cur"))`,`compopt -o filenames`];case`directory`:return[`COMPREPLY=($(compgen -P "$_inline_prefix" -d -- "$_cur"))`,`compopt -o filenames`];case`command`:return[`COMPREPLY=($(compgen -P "$_inline_prefix" -W "$(${e.shellCommand})" -- "$_cur"))`];case`none`:return[`compopt +o default 2>/dev/null`];case`runtime-expand`:return[]}}function B(e){return`unset $(compgen -v ${e} 2>/dev/null) 2>/dev/null`}function Ue(e){return[`local -a _all_entries=($(compgen -f -- "$_cur"))`,'for _f in "${_all_entries[@]}"; do',` if [[ -d "$_f" ]]; then`,' COMPREPLY+=("${_inline_prefix}$_f")',` elif ${e}; then`,' COMPREPLY+=("${_inline_prefix}$_f")',` fi`,`done`,`compopt -o filenames`,`compopt +o default 2>/dev/null`]}function We(e,t,n,r,i){let a=[];for(let o of e){if(!o.takesValue||!o.valueCompletion)continue;let s=He(o.valueCompletion,n,r,{funcSuffix:i,...d(o,e,t)});if(s.length===0)continue;let c=P(o,e);if(c.length!==0){a.push(` ${c.join(`|`)})`);for(let e of s)a.push(` ${e}`);a.push(` return ;;`)}}return a}function V(e,t,n,r=[]){if(e.length===0)return[];let i=[];i.push(` case "$_pos_count" in`);for(let a of e){a.variadic?i.push(` ${a.position}|*)`):i.push(` ${a.position})`);for(let o of He(a.valueCompletion,!1,t,{funcSuffix:n,..._(a,r,e)}))i.push(` ${o}`);i.push(` ;;`)}return i.push(` esac`),i}function Ge(e,t,n,r,i){let a=[`COMPREPLY=($(compgen -W "${e}" -- "$_cur"))`,`compopt +o default 2>/dev/null`];return t.length===0?a:[`local -a _sub_names=(${e})`,`local _sub_name _sub_match=0`,'for _sub_name in "${_sub_names[@]}"; do',` [[ "$_sub_name" == "$_cur"* ]] && _sub_match=1 && break`,`done`,`if (( _sub_match )); then`,...a.map(e=>` ${e}`),`else`,...V(t,n,r,i),`fi`]}function Ke(e,t,n,r){if(!e.some(e=>e.takesValue&&e.valueCompletion))return[];let i=[],a=We(e,t,!1,n,r);a.length>0&&(i.push(` if [[ -z "$_inline_prefix" ]]; then`),i.push(` case "$_prev" in`),i.push(...a),i.push(` esac`),i.push(` fi`));let o=We(e,t,!0,n,r);return o.length>0&&(i.push(` if [[ -n "$_inline_prefix" ]]; then`),i.push(' case "${_inline_prefix%=}" in'),i.push(...o),i.push(` esac`),i.push(` fi`)),i}function qe(e,t){let n=[];for(let r of e){if(r.valueType===`array`){n.push(` _avail+=(--${r.cliName})`);continue}let i=g(r.cliName,r.alias,r.negation,{isGlobal:r.isGlobal===!0,frameOptions:e}),a=`__${t}_not_used ${i.join(` `)}`,o=r.negation?[r.cliName,r.negation]:[r.cliName];for(let e of o)i.includes(`"--${e}"`)&&n.push(` ${a} && _avail+=(--${e})`)}return n.push(` __${t}_not_used "--help" && _avail+=(--help)`),n}function Je(e,t,n){let r=[...n,e.name],i=r.map(D).join(`_`),a=`__${t}_complete_${i}`,o=A(e.subcommands),s=[];for(let e of o)s.push(...Je(e,t,r));s.push(`${a}() {`),s.push(...Ke(e.options,e.positionals,t,i));let c=r.join(`:`);if(s.push(` if [[ -z "$_inline_prefix" ]] && __${t}_opt_takes_value "${c}" "$_prev"; then return; fi`),s.push(` if [[ -n "$_inline_prefix" ]] && __${t}_opt_takes_value "${c}" "\${_inline_prefix%=}"; then return; fi`),e.positionals.length>0?(s.push(` if (( _after_dd )); then`),s.push(...V(e.positionals,t,i,e.options).map(e=>` ${e}`)),s.push(` return`),s.push(` fi`)):s.push(` if (( _after_dd )); then return; fi`),s.push(` if [[ "$_cur" == -* ]]; then`),s.push(` local -a _avail=()`),s.push(...qe(e.options,t)),s.push(' COMPREPLY=($(compgen -W "${_avail[*]}" -- "$_cur"))'),s.push(` compopt +o default 2>/dev/null`),s.push(` return`),s.push(` fi`),o.length>0){let n=j(e.subcommands).map(e=>e.name).join(` `);s.push(...Ge(n,e.positionals,t,i,e.options).map(e=>` ${e}`))}else e.positionals.length>0&&s.push(...V(e.positionals,t,i,e.options));return s.push(`}`),s.push(``),s}function Ye(e,t){let{programName:n}=t,r=I(e,n,t.globalArgsSchema),i=D(n),a=t.staticWorker?`${i}_${D(t.staticWorker.functionSuffix)}`:i,o=t.staticWorker!==void 0,s=r.command,c=A(s.subcommands),u=je(s),d=Ne(s,u,r.globalOptions),f=[];f.push(...z({programName:n,shell:`bash`,binPath:t.binPath,programVersion:t.programVersion})),f.push(`# politty-completion-mode: ${o?`worker`:`static`}`),o&&f.push(`# politty-completion-worker: true`),f.push(`# Generated by politty`),f.push(``),o||f.push(...Re({programName:n,binPath:t.binPath}));let p=u.length>0,h=u.filter(e=>e.isArrayOption),g=h.length>0;p&&(f.push(`__${a}_enc() {`),f.push(` local LC_ALL=C`),f.push(` local _s=$1 _r='' _c _i`),f.push(" for (( _i=0; _i<${#_s}; _i++ )); do"),f.push(" _c=${_s:_i:1}"),f.push(` case "$_c" in`),f.push(` [a-zA-Z0-9]) _r+="$_c" ;;`),f.push(` *) printf -v _r '%s_%02X' "$_r" "'$_c" ;;`),f.push(` esac`),f.push(` done`),f.push(` printf '%s' "$_r"`),f.push(`}`),f.push(``));for(let e of u){let t=k(a,e.funcSuffix,e.fieldName);for(let n of e.vc.table){let e=n.key.map(Ve).join(`_`),r=n.candidates.map(e=>e.value).join(`
2
2
  `);f.push(`${t}__${e}=${l(r)}`)}f.push(``)}F(s)&&(f.push(...ge(a,n)),f.push(``),f.push(`__${a}_apply_dynamic_output() {`),f.push(` local _raw="$1"`),f.push(` COMPREPLY=()`),f.push(` local _directive=0`),f.push(` local -a _lines=()`),f.push(` local _line`),f.push(` while IFS= read -r _line; do _lines+=("$_line"); done <<< "$_raw"`),f.push(" local _last=$((${#_lines[@]} - 1))"),f.push(' if (( _last >= 0 )) && [[ "${_lines[$_last]}" =~ ^:[0-9]+$ ]]; then'),f.push(' _directive="${_lines[$_last]#:}"'),f.push(` unset '_lines[_last]'`),f.push(` fi`),f.push(' for _line in "${_lines[@]}"; do'),f.push(` [[ -z "$_line" ]] && continue`),f.push(` COMPREPLY+=("$_line")`),f.push(` done`),f.push(' local _ip="${_inline_prefix:-}"'),f.push(` if (( _directive & ${m.DirectoryCompletion} )); then`),f.push(` compopt +o default 2>/dev/null`),f.push(` compopt -o filenames 2>/dev/null`),f.push(` local _d`),f.push(' while IFS= read -r _d; do COMPREPLY+=("${_ip}${_d}"); done < <(compgen -d -- "$_cur")'),f.push(' if (( ${#COMPREPLY[@]} == 0 )); then COMPREPLY=( "" ); fi'),f.push(` elif (( _directive & ${m.FileCompletion} )); then`),f.push(' if (( ${#COMPREPLY[@]} > 0 )) || [[ -n "$_ip" ]]; then'),f.push(` compopt -o filenames 2>/dev/null`),f.push(` local _f`),f.push(' while IFS= read -r _f; do COMPREPLY+=("${_ip}${_f}"); done < <(compgen -f -- "$_cur")'),f.push(` else`),f.push(` compopt -o default 2>/dev/null`),f.push(` fi`),f.push(` else`),f.push(` if (( _directive & ${m.NoFileCompletion} )); then`),f.push(` compopt +o default 2>/dev/null`),f.push(' if (( ${#COMPREPLY[@]} == 0 )); then COMPREPLY=( "" ); fi'),f.push(` fi`),f.push(` fi`),f.push(` if (( _directive & ${m.NoSpace} )); then`),f.push(` compopt -o nospace 2>/dev/null`),f.push(` fi`),f.push(`}`),f.push(``)),f.push(`__${a}_not_used() {`),f.push(' for _u in "${_used_opts[@]}"; do'),f.push(` for _chk in "$@"; do`),f.push(` [[ "$_u" == "$_chk" ]] && return 1`),f.push(` done`),f.push(` done`),f.push(` return 0`),f.push(`}`),f.push(``),f.push(`__${a}_opt_takes_value() {`),f.push(` case "$1:$2" in`),f.push(...we(s,``)),f.push(` esac`),f.push(` return 1`),f.push(`}`),f.push(``),p&&(f.push(`__${a}_track_opt() {`),f.push(` case "$1:$2" in`),f.push(...Oe(d,`bash`)),f.push(` esac`),f.push(`}`),f.push(``),f.push(`__${a}_track_pos() {`),f.push(` case "$1:$2" in`),f.push(...ke(d,`bash`)),f.push(` esac`),f.push(`}`),f.push(``)),g&&(f.push(`__${a}_track_array_expand() {`),f.push(` case "$1:$2" in`),f.push(...Ae(h,`bash`)),f.push(` esac`),f.push(`}`),f.push(``));let _=N(s);_.length>0&&(f.push(`__${a}_is_subcmd() {`),f.push(` case "$1:$2" in`),f.push(...Te(_)),f.push(` esac`),f.push(` return 1`),f.push(`}`),f.push(``));for(let e of c)f.push(...Je(e,a,[]));if(f.push(`__${a}_complete_root() {`),f.push(...Ke(s.options,s.positionals,a,`root`)),f.push(` if [[ -z "$_inline_prefix" ]] && __${a}_opt_takes_value "" "$_prev"; then return; fi`),f.push(` if [[ -n "$_inline_prefix" ]] && __${a}_opt_takes_value "" "\${_inline_prefix%=}"; then return; fi`),s.positionals.length>0?(f.push(` if (( _after_dd )); then`),f.push(...V(s.positionals,a,`root`,s.options).map(e=>` ${e}`)),f.push(` return`),f.push(` fi`)):f.push(` if (( _after_dd )); then return; fi`),f.push(` if [[ "$_cur" == -* ]]; then`),f.push(` local -a _avail=()`),f.push(...qe(s.options,a)),f.push(' COMPREPLY=($(compgen -W "${_avail[*]}" -- "$_cur"))'),f.push(` compopt +o default 2>/dev/null`),c.length>0){f.push(` else`);let e=j(s.subcommands).map(e=>e.name).join(` `);f.push(...Ge(e,s.positionals,a,`root`,s.options).map(e=>` ${e}`))}else s.positionals.length>0&&(f.push(` else`),f.push(...V(s.positionals,a,`root`,s.options).map(e=>` ${e}`)));f.push(` fi`),f.push(`}`),f.push(``);let v=Ee(_,a).join(`
3
3
  `);f.push(`_${a}_completions() {`),f.push(` COMPREPLY=()`),f.push(``),f.push(` # Rejoin words split by '=' in COMP_WORDBREAKS`),f.push(` local -a _words=()`),f.push(` local _i=1`),f.push(` while (( _i <= COMP_CWORD )); do`),f.push(' if [[ "${COMP_WORDS[_i]}" == "=" && ${#_words[@]} -gt 0 ]]; then'),f.push(' _words[${#_words[@]}-1]+="=${COMP_WORDS[_i+1]:-}"'),f.push(` (( _i += 2 ))`),f.push(` else`),f.push(' _words+=("${COMP_WORDS[_i]}")'),f.push(` (( _i++ ))`),f.push(` fi`),f.push(` done`),f.push(``),f.push(` local _cur=""`),f.push(' (( ${#_words[@]} > 0 )) && _cur="${_words[${#_words[@]}-1]}"'),f.push(` local _inline_prefix=""`),f.push(``),f.push(` local _prev=""`),f.push(' (( ${#_words[@]} > 1 )) && _prev="${_words[${#_words[@]}-2]}"'),f.push(``),f.push(` local _subcmd="" _after_dd=0 _pos_count=0 _skip_next=0`),f.push(` local -a _used_opts=()`),p&&(f.push(` ${B(`_arg_values_`)}`),f.push(` ${B(`_global_arg_values_`)}`)),g&&(f.push(` ${B(`_used_field_keys_`)}`),f.push(` ${B(`_global_used_field_keys_`)}`),f.push(` ${B(`_global_arr_seen_`)}`)),f.push(``),f.push(` local _j=0`),f.push(" while (( _j < ${#_words[@]} - 1 )); do"),f.push(' local _w="${_words[_j]}"'),f.push(` if (( _skip_next )); then _skip_next=0; (( _j++ )); continue; fi`),f.push(` if [[ "$_w" == "--" ]]; then _after_dd=1; (( _j++ )); continue; fi`);let y=p?`__${a}_track_pos "$_subcmd" "$_pos_count" "$_w"; `:``;f.push(` if (( _after_dd )); then ${y}(( _pos_count++ )); (( _j++ )); continue; fi`),f.push(` if [[ "$_w" == -*=* ]]; then`),f.push(' _used_opts+=("${_w%%=*}")'),p&&(f.push(` __${a}_track_opt "$_subcmd" "\${_w%%=*}" "\${_w#*=}"`),g&&f.push(` __${a}_track_array_expand "$_subcmd" "\${_w%%=*}" "\${_w#*=}"`)),f.push(` (( _j++ )); continue`),f.push(` fi`),f.push(` if [[ "$_w" == -* ]]; then`),f.push(` _used_opts+=("$_w")`),f.push(` if __${a}_opt_takes_value "$_subcmd" "$_w"; then`),f.push(' local _next="${_words[_j+1]:-}"'),f.push(` if [[ -n "$_next" && "$_next" != -* ]]; then _skip_next=1; fi`),p&&(f.push(` if (( _skip_next )); then`),f.push(` __${a}_track_opt "$_subcmd" "$_w" "$_next"`),g&&(f.push(" if (( _j + 2 < ${#_words[@]} )); then"),f.push(` __${a}_track_array_expand "$_subcmd" "$_w" "$_next"`),f.push(` fi`)),f.push(` fi`)),f.push(` fi`),f.push(` (( _j++ )); continue`),f.push(` fi`);let ee=g?`; ${B(`_arg_values_`)}; ${B(`_used_field_keys_`)}; ${B(`_global_arr_seen_`)}`:p?`; ${B(`_arg_values_`)}`:``,b=p?`__${a}_track_pos "$_subcmd" "$_pos_count" "$_w"; `:``;return _.length>0?f.push(` if __${a}_is_subcmd "$_subcmd" "$_w"; then _subcmd="\${_subcmd:+\${_subcmd}:}$_w"; _used_opts=(); _pos_count=0${ee}; else ${b}(( _pos_count++ )); fi`):(p&&f.push(` __${a}_track_pos "$_subcmd" "$_pos_count" "$_w"`),f.push(` (( _pos_count++ ))`)),f.push(` (( _j++ ))`),f.push(` done`),f.push(``),f.push(` if (( ! _after_dd )) && [[ "$_cur" == -*=* ]]; then`),f.push(' _inline_prefix="${_cur%%=*}="'),f.push(' _cur="${_cur#*=}"'),f.push(` fi`),f.push(``),f.push(` case "$_subcmd" in`),f.push(v),f.push(` *) __${a}_complete_root ;;`),f.push(` esac`),f.push(`}`),f.push(``),o||f.push(`complete -o default -F _${a}_completions ${n}`),f.push(``),{script:f.join(`
4
4
  `),shell:`bash`,installInstructions:`# To enable auto-refreshing bash completions, add this to your ~/.bashrc:
@@ -0,0 +1 @@
1
+ import"./with-completion-command-DM6F5LyO.js";import"./dynamic-D7QInkeD.js";import{c as e,n as t,r as n,t as r}from"./completion-BqYtsuso.js";export{r as createCompletionCommand,t as createCompletionWorkerPathCommand,n as createRefreshCompletionCommand,e as generateBundledCompletionWorker};
@@ -1,5 +1,5 @@
1
- import { C as Command, Z as ResolvedFieldMeta, _ as DynamicCompletionResult, b as ArgsSchema, d as ExpandCompletion, g as DynamicCompletionResolver, h as DynamicCompletionContext, m as DynamicCompletionCandidate, p as CompletionDirectiveMask, v as AnyCommand } from "./arg-registry-BzQ-y-e0.js";
2
- import { _ as CompletionResult, a as bundledWorkerShellExtension, b as InferInternalArgs, c as validateBundledWorkerFile, d as CompletablePositional, f as CompletableSubcommand, g as CompletionOptions, h as CompletionMode, i as GenerateBundledCompletionWorkerResult, l as BundledWorkerOptions, m as CompletionGenerator, n as withCompletionCommand, o as defaultBundledWorkerOutputPath, p as CompletionData, r as GenerateBundledCompletionWorkerOptions, s as generateBundledCompletionWorker, t as WithCompletionOptions, u as CompletableOption, v as ShellType, x as InternalArgsSchema, y as ValueCompletion } from "./with-completion-command-CmVdHFHX.js";
1
+ import { C as Command, Z as ResolvedFieldMeta, _ as DynamicCompletionResult, b as ArgsSchema, d as ExpandCompletion, g as DynamicCompletionResolver, h as DynamicCompletionContext, m as DynamicCompletionCandidate, p as CompletionDirectiveMask, v as AnyCommand } from "./arg-registry-C-fvuAAg.js";
2
+ import { _ as CompletionResult, a as bundledWorkerShellExtension, b as InferInternalArgs, c as validateBundledWorkerFile, d as CompletablePositional, f as CompletableSubcommand, g as CompletionOptions, h as CompletionMode, i as GenerateBundledCompletionWorkerResult, l as BundledWorkerOptions, m as CompletionGenerator, n as withCompletionCommand, o as defaultBundledWorkerOutputPath, p as CompletionData, r as GenerateBundledCompletionWorkerOptions, s as generateBundledCompletionWorker, t as WithCompletionOptions, u as CompletableOption, v as ShellType, x as InternalArgsSchema, y as ValueCompletion } from "./with-completion-command-DMPw58_x.js";
3
3
  //#region ../core/src/completion/schemas.d.ts
4
4
  /**
5
5
  * Schema for the completion command arguments
@@ -1 +1 @@
1
- import"./register-C1WbbeYH.js";import{s as e,t}from"./with-completion-command-DDohm8U6.js";import{a as n,i as r,n as i,o as a,r as o,s,t as c}from"./dynamic-CrnlveHj.js";import{a as l,c as u,d,i as f,l as p,n as m,o as h,r as g,s as _,t as v,u as y}from"./completion-D8DMrPqg.js";export{r as CompletionDirective,h as bundledWorkerShellExtension,v as createCompletionCommand,m as createCompletionWorkerPathCommand,c as createDynamicCompleteCommand,g as createRefreshCompletionCommand,_ as defaultBundledWorkerOutputPath,e as detectShell,y as extractCompletionData,d as extractPositionals,o as formatForShell,u as generateBundledCompletionWorker,n as generateCandidates,f as generateCompletion,l as getSupportedShells,i as hasCompleteCommand,a as parseCompletionContext,s as resolveValueCompletion,p as validateBundledWorkerFile,t as withCompletionCommand};
1
+ import"./register-C1WbbeYH.js";import{s as e,t}from"./with-completion-command-DM6F5LyO.js";import{a as n,i as r,n as i,o as a,r as o,s,t as c}from"./dynamic-D7QInkeD.js";import{a as l,c as u,d,i as f,l as p,n as m,o as h,r as g,s as _,t as v,u as y}from"./completion-BqYtsuso.js";export{r as CompletionDirective,h as bundledWorkerShellExtension,v as createCompletionCommand,m as createCompletionWorkerPathCommand,c as createDynamicCompleteCommand,g as createRefreshCompletionCommand,_ as defaultBundledWorkerOutputPath,e as detectShell,y as extractCompletionData,d as extractPositionals,o as formatForShell,u as generateBundledCompletionWorker,n as generateCandidates,f as generateCompletion,l as getSupportedShells,i as hasCompleteCommand,a as parseCompletionContext,s as resolveValueCompletion,p as validateBundledWorkerFile,t as withCompletionCommand};
package/dist/docs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { T as Example, W as SubCommandValue, X as ExtractedFields, Z as ResolvedFieldMeta, b as ArgsSchema, nt as SchemaLike, v as AnyCommand } from "./arg-registry-BzQ-y-e0.js";
1
+ import { T as Example, W as SubCommandValue, X as ExtractedFields, Z as ResolvedFieldMeta, b as ArgsSchema, nt as SchemaLike, v as AnyCommand } from "./arg-registry-C-fvuAAg.js";
2
2
  import * as fs from "node:fs";
3
3
  //#region ../core/src/executor/subcommand-router.d.ts
4
4
  /**
package/dist/docs.js CHANGED
@@ -18,7 +18,7 @@ import{a as e}from"./field-meta-COGya7xp.js";import"./register-C1WbbeYH.js";impo
18
18
  `}}const ve={command:e=>W(e),tableStyle:W({optionStyle:`table`}),listStyle:W({optionStyle:`list`})};function ye(e,t){let n=o.resolve(t);if(!a.existsSync(n))return{match:!1,fileExists:!1};let r=a.readFileSync(n,`utf-8`);return e===r?{match:!0,fileExists:!0}:{match:!1,diff:G(r,e),fileExists:!0}}function G(e,t){let n=e.split(`
19
19
  `),r=t.split(`
20
20
  `),i=[];i.push(`--- existing`),i.push(`+++ generated`),i.push(``);let a=Math.max(n.length,r.length),o=!1,s=0,c=[],l=()=>{c.length>0&&(i.push(`@@ -${s+1},${c.length} @@`),i.push(...c),c.length=0),o=!1};for(let e=0;e<a;e++){let t=n[e],i=r[e];if(t===i){if(o){c.push(` ${t??``}`);let e=c.findIndex((e,t)=>(e.startsWith(`-`)||e.startsWith(`+`))&&c.slice(t+1).every(e=>e.startsWith(` `)));e!==-1&&c.length-e>3&&l()}}else{if(!o){o=!0,s=e;let t=Math.max(0,e-3);for(let r=t;r<e;r++)c.push(` ${n[r]??``}`)}t!==void 0&&(i===void 0||t!==i)&&c.push(`-${t}`),i!==void 0&&(t===void 0||t!==i)&&c.push(`+${i}`)}}return l(),i.join(`
21
- `)}function K(e,t){let n=o.resolve(e),r=o.dirname(n);a.existsSync(r)||a.mkdirSync(r,{recursive:!0}),a.writeFileSync(n,t,`utf-8`)}function be(e){let t=o.resolve(e);return a.existsSync(t)?a.readFileSync(t,`utf-8`):null}function xe(e,t=a){let n=o.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Se(e,n,r=[]){let a=t(e),o=a?.fields.filter(e=>e.positional)??[],s=a?.fields.filter(e=>!e.positional)??[],c=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await i(n),a=[...r,t];c.push({name:t,description:e.description,aliases:e.aliases,fullPath:a})}return{name:e.name??``,description:e.description,aliases:e.aliases,fullCommandPath:r.length>0?`${n} ${r.join(` `)}`:n,commandPath:r.join(` `),depth:r.length+1,positionalArgs:o,options:s,subCommands:c,extracted:a,command:e,notes:e.notes,examples:e.examples}}async function Ce(e,t){let n=t??e.name??`command`,r=new Map;async function a(e,t){let o=await Se(e,n,t),s=t.join(` `);if(r.set(s,o),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await a(await i(r),[...t,n])}return await a(e,[]),r}async function we(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Te(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Te(e,t,n){let i=Ee(e.cmd),a=[...n,...i],o=r({passthrough:!1});o.start();let s=!0;try{let{runCommand:e}=await import(`./runner-DFyBvEfq.js`),n=await e(t,a);s=n.success,!n.success&&n.error&&console.error(n.error.message)}catch(e){s=!1,console.error(e instanceof Error?e.message:String(e))}finally{o.stop()}let c=o.getLogs(),l=c.entries.filter(e=>e.stream===`stdout`).map(e=>e.message).join(`
21
+ `)}function K(e,t){let n=o.resolve(e),r=o.dirname(n);a.existsSync(r)||a.mkdirSync(r,{recursive:!0}),a.writeFileSync(n,t,`utf-8`)}function be(e){let t=o.resolve(e);return a.existsSync(t)?a.readFileSync(t,`utf-8`):null}function xe(e,t=a){let n=o.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Se(e,n,r=[]){let a=t(e),o=a?.fields.filter(e=>e.positional)??[],s=a?.fields.filter(e=>!e.positional)??[],c=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await i(n),a=[...r,t];c.push({name:t,description:e.description,aliases:e.aliases,fullPath:a})}return{name:e.name??``,description:e.description,aliases:e.aliases,fullCommandPath:r.length>0?`${n} ${r.join(` `)}`:n,commandPath:r.join(` `),depth:r.length+1,positionalArgs:o,options:s,subCommands:c,extracted:a,command:e,notes:e.notes,examples:e.examples}}async function Ce(e,t){let n=t??e.name??`command`,r=new Map;async function a(e,t){let o=await Se(e,n,t),s=t.join(` `);if(r.set(s,o),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await a(await i(r),[...t,n])}return await a(e,[]),r}async function we(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Te(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Te(e,t,n){let i=Ee(e.cmd),a=[...n,...i],o=r({passthrough:!1});o.start();let s=!0;try{let{runCommand:e}=await import(`./runner-CPganzL6.js`),n=await e(t,a);s=n.success,!n.success&&n.error&&console.error(n.error.message)}catch(e){s=!1,console.error(e instanceof Error?e.message:String(e))}finally{o.stop()}let c=o.getLogs(),l=c.entries.filter(e=>e.stream===`stdout`).map(e=>e.message).join(`
22
22
  `),u=c.entries.filter(e=>e.stream===`stderr`).map(e=>e.message).join(`
23
23
  `);return{cmd:e.cmd,desc:e.desc,expectedOutput:e.output,stdout:l,stderr:u,success:s}}function Ee(e){let t=[],n=``,r=!1,i=``;for(let a=0;a<e.length;a++){let o=e[a];(o===`"`||o===`'`)&&!r?(r=!0,i=o):o===i&&r?(r=!1,i=``):o===` `&&!r?n&&=(t.push(n),``):n+=o}return n&&t.push(n),t}function De(t){let n=e();return Object.entries(t).map(([e,t])=>n.resolveFieldMeta(e,t))}function Oe(e,t){let n=De(e).filter(e=>!e.positional);return n.length===0?``:C(p(n),t?.columns)}function ke(e){return e.replace(/\|/g,`\\|`).replace(/\n/g,` `)}function Ae(e){return e.replace(/\s+/g,`-`).toLowerCase()}function je(e){return e.subCommands.length===0}function Me(e,t){return e===t?!0:t===``?e!==``:e.startsWith(t+` `)}function Ne(e,t,n){let r=[];for(let i of e){let e=t.get(i);if(e){if(je(e))r.push(i);else for(let[e,a]of t)(i===``?e.length>0:e.startsWith(i+` `)||e===i)&&(je(a)||!n)&&r.push(e)}}return r}function Pe(e,t,n,r){let i=`#`.repeat(n),a=[];a.push(`${i} [${e.title}](${e.docPath})`),a.push(``),a.push(e.description),a.push(``);let o=e.noExpand?e.commands:Ne(e.commands,t,r),s=o,c=new Set;if(e.allowedCommands){let t=new Set(e.allowedCommands);s=o.filter(e=>t.has(e));for(let n of e.commands)t.has(n)&&!s.some(e=>Me(e,n))&&(s.push(n),c.add(n))}a.push(`| Command | Description |`),a.push(`|---------|-------------|`);for(let n of s){let i=t.get(n);if(!i||!e.noExpand&&r&&!c.has(n)&&!je(i))continue;let o=n||i.name,s=Ae(o),l=ke(i.description??``);a.push(`| [${o}](${e.docPath}#${s}) | ${l} |`)}return a.join(`
24
24
  `)}async function Fe(e,t,n){let r=n?.headingLevel??3,i=n?.leafOnly??!0,a=await Ce(e),o=[];for(let e of t){let t=Pe(e,a,r,i);o.push(t)}return o.join(`
@@ -1,4 +1,4 @@
1
- import{r as e,t}from"./field-meta-COGya7xp.js";import{t as n}from"./schema-extractor-DU0Vuhbd.js";import{n as r}from"./command-Mbdt0bmN.js";import{c as i,i as a}from"./subcommand-router-D8GTMXYL.js";import{t as o}from"./schema-BiUP_KyV.js";import{execSync as s}from"node:child_process";function c(e,t,n){return{fieldName:e.name,isArrayOption:e.valueType===`array`,isGlobal:e.isGlobal===!0,resolvedDeps:u(e.valueCompletion,e.isGlobal===!0,t,n)}}function l(e,t,n){return{fieldName:e.name,isArrayOption:!1,isGlobal:!1,resolvedDeps:u(e.valueCompletion,!1,t,n)}}function u(e,t,n,r=[]){if(e?.type!==`expand`)return[];let i=new Set,a=new Set;for(let e of n)e.isGlobal===!0?i.add(e.name):a.add(e.name);for(let e of r)a.add(e.name);return e.dependsOn.map(e=>({name:e,isGlobal:t||i.has(e)&&!a.has(e)}))}function d(e){let t=`$'`;for(let n of e){let e=n.codePointAt(0);t+=n===`\\`?`\\\\`:n===`'`?`\\'`:n===`
1
+ import{r as e,t}from"./field-meta-COGya7xp.js";import{t as n}from"./schema-extractor-DU0Vuhbd.js";import{n as r}from"./command-tLHaJHe6.js";import{c as i,i as a}from"./subcommand-router-D8GTMXYL.js";import{t as o}from"./schema-BiUP_KyV.js";import{execSync as s}from"node:child_process";function c(e,t,n){return{fieldName:e.name,isArrayOption:e.valueType===`array`,isGlobal:e.isGlobal===!0,resolvedDeps:u(e.valueCompletion,e.isGlobal===!0,t,n)}}function l(e,t,n){return{fieldName:e.name,isArrayOption:!1,isGlobal:!1,resolvedDeps:u(e.valueCompletion,!1,t,n)}}function u(e,t,n,r=[]){if(e?.type!==`expand`)return[];let i=new Set,a=new Set;for(let e of n)e.isGlobal===!0?i.add(e.name):a.add(e.name);for(let e of r)a.add(e.name);return e.dependsOn.map(e=>({name:e,isGlobal:t||i.has(e)&&!a.has(e)}))}function d(e){let t=`$'`;for(let n of e){let e=n.codePointAt(0);t+=n===`\\`?`\\\\`:n===`'`?`\\'`:n===`
2
2
  `?`\\n`:n===`\r`?`\\r`:n===` `?`\\t`:e<32||e===127?`\\x${e.toString(16).padStart(2,`0`)}`:n}return t+=`'`,t}function f(e){return`'${e.replace(/'/g,`'\\''`)}'`}function p(e,t){let n=t.withSize?`%Y:%s`:`%Y`,r=t.withSize?`%m:%z`:`%m`,i=`stat -L -c '${n}' "${e}" 2>/dev/null`,a=`stat -L -f '${r}' "${e}" 2>/dev/null`;return t.shell===`fish`?`(${i}; or ${a})`:`$(${i} || ${a})`}function m(e){return e.length===1?`-${e}`:`--${e}`}function h(t,n){g(t,m(n)),n.length===1?g(t,`--${n}`):n.includes(`-`)&&g(t,`--${e(n)}`)}function g(e,t){e.includes(t)||e.push(t)}function _(t,n){let r=[`--${t}`];t.length===1&&r.push(`-${t}`),t.includes(`-`)&&r.push(`--${e(t)}`);for(let e of n??[])h(r,e);return r}function v(e){let t=new Set;for(let n of e)if(n.isGlobal===!0){n.cliName.length===1&&t.add(`-${n.cliName}`);for(let e of n.alias??[])e.length===1&&t.add(`-${e}`)}return t}function y(t,n,r,i){let a=new Set(_(t,n));if(r&&(a.add(`--${r}`),r.includes(`-`)&&a.add(`--${e(r)}`)),i?.frameOptions){if(i.isGlobal===!0){for(let e of i.frameOptions)if(e.isGlobal!==!0)for(let t of b(e.cliName,e.alias))a.delete(t)}else{let e=v(i.frameOptions);if(e.size>0){let t=new Set((n??[]).filter(e=>e.length===1).map(e=>`-${e}`));for(let n of e)t.has(n)||a.delete(n)}}}return[...a].map(e=>`"${e}"`)}function b(t,n){let r=[`--${t}`];t.includes(`-`)&&r.push(`--${e(t)}`);for(let e of n??[])h(r,e);return r}function x(e){let t=e.completion;if(t?.custom){let n=t.custom,r=[];if(n.expand&&r.push(`expand`),n.resolve&&r.push(`resolve`),n.choices&&n.choices.length>0&&r.push(`choices`),n.shellCommand&&r.push(`shellCommand`),r.length>1)throw Error(`Field "${e.name??`<unknown>`}": completion.custom may only specify one of choices, shellCommand, resolve, expand (got ${r.join(`, `)}).`);if(n.expand)return{type:`pending-expand`,spec:n.expand};if(n.resolve)return{type:`dynamic`,resolve:n.resolve};if(n.choices&&n.choices.length>0)return{type:`choices`,choices:n.choices};if(n.shellCommand)return{type:`command`,shellCommand:n.shellCommand}}if(t?.type){if(t.type===`file`)return t.matcher?{type:`file`,matcher:t.matcher}:t.extensions?{type:`file`,extensions:t.extensions}:{type:`file`};if(t.type===`directory`)return{type:`directory`};if(t.type===`none`)return{type:`none`}}if(e.enumValues&&e.enumValues.length>0)return{type:`choices`,choices:e.enumValues}}function S(e){if(e)return e.type===`pending-expand`?{type:`runtime-expand`,dependsOn:e.spec.dependsOn,enumerate:e.spec.enumerate}:e}function C(e){return e.args?w(e.args):[]}function w(e){return n(e).fields.filter(e=>!e.positional).map(e=>{let n=t(e);return{name:e.name,cliName:e.cliName,alias:n.length>0?n:void 0,negation:e.negationDisplay,negationDescription:e.negationDescription,description:e.description,takesValue:e.type!==`boolean`,valueType:e.type,required:e.required,defaultNegationAccepted:e.type===`boolean`&&e.negation===!0,valueCompletion:S(x(e))}})}function T(e){return new Set(_(e.cliName,e.alias))}function E(e,t){let n=T(t);for(let t of e)for(let e of T(t))if(n.has(e))return t}function ee(e,t,n){let r=new Set;if(t.length===0)return r;let i=new Set,a=(e,t)=>{R(n,e,t,i),r.add(e.name)},o=0;for(;o<e.length;){let i=e[o];if(i===`--`||!i.startsWith(`-`))break;if(!i.startsWith(`--`)&&i.length>2){let e=i.indexOf(`=`);if((e>=0?i.slice(1,e):i.slice(1)).length>1)break}let s=M(i),c=V(t,s);if(!c){if(I(t,s)){o++;continue}break}if(c.takesValue){if(N(i)){let e=i.indexOf(`=`);a(c,i.slice(e+1)),o++}else if(o+1<e.length){let t=e[o+1];if(t.startsWith(`-`)){o++;continue}a(c,t),o+=2}else break}else n[c.name]=!z(c,s),r.add(c.name),o++}return r}function D(e,t){return t.valueType===`array`?Array.isArray(e)?e:[e]:Array.isArray(e)?e.at(-1):e}function O(e,t){return t.length===0?e:[...e,...t]}function k(e,t){let n=t.length-1;if(!(n<0))return e>n?n:e}function A(e){return e.args?n(e.args).fields.filter(e=>e.positional).map((e,t)=>({name:e.name,cliName:e.cliName,position:t,description:e.description,required:e.required,variadic:e.type===`array`,valueCompletion:S(x(e))})):[]}function te(e){if(!e.subCommands)return[];let t=[];for(let[n,r]of Object.entries(e.subCommands)){if(n.startsWith(`__`))continue;t.push(n);let e=i(r);e?.aliases&&t.push(...e.aliases)}return t}function ne(e,t){if(!e.subCommands)return null;let n=Object.hasOwn(e.subCommands,t)?e.subCommands[t]:void 0;if(n)return i(n);let r=a(e,t);return r?i(e.subCommands[r]):null}function j(e){return e.startsWith(`-`)}function M(e){if(e.startsWith(`--`)){let t=e.slice(2),n=t.indexOf(`=`);return{name:n>=0?t.slice(0,n):t,isLong:!0}}return e.startsWith(`-`)?{name:e.slice(1,2),isLong:!1}:{name:e,isLong:!0}}function N(e){return e.includes(`=`)}function P(t,n,r){if(!r||t.valueType!==`boolean`)return!1;let i=[t.cliName,...t.alias??[]];for(let t of i){let r=`no-${t}`;if(n===r||n===e(r))return!0}return!1}function F(e,t,n){return e.defaultNegationAccepted===!0&&P(e,t,n)}function I(e,t){return e.some(e=>e.defaultNegationAccepted!==!0&&P(e,t.name,t.isLong))}function L(t,n){return t!==void 0&&t.includes(`-`)&&e(t)===n}function R(e,t,n,r){if(t.valueType!==`array`){e[t.name]=n;return}if(r.has(t.name)){let r=e[t.name];e[t.name]=Array.isArray(r)?[...r,n]:[n]}else e[t.name]=[n],r.add(t.name)}function z(e,t){return t.isLong?e.negation!==void 0&&(e.negation===t.name||L(e.negation,t.name))?!0:F(e,t.name,t.isLong):!1}function B(e,t,n){if(e.cliName===t&&(n||e.cliName.length===1))return!0;if(e.alias){for(let r of e.alias)if(r===t&&(n||r.length===1))return!0}return n&&e.negation===t?!0:!n||t.length<=1?!1:L(e.cliName,t)||e.alias?.some(e=>L(e,t))?!0:L(e.negation,t)}function V(e,t){if(!t.isLong){let n=e.find(e=>e.isGlobal!==!0&&e.alias?.includes(t.name)===!0);if(n)return n;let r=e.find(e=>e.isGlobal===!0&&B(e,t.name,t.isLong));if(r)return r}return e.find(e=>B(e,t.name,t.isLong))||e.find(e=>F(e,t.name,t.isLong))}function H(e,t,n){let r=t,i=[],a=n?w(n).map(e=>({...e,isGlobal:!0})):[],o=new Set,s=0,c={},l=[],u={},d=new Set,f=0,p=new Set,m=e=>{o.add(e.cliName);for(let t of e.alias??[])o.add(t);e.negation&&o.add(e.negation)},h=(e,t)=>{R(e.isGlobal===!0?u:c,e,t,p)},g=(e,t)=>{let n=e.isGlobal===!0?u:c;n[e.name]=!z(e,t)},_=0,v=O(C(r),a),y=!1;for(;_<e.length-1;){let t=e[_];if(!y&&t===`--`){y=!0,_++;continue}if(!y&&t.startsWith(`-`)&&!t.startsWith(`--`)&&t.length>2&&!t.includes(`=`)){let e=Array.from(t.slice(1)),n=v.filter(e=>e.isGlobal!==!0);for(let t of e){let e=V(n,{name:t,isLong:!1});!e||e.takesValue||(m(e),g(e,{name:t,isLong:!1}))}_++;continue}if(!y&&j(t)){let n=M(t),r=V(v,n);if(r){if(m(r),r.takesValue){if(N(t)){let e=t.indexOf(`=`);h(r,t.slice(e+1))}else if(_+1<e.length-1){let t=e[_+1];j(t)||(h(r,t),_++)}}else g(r,n)}_++;continue}let n=y?null:ne(r,t);if(n){i.push(t);let m=C(r),h=e.slice(f,_);for(let e of ee(h,a,u))d.add(e);r=n,v=O(C(r),a);for(let e of Object.keys(c)){let t=m.find(t=>t.name===e),n=a.find(t=>t.name===e)??(t?E(a,t):void 0);n&&(d.has(n.name)||(u[n.name]=D(c[e],n)))}o.clear(),s=0,c={},l=[],p=new Set,f=_+1,_++;continue}l.push(t),s++,_++}let b=e[e.length-1]??``,x=e[e.length-2]??``,S=A(r),T=te(r);for(let e=0;e<S.length;e++){let t=S[e];if(t.variadic){c[t.name]=l.slice(e);break}e<l.length&&(c[t.name]=l[e])}let P,F,I;if(!y&&x&&j(x)&&!N(x)){let e=V(v,M(x));e&&e.takesValue?(P=`option-value`,F=e):b.startsWith(`-`)?P=`option-name`:(P=U(b,T,S,s),P===`positional`&&(I=s))}else if(!y&&b.startsWith(`-`)&&N(b)){let e=V(v,M(b));e&&e.takesValue?(P=`option-value`,F=e):P=`option-name`}else!y&&b.startsWith(`-`)?P=`option-name`:(P=U(b,T,S,s,y),P===`positional`&&(I=s));let L=[];if(F){if(F.valueType===`array`){let e=(F.isGlobal===!0?u:c)[F.name];L=Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}}else if(P===`positional`&&I!==void 0){let e=k(I,S);e!==void 0&&S[e]?.variadic&&(L=l.slice(e))}let B={...u,...c};return{subcommandPath:i,currentCommand:r,currentWord:b,previousWord:x,completionType:P,targetOption:F,positionalIndex:I,options:v,subcommands:T,positionals:S,usedOptions:o,providedPositionalCount:s,parsedArgs:B,previousValues:L}}function U(e,t,n,r,i){return i?`positional`:t.length>0&&(t.filter(t=>t.startsWith(e)).length>0||e===``)?`subcommand`:r<n.length||n.length>0&&n[n.length-1].variadic?`positional`:`subcommand`}const W={Default:0,NoSpace:1,NoFileCompletion:2,FilterPrefix:4,KeepOrder:8,FileCompletion:16,DirectoryCompletion:32,Error:64};function G(e){if(!e.startsWith(`-`))return;let t=e.indexOf(`=`);if(!(t<=0))return e.slice(0,t+1)}async function K(e,t){switch(e.completionType){case`subcommand`:return le(e);case`option-name`:return X(e);case`option-value`:{let n=e.targetOption,r=n?G(e.currentWord):void 0;return Z(r?{...e,currentWord:e.currentWord.slice(r.length)}:e,t,n?.name,n?.valueCompletion,void 0,n?.valueType===`array`)}case`positional`:{let n=re(e);return n?Z(e,t,n.name,n.valueCompletion,n.description,!1):{candidates:[],directive:W.NoFileCompletion}}}}function re(e){let t=e.positionalIndex??0,n=k(t,e.positionals);if(n===void 0)return;let r=e.positionals[n];if(r)return n===t||r.variadic?r:void 0}function q(e){try{return s(e,{encoding:`utf-8`,timeout:5e3}).split(`
3
3
  `).map(e=>e.trim()).filter(e=>e.length>0).map(e=>({value:e,type:`value`}))}catch{return[]}}function J(e){return e?.type===`choices`?e.choices:void 0}function Y(e,t){let n=e.options.find(e=>e.name===t&&e.isGlobal!==!0);if(n)return J(n.valueCompletion);let r=e.positionals.find(e=>e.name===t);return J(r?r.valueCompletion:e.options.find(e=>e.name===t&&e.isGlobal===!0)?.valueCompletion)}function ie(e,t){let n=!t.includes(`=`),r=n?ae(e):oe(e,t);return{candidates:r,hasEqSuffix:n&&r.some(e=>e.value.endsWith(`=`))}}function ae(e){let t=new Set,n=[];for(let r of e){let e=r.value.indexOf(`=`);if(e<=0){n.push(r);continue}let i=r.value.slice(0,e+1);t.has(i)||(t.add(i),n.push({...r,value:i}))}return n}function oe(e,t){let n=t.slice(0,t.indexOf(`=`)+1);return e.filter(e=>e.value!==n)}async function se(e,t,n,r,i){let a=[],o=W.FilterPrefix,s,c;switch(e.type){case`choices`:if(e.choices)for(let t of e.choices)a.push({value:t,description:r,type:`value`});o|=W.NoFileCompletion;break;case`file`:e.matcher&&e.matcher.length>0?(c=e.matcher.filter(e=>e.trim().length>0),c.length===0&&(c=void 0,o|=W.FileCompletion)):e.extensions&&e.extensions.length>0?(s=Array.from(new Set(e.extensions.map(e=>e.trim().replace(/^\./,``)).filter(e=>e.length>0))),s.length===0&&(s=void 0,o|=W.FileCompletion)):o|=W.FileCompletion;break;case`directory`:o|=W.DirectoryCompletion;break;case`command`:e.shellCommand&&a.push(...q(e.shellCommand)),o|=W.NoFileCompletion;break;case`none`:o|=W.NoFileCompletion;break;case`dynamic`:try{let n=await e.resolve(t);for(let e of n.candidates){let t=typeof e==`string`?{value:e}:e;a.push({...t,type:`value`})}o=n.directive??W.FilterPrefix|W.NoFileCompletion}catch{o=W.NoFileCompletion|W.Error}break;case`expand`:o|=W.NoFileCompletion;break;case`runtime-expand`:{let r={},i=!1;for(let a of e.dependsOn){let e=t.parsedArgs[a],o=Array.isArray(e)?e[e.length-1]:e,s=Y(n,a);if(typeof o!=`string`||s===void 0||!s.includes(o)){i=!0;break}r[a]=o}if(!i)try{let t=new Set;for(let n of e.enumerate(r)){let e=typeof n==`string`?{value:n}:n;t.has(e.value)||(t.add(e.value),a.push({...e,type:`value`}))}}catch{o=W.NoFileCompletion|W.Error;break}o|=W.NoFileCompletion;break}}if(e.type===`dynamic`||e.type===`expand`||e.type===`runtime-expand`){let n=ie(e.type===`runtime-expand`&&i===!0?ce(a,t.previousValues):a,t.currentWord);return n.hasEqSuffix&&(o|=W.NoSpace),{candidates:n.candidates,directive:o,fileExtensions:s,fileMatchers:c}}return{candidates:a,directive:o,fileExtensions:s,fileMatchers:c}}function ce(e,t){let n=new Set;for(let e of t){let t=e.indexOf(`=`);t>0&&n.add(e.slice(0,t))}return n.size===0?[...e]:e.filter(e=>{let t=e.value.indexOf(`=`);return t<=0||!n.has(e.value.slice(0,t))})}function le(e){let t=[];for(let n of e.subcommands){let r=e.currentCommand.subCommands,o=r?.[n],s=o?void 0:a(e.currentCommand,n),c=o??(s?r?.[s]:void 0),l=c?i(c)?.description:void 0;t.push({value:n,description:l,type:`subcommand`})}if(t.length===0||e.currentWord.startsWith(`-`)){let n=X(e);t.push(...n.candidates)}return{candidates:t,directive:W.FilterPrefix|W.NoFileCompletion}}function X(e){let t=[],n=e.options.filter(t=>t.valueType===`array`||!(e.usedOptions.has(t.cliName)||t.alias&&t.alias.some(t=>e.usedOptions.has(t))||t.negation&&e.usedOptions.has(t.negation)));for(let e of n)t.push({value:`--${e.cliName}`,description:e.description,type:`option`}),e.negation&&t.push({value:`--${e.negation}`,description:e.negationDescription??e.description,type:`option`});return e.usedOptions.has(`help`)||t.push({value:`--help`,description:`Show help information`,type:`option`}),{candidates:t,directive:W.FilterPrefix|W.NoFileCompletion}}function ue(e,t,n){return{currentWord:e.currentWord,shell:t.shell,parsedArgs:de(e.parsedArgs,n),previousValues:e.previousValues,subcommandPath:e.subcommandPath}}function de(e,t){if(t===void 0||!(t in e))return e;let n={...e};return delete n[t],n}async function Z(e,t,n,r,i,a){return r?se(r,ue(e,t,n),e,i,a):{candidates:[],directive:W.FilterPrefix}}function Q(e,t){switch(t.shell){case`bash`:return fe(e,t);case`zsh`:return pe(e,t);case`fish`:return me(e,t)}}function $(e,t){let n=`:${t.directive}`;t.fileExtensions&&t.fileExtensions.length>0&&(n+=`\t@ext:${t.fileExtensions.join(`,`)}`),t.fileMatchers&&t.fileMatchers.length>0&&(n+=`\t@matcher:${t.fileMatchers.join(`,`)}`),e.push(n)}function fe(e,t){let n=((e.directive&W.FilterPrefix)!==0&&t.currentWord?e.candidates.filter(e=>e.value.startsWith(t.currentWord)):e.candidates).map(e=>t.inlinePrefix?`${t.inlinePrefix}${e.value}`:e.value);return $(n,e),n.join(`
4
4
  `)}function pe(e,t){let n=e.candidates.map(e=>{let t=e.value.replace(/:/g,`\\:`);return e.description?`${t}:${e.description.replace(/:/g,`\\:`)}`:t});return $(n,e),n.join(`
@@ -0,0 +1 @@
1
+ import{t as e}from"./dynamic-D7QInkeD.js";export{e as createDynamicCompleteCommand};
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as toCamelCase, A as LogEntry, B as RunResultFailure, C as Command, D as GlobalCleanupContext, E as GlobalArgs, F as NonRunnableCommand, G as SubCommandsRecord, H as RunnableCommand, I as PromptResolver, J as isLazyCommand, K as UnknownSubcommandHandler, L as RunCommandOptions, M as LogStream, N as Logger, O as GlobalSetupContext, P as MainOptions, Q as UnknownKeysMode, R as RunInvocation, S as CollectedLogs, T as Example, U as SetupContext, V as RunResultSuccess, W as SubCommandValue, X as ExtractedFields, Y as lazy, Z as ResolvedFieldMeta, _ as DynamicCompletionResult, a as CustomCompletion, b as ArgsSchema$1, c as PromptType, d as ExpandCompletion, et as toKebabCase, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, h as DynamicCompletionContext, i as CompletionType, j as LogLevel, k as IsEmpty, l as ValidateArgMeta, m as DynamicCompletionCandidate, n as ArgMeta, nt as SchemaLike, o as EffectContext, p as CompletionDirectiveMask, q as LazyCommand, r as CompletionMeta, s as PromptMeta, t as ArgFn, tt as InferSchemaOutput, u as ExpandCandidate, v as AnyCommand, w as CommandBase, x as CleanupContext, y as ArgSource, z as RunResult } from "./arg-registry-BzQ-y-e0.js";
2
- import { _ as CompletionResult, g as CompletionOptions, i as GenerateBundledCompletionWorkerResult, n as withCompletionCommand, r as GenerateBundledCompletionWorkerOptions, t as WithCompletionOptions, x as InternalArgsSchema } from "./with-completion-command-CmVdHFHX.js";
1
+ import { $ as toCamelCase, A as LogEntry, B as RunResultFailure, C as Command, D as GlobalCleanupContext, E as GlobalArgs, F as NonRunnableCommand, G as SubCommandsRecord, H as RunnableCommand, I as PromptResolver, J as isLazyCommand, K as UnknownSubcommandHandler, L as RunCommandOptions, M as LogStream, N as Logger, O as GlobalSetupContext, P as MainOptions, Q as UnknownKeysMode, R as RunInvocation, S as CollectedLogs, T as Example, U as SetupContext, V as RunResultSuccess, W as SubCommandValue, X as ExtractedFields, Y as lazy, Z as ResolvedFieldMeta, _ as DynamicCompletionResult, a as CustomCompletion, b as ArgsSchema$1, c as PromptType, d as ExpandCompletion, et as toKebabCase, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, h as DynamicCompletionContext, i as CompletionType, j as LogLevel, k as IsEmpty, l as ValidateArgMeta, m as DynamicCompletionCandidate, n as ArgMeta, nt as SchemaLike, o as EffectContext, p as CompletionDirectiveMask, q as LazyCommand, r as CompletionMeta, s as PromptMeta, t as ArgFn, tt as InferSchemaOutput, u as ExpandCandidate, v as AnyCommand, w as CommandBase, x as CleanupContext, y as ArgSource, z as RunResult } from "./arg-registry-C-fvuAAg.js";
2
+ import { _ as CompletionResult, g as CompletionOptions, i as GenerateBundledCompletionWorkerResult, n as withCompletionCommand, r as GenerateBundledCompletionWorkerOptions, t as WithCompletionOptions, x as InternalArgsSchema } from "./with-completion-command-DMPw58_x.js";
3
3
  import { z } from "zod";
4
4
  //#region ../core/src/core/schema-extractor.d.ts
5
5
  /**
@@ -266,18 +266,26 @@ type WithRunMeta<T> = T & {
266
266
  * Resolve merged args from schema and global args type
267
267
  */
268
268
  type ResolvedArgs<TArgsSchema, TGlobalArgs> = WithRunMeta<MergedArgs<InferArgs<TArgsSchema>, TGlobalArgs>>;
269
+ /**
270
+ * Resolve the set of subcommand keys usable by `defaultSubCommand`, given the
271
+ * `subCommands` type inferred from a `defineCommand` call's config literal.
272
+ * `never` when no `subCommands` were provided, so `defaultSubCommand` cannot
273
+ * be set on a command without any subcommands.
274
+ */
275
+ type DefaultSubCommandKey<TSubCommands> = TSubCommands extends SubCommandsRecord ? keyof TSubCommands & string : never;
269
276
  /**
270
277
  * Config for defining a command
271
278
  * @template TArgsSchema - The args schema type (from the CLI's schema library)
272
279
  * @template TResult - The return type of run function (void if no run)
273
280
  * @template TGlobalArgs - Global args type (from declaration merging or factory)
281
+ * @template TSubCommands - The `subCommands` record type (inferred from the config literal)
274
282
  */
275
- interface DefineCommandConfig<TArgsSchema extends ArgsSchema$1 | undefined, TResult, TGlobalArgs> {
283
+ interface DefineCommandConfig<TArgsSchema extends ArgsSchema$1 | undefined, TResult, TGlobalArgs, TSubCommands extends SubCommandsRecord | undefined = undefined> {
276
284
  name: string;
277
285
  description?: string;
278
286
  aliases?: string[];
279
287
  args?: TArgsSchema;
280
- subCommands?: SubCommandsRecord;
288
+ subCommands?: TSubCommands;
281
289
  setup?: (context: {
282
290
  args: ResolvedArgs<TArgsSchema, TGlobalArgs>;
283
291
  }) => void | Promise<void>;
@@ -298,8 +306,8 @@ interface DefineCommandConfig<TArgsSchema extends ArgsSchema$1 | undefined, TRes
298
306
  * level instead of failing at runtime in the registered adapter.
299
307
  */
300
308
  interface DefineCommandFn<TArgsBase extends ArgsSchema$1 = ArgsSchema$1> {
301
- <TArgsSchema extends TArgsBase | undefined = undefined, TResult = void, TGlobalArgs = GlobalArgs>(config: RunnableConfig<TArgsSchema, TResult, TGlobalArgs>): RunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>, TResult>;
302
- <TArgsSchema extends TArgsBase | undefined = undefined, TGlobalArgs = GlobalArgs>(config: NonRunnableConfig<TArgsSchema, TGlobalArgs>): NonRunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>>;
309
+ <TArgsSchema extends TArgsBase | undefined = undefined, TResult = void, TGlobalArgs = GlobalArgs, TSubCommands extends SubCommandsRecord | undefined = undefined>(config: RunnableConfig<TArgsSchema, TResult, TGlobalArgs, TSubCommands>): RunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>, TResult>;
310
+ <TArgsSchema extends TArgsBase | undefined = undefined, TGlobalArgs = GlobalArgs, TSubCommands extends SubCommandsRecord | undefined = undefined>(config: NonRunnableConfig<TArgsSchema, TGlobalArgs, TSubCommands>): NonRunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>>;
303
311
  }
304
312
  /**
305
313
  * `defineCommand` with a pre-bound global args type — the shape returned by
@@ -307,8 +315,8 @@ interface DefineCommandFn<TArgsBase extends ArgsSchema$1 = ArgsSchema$1> {
307
315
  * for the same adapter re-pinning as {@link DefineCommandFn}.
308
316
  */
309
317
  interface BoundDefineCommandFn<TGlobalArgs, TArgsBase extends ArgsSchema$1 = ArgsSchema$1> {
310
- <TArgsSchema extends TArgsBase | undefined = undefined, TResult = void>(config: RunnableConfig<TArgsSchema, TResult, TGlobalArgs>): RunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>, TResult>;
311
- <TArgsSchema extends TArgsBase | undefined = undefined>(config: NonRunnableConfig<TArgsSchema, TGlobalArgs>): NonRunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>>;
318
+ <TArgsSchema extends TArgsBase | undefined = undefined, TResult = void, TSubCommands extends SubCommandsRecord | undefined = undefined>(config: RunnableConfig<TArgsSchema, TResult, TGlobalArgs, TSubCommands>): RunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>, TResult>;
319
+ <TArgsSchema extends TArgsBase | undefined = undefined, TSubCommands extends SubCommandsRecord | undefined = undefined>(config: NonRunnableConfig<TArgsSchema, TGlobalArgs, TSubCommands>): NonRunnableCommand<TArgsSchema, ResolvedArgs<TArgsSchema, TGlobalArgs>>;
312
320
  }
313
321
  /**
314
322
  * The `createDefineCommand` signature, parameterized by the args-schema
@@ -320,14 +328,23 @@ interface CreateDefineCommandFn<TArgsBase extends ArgsSchema$1 = ArgsSchema$1> {
320
328
  /**
321
329
  * Config with run function (runnable command)
322
330
  */
323
- interface RunnableConfig<TArgsSchema extends ArgsSchema$1 | undefined, TResult, TGlobalArgs> extends DefineCommandConfig<TArgsSchema, TResult, TGlobalArgs> {
331
+ interface RunnableConfig<TArgsSchema extends ArgsSchema$1 | undefined, TResult, TGlobalArgs, TSubCommands extends SubCommandsRecord | undefined = undefined> extends DefineCommandConfig<TArgsSchema, TResult, TGlobalArgs, TSubCommands> {
324
332
  run: (args: ResolvedArgs<TArgsSchema, TGlobalArgs>) => TResult;
333
+ /** Not settable alongside `run` (see `NonRunnableConfig.defaultSubCommand`) */
334
+ defaultSubCommand?: undefined;
325
335
  }
326
336
  /**
327
337
  * Config without run function (non-runnable command)
328
338
  */
329
- interface NonRunnableConfig<TArgsSchema extends ArgsSchema$1 | undefined, TGlobalArgs> extends Omit<DefineCommandConfig<TArgsSchema, void, TGlobalArgs>, "run"> {
339
+ interface NonRunnableConfig<TArgsSchema extends ArgsSchema$1 | undefined, TGlobalArgs, TSubCommands extends SubCommandsRecord | undefined = undefined> extends Omit<DefineCommandConfig<TArgsSchema, void, TGlobalArgs, TSubCommands>, "run"> {
330
340
  run?: undefined;
341
+ /**
342
+ * Name of a `subCommands` entry to run when this command is invoked with
343
+ * no subcommand specified, instead of showing help. Must be a key of
344
+ * `subCommands` (checked at compile time). See
345
+ * `NonRunnableCommand.defaultSubCommand`.
346
+ */
347
+ defaultSubCommand?: DefaultSubCommandKey<TSubCommands> | undefined;
331
348
  }
332
349
  //#endregion
333
350
  //#region ../core/src/core/runner.d.ts
@@ -668,6 +685,14 @@ declare class DuplicateNegationError extends Error {
668
685
  declare class ReservedFieldNameError extends Error {
669
686
  constructor(message: string);
670
687
  }
688
+ /**
689
+ * Error thrown when a command's `defaultSubCommand` is misconfigured: set
690
+ * together with `run`, or pointing at a name that isn't a registered
691
+ * `subCommands` key.
692
+ */
693
+ declare class DefaultSubCommandError extends Error {
694
+ constructor(message: string);
695
+ }
671
696
  /**
672
697
  * Error thrown when a global field and a same-named local field have
673
698
  * different definitions (per `extractFields()`'s type bucket, whether the
@@ -688,7 +713,7 @@ interface CommandValidationError {
688
713
  /** Path to the command (e.g., ["cli", "build", "watch"]) */
689
714
  commandPath: string[];
690
715
  /** Error type */
691
- type: "duplicate_field" | "duplicate_alias" | "invalid_alias" | "positional_config" | "reserved_alias" | "reserved_field_name" | "case_variant_collision" | "duplicate_negation" | "field_type_conflict" | "subcommand_key_name_mismatch";
716
+ type: "duplicate_field" | "duplicate_alias" | "invalid_alias" | "positional_config" | "reserved_alias" | "reserved_field_name" | "case_variant_collision" | "duplicate_negation" | "field_type_conflict" | "subcommand_key_name_mismatch" | "default_subcommand_conflict" | "default_subcommand_not_found";
692
717
  /** Error message */
693
718
  message: string;
694
719
  /** Related field name (if applicable) */
@@ -804,6 +829,14 @@ declare function validateCaseVariantCollisions(extracted: ExtractedFields): void
804
829
  * @throws {FieldTypeConflictError} If a same-named field has a different definition on each schema
805
830
  */
806
831
  declare function validateCrossSchemaCollisions(extractedA: ExtractedFields, extractedB: ExtractedFields): void;
832
+ /**
833
+ * Validate that a command's `defaultSubCommand` (if set) is not combined
834
+ * with `run` and points at a registered `subCommands` key.
835
+ *
836
+ * @param command - The command to validate
837
+ * @throws {DefaultSubCommandError} If the configuration is invalid
838
+ */
839
+ declare function validateDefaultSubCommand(command: AnyCommand): void;
807
840
  /**
808
841
  * Validate a command and all its subcommands recursively
809
842
  *
@@ -851,4 +884,4 @@ declare const defineCommand: DefineCommandFn<ArgsSchema>;
851
884
  declare const createDefineCommand: CreateDefineCommandFn<ArgsSchema>;
852
885
  declare const arg: ArgFn<z.ZodType>;
853
886
  //#endregion
854
- export { type AnyCommand, type ArgFn, type ArgMeta, type ArgSource, ArgsSchema, type BoundDefineCommandFn, type BuiltinOptionDescriptions, type CamelCase, CaseVariantCollisionError, type CleanupContext, type CollectedLogs, type Command, type CommandBase, type CommandContext, type CommandValidationError, type CommandValidationResult, type CompletionDirectiveMask, type CompletionMeta, type CompletionOptions, type CompletionResult, type CompletionType, type CreateDefineCommandFn, type CustomCompletion, type DefineCommandFn, DuplicateAliasError, DuplicateFieldError, DuplicateNegationError, type DynamicCompletionCandidate, type DynamicCompletionContext, type DynamicCompletionResolver, type DynamicCompletionResult, type EffectContext, type Example, type ExpandCandidate, type ExpandCompletion, type ExtractedFields, FieldTypeConflictError, type GenerateBundledCompletionWorkerOptions, type GenerateBundledCompletionWorkerResult, type GenerateCompileCacheShimOptions, type GenerateCompileCacheShimResult, type GlobalArgs, type GlobalCleanupContext, type GlobalSetupContext, type HelpOptions, type InferSchemaOutput, type KebabCase, type LazyCommand, type LogEntry, type LogLevel, type LogStream, type Logger, type MainOptions, type MergedArgs, type NonRunnableCommand, type ParsedArgv, type ParserOptions, PositionalConfigError, type PromptMeta, type PromptResolver, type PromptType, ReservedAliasError, ReservedFieldNameError, type ResolvedExpandCandidate, type ResolvedFieldMeta, type RunCommandOptions, type RunInvocation, type RunResult, type RunResultFailure, type RunResultSuccess, type RunnableCommand, type SchemaLike, type SetupContext, type SubCommandValue, type SubCommandsRecord, type UnknownKeysMode, type UnknownSubcommandHandler, type ValidateArgMeta, type ValidationError, type ValidationResult, type WithCaseVariants, type WithCompletionOptions, arg, createCompileCacheShimGenerator, createDefineCommand, createDualCaseProxy, defineCommand, extractFields, formatCommandValidationErrors, formatValidationErrors, generateCompileCacheShim, generateHelp, getUnknownKeysMode, isColorEnabled, isLazyCommand, lazy, logger, parseArgv, renderInline, renderMarkdown, runCommand, runMain, runPolittyCli, setColorEnabled, styles, symbols, toCamelCase, toKebabCase, validateCaseVariantCollisions, validateCommand, validateCrossSchemaCollisions, validateDuplicateAliases, validateDuplicateFields, validateDuplicateNegations, validatePositionalConfig, validateReservedAliases, validateReservedFieldNames, withCompletionCommand };
887
+ export { type AnyCommand, type ArgFn, type ArgMeta, type ArgSource, ArgsSchema, type BoundDefineCommandFn, type BuiltinOptionDescriptions, type CamelCase, CaseVariantCollisionError, type CleanupContext, type CollectedLogs, type Command, type CommandBase, type CommandContext, type CommandValidationError, type CommandValidationResult, type CompletionDirectiveMask, type CompletionMeta, type CompletionOptions, type CompletionResult, type CompletionType, type CreateDefineCommandFn, type CustomCompletion, DefaultSubCommandError, type DefineCommandFn, DuplicateAliasError, DuplicateFieldError, DuplicateNegationError, type DynamicCompletionCandidate, type DynamicCompletionContext, type DynamicCompletionResolver, type DynamicCompletionResult, type EffectContext, type Example, type ExpandCandidate, type ExpandCompletion, type ExtractedFields, FieldTypeConflictError, type GenerateBundledCompletionWorkerOptions, type GenerateBundledCompletionWorkerResult, type GenerateCompileCacheShimOptions, type GenerateCompileCacheShimResult, type GlobalArgs, type GlobalCleanupContext, type GlobalSetupContext, type HelpOptions, type InferSchemaOutput, type KebabCase, type LazyCommand, type LogEntry, type LogLevel, type LogStream, type Logger, type MainOptions, type MergedArgs, type NonRunnableCommand, type ParsedArgv, type ParserOptions, PositionalConfigError, type PromptMeta, type PromptResolver, type PromptType, ReservedAliasError, ReservedFieldNameError, type ResolvedExpandCandidate, type ResolvedFieldMeta, type RunCommandOptions, type RunInvocation, type RunResult, type RunResultFailure, type RunResultSuccess, type RunnableCommand, type SchemaLike, type SetupContext, type SubCommandValue, type SubCommandsRecord, type UnknownKeysMode, type UnknownSubcommandHandler, type ValidateArgMeta, type ValidationError, type ValidationResult, type WithCaseVariants, type WithCompletionOptions, arg, createCompileCacheShimGenerator, createDefineCommand, createDualCaseProxy, defineCommand, extractFields, formatCommandValidationErrors, formatValidationErrors, generateCompileCacheShim, generateHelp, getUnknownKeysMode, isColorEnabled, isLazyCommand, lazy, logger, parseArgv, renderInline, renderMarkdown, runCommand, runMain, runPolittyCli, setColorEnabled, styles, symbols, toCamelCase, toKebabCase, validateCaseVariantCollisions, validateCommand, validateCrossSchemaCollisions, validateDefaultSubCommand, validateDuplicateAliases, validateDuplicateFields, validateDuplicateNegations, validatePositionalConfig, validateReservedAliases, validateReservedFieldNames, withCompletionCommand };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{i as e,r as t}from"./field-meta-COGya7xp.js";import{t as n}from"./register-C1WbbeYH.js";import{r,t as i}from"./schema-extractor-DU0Vuhbd.js";import{n as a,t as o}from"./cli-main-DYdp1fLi.js";import{n as s,t as c}from"./command-Mbdt0bmN.js";import{C as l,E as u,S as d,T as f,_ as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./runner-BBzVbri9.js";import{o as F,s as I}from"./subcommand-router-D8GTMXYL.js";import{a as L,i as R,n as z,r as B,t as V}from"./logger-CJsyJ8sb.js";import{t as H}from"./with-completion-command-DDohm8U6.js";const U=a(`@politty/zod`),W=s,G=c,K=n;export{y as CaseVariantCollisionError,p as DuplicateAliasError,j as DuplicateFieldError,P as DuplicateNegationError,h as FieldTypeConflictError,N as PositionalConfigError,d as ReservedAliasError,l as ReservedFieldNameError,K as arg,a as createCompileCacheShimGenerator,G as createDefineCommand,D as createDualCaseProxy,W as defineCommand,i as extractFields,T as formatCommandValidationErrors,x as formatValidationErrors,U as generateCompileCacheShim,M as generateHelp,r as getUnknownKeysMode,V as isColorEnabled,F as isLazyCommand,I as lazy,z as logger,m as parseArgv,f as renderInline,u as renderMarkdown,k as runCommand,w as runMain,o as runPolittyCli,B as setColorEnabled,R as styles,L as symbols,t as toCamelCase,e as toKebabCase,O as validateCaseVariantCollisions,g as validateCommand,S as validateCrossSchemaCollisions,A as validateDuplicateAliases,_ as validateDuplicateFields,v as validateDuplicateNegations,E as validatePositionalConfig,C as validateReservedAliases,b as validateReservedFieldNames,H as withCompletionCommand};
1
+ import{i as e,r as t}from"./field-meta-COGya7xp.js";import{t as n}from"./register-C1WbbeYH.js";import{r,t as i}from"./schema-extractor-DU0Vuhbd.js";import{n as a,t as o}from"./cli-main-KajE103P.js";import{n as s,t as c}from"./command-tLHaJHe6.js";import{C as l,D as u,E as d,O as f,S as p,T as m,_ as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./runner-DECNQyff.js";import{o as L,s as R}from"./subcommand-router-D8GTMXYL.js";import{a as z,i as B,n as V,r as H,t as U}from"./logger-CJsyJ8sb.js";import{t as W}from"./with-completion-command-DM6F5LyO.js";const G=a(`@politty/zod`),K=s,q=c,J=n;export{h as CaseVariantCollisionError,N as DefaultSubCommandError,I as DuplicateAliasError,_ as DuplicateFieldError,F as DuplicateNegationError,p as FieldTypeConflictError,l as PositionalConfigError,P as ReservedAliasError,m as ReservedFieldNameError,J as arg,a as createCompileCacheShimGenerator,q as createDefineCommand,k as createDualCaseProxy,K as defineCommand,i as extractFields,D as formatCommandValidationErrors,C as formatValidationErrors,G as generateCompileCacheShim,d as generateHelp,r as getUnknownKeysMode,U as isColorEnabled,L as isLazyCommand,R as lazy,V as logger,g as parseArgv,u as renderInline,f as renderMarkdown,j as runCommand,E as runMain,o as runPolittyCli,H as setColorEnabled,B as styles,z as symbols,t as toCamelCase,e as toKebabCase,A as validateCaseVariantCollisions,v as validateCommand,w as validateCrossSchemaCollisions,M as validateDefaultSubCommand,y as validateDuplicateAliases,b as validateDuplicateFields,O as validateDuplicateNegations,T as validatePositionalConfig,S as validateReservedAliases,x as validateReservedFieldNames,W as withCompletionCommand};
@@ -1,4 +1,4 @@
1
- import { I as PromptResolver } from "./arg-registry-BzQ-y-e0.js";
1
+ import { I as PromptResolver } from "./arg-registry-C-fvuAAg.js";
2
2
  //#region ../core/src/prompt/clack/index.d.ts
3
3
  /**
4
4
  * Prompt resolver backed by @clack/prompts.
@@ -1,4 +1,4 @@
1
- import { I as PromptResolver } from "./arg-registry-BzQ-y-e0.js";
1
+ import { I as PromptResolver } from "./arg-registry-C-fvuAAg.js";
2
2
  //#region ../core/src/prompt/inquirer/index.d.ts
3
3
  /**
4
4
  * Prompt resolver backed by @inquirer/prompts.
package/dist/prompt.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { X as ExtractedFields, Z as ResolvedFieldMeta } from "./arg-registry-BzQ-y-e0.js";
1
+ import { X as ExtractedFields, Z as ResolvedFieldMeta } from "./arg-registry-C-fvuAAg.js";
2
2
  //#region ../core/src/prompt/types.d.ts
3
3
  /**
4
4
  * Resolved prompt configuration for a single field
@@ -0,0 +1 @@
1
+ import{t as e}from"./runner-DECNQyff.js";export{e as runCommand};
@@ -0,0 +1,29 @@
1
+ import{a as e,i as t,r as n,t as r}from"./field-meta-COGya7xp.js";import{n as i,o as a,s as o,t as s}from"./schema-extractor-DU0Vuhbd.js";import{n as c}from"./compile-cache-VuUbFWIo.js";import{n as l,r as u,t as d}from"./log-collector-DICKib75.js";import{a as f,c as p,n as m,o as h,r as g,t as _}from"./subcommand-router-D8GTMXYL.js";import{a as v,i as y}from"./logger-CJsyJ8sb.js";import{stripVTControlCharacters as b}from"node:util";async function x(e,t,n={}){let r,i,a=n.captureLogs??!1?d():null;a?.start();let o={args:t},s={args:t,error:r},c;n.handleSignals&&(c=async t=>{c&&(process.off(`SIGINT`,c),process.off(`SIGTERM`,c));let r=Error(`Process interrupted`);if(s.error=r,e.cleanup)try{await e.cleanup(s)}catch(e){console.error(`Error during signal cleanup:`,e)}if(n.globalCleanup)try{await n.globalCleanup({error:r})}catch(e){console.error(`Error during global signal cleanup:`,e)}a?.stop(),process.stdout.writableNeedDrain&&await new Promise(e=>{let t=setTimeout(()=>{process.stdout.off(`drain`,n),e()},200),n=()=>{clearTimeout(t),e()};process.stdout.once(`drain`,n)}),process.exit(1)},process.on(`SIGINT`,c),process.on(`SIGTERM`,c));try{e.setup&&await e.setup(o),e.run&&(i=await e.run(t))}catch(e){r=e instanceof Error?e:Error(String(e))}finally{c&&(process.off(`SIGINT`,c),process.off(`SIGTERM`,c))}if(e.cleanup){s.error=r;try{await e.cleanup(s)}catch(e){r||=e instanceof Error?e:Error(String(e))}}a?.stop();let f=n.existingLogs??l(),p=a?.getLogs()??l(),m=u(f,p);return r?{success:!1,error:r,exitCode:1,logs:m}:{success:!0,result:i,exitCode:0,logs:m}}function S(e){return e<=31||e>=127&&e<=159||e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071||e===8203||e>=8204&&e<=8207||e===65279||e>=65024&&e<=65039||e>=917760&&e<=917999}function C(e){return e>=4352&&e<=4447||e>=11904&&e<=12350||e>=12353&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=40960&&e<=42191||e>=43360&&e<=43391||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110959||e>=127488&&e<=127569||e>=131072&&e<=262141||e>=9728&&e<=10175||e>=126976&&e<=129791}function w(e){let t=!1,n=!1,r=!1;for(let i of e){let e=i.codePointAt(0);if(e===65039){r=!0;continue}S(e)||(t=!0,C(e)&&(n=!0))}return t?n||r?2:1:0}const T=(()=>{try{return new Intl.Segmenter(`en`,{granularity:`grapheme`})}catch{return}})();function E(e){if(e.length===0)return 0;let t=e.includes(`\x1B`)||e.includes(`›`)?b(e):e,n=0;if(T)for(let{segment:e}of T.segment(t))n+=w(e);else for(let e of t)n+=w(e);return n}function D(e){let t=[],n=e.replace(/`([^`]+)`/g,(e,n)=>{let r=t.length;return t.push(y.cyan(n)),`\x00CODE${r}\x00`});return n=n.replace(/\*\*(.+?)\*\*/g,(e,t)=>y.bold(t)),n=n.replace(/__(.+?)__/g,(e,t)=>y.bold(t)),n=n.replace(/\*(.+?)\*/g,(e,t)=>y.italic(t)),n=n.replace(/(?<!\w)_(.+?)_(?!\w)/g,(e,t)=>y.italic(t)),n=n.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`${y.underline(t)} ${y.dim(`(${n})`)}`),n=n.replace(/\x00CODE(\d+)\x00/g,(e,n)=>t[Number(n)]),n}function O(e){return ie(e.split(`
2
+ `)).map(le).join(`
3
+
4
+ `)}const k=/^(#{1,6})\s+(.+)$/,A=/^(?:---+|\*\*\*+|___+)\s*$/,j=/^>\s?(.*)$/,M=/^-\s+(.+)$/,N=/^(\d+)[.)]\s+(.+)$/,ee=/^(`{3,}|~{3,})(\S*)\s*$/,te=/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*$/,ne=/^\|(.+)\|$/,re=/^\|(\s*:?-+:?\s*\|)+$/;function ie(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.trim()===``){n++;continue}let i=r.match(ee);if(i){let r=i[1],a=i[2]??``,o=[];for(n++;n<e.length;){if(e[n].startsWith(r.charAt(0).repeat(r.length))&&e[n].trim()===r.charAt(0).repeat(Math.max(r.length,e[n].trim().length))){n++;break}o.push(e[n]),n++}t.push({type:`code`,lang:a,lines:o});continue}let a=r.match(k);if(a){t.push({type:`heading`,level:a[1].length,content:a[2]}),n++;continue}if(A.test(r)){t.push({type:`hr`}),n++;continue}if(j.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(j);if(t)r.push(t[1]),n++;else break}if(r.length>0){let e=r[0].match(te);if(e){let n=r.slice(1).filter(e=>e!==``);t.push({type:`alert`,alertType:e[1],lines:n});continue}}t.push({type:`blockquote`,lines:r});continue}if(M.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(M);if(t)r.push(t[1]),n++;else break}t.push({type:`ul`,items:r});continue}let o=r.match(N);if(o){let r=Number(o[1]),i=[];for(;n<e.length;){let t=e[n].match(N);if(t)i.push(t[2]),n++;else break}t.push({type:`ol`,items:i,start:r});continue}if(ne.test(r)&&n+1<e.length&&re.test(e[n+1])){let i=ae(r),a=oe(e[n+1]);n+=2;let o=[];for(;n<e.length&&ne.test(e[n]);)o.push(ae(e[n])),n++;t.push({type:`table`,headers:i,alignments:a,rows:o});continue}let s=[];for(;n<e.length;){let t=e[n];if(t.trim()===``||k.test(t)||A.test(t)||j.test(t)||M.test(t)||N.test(t)||ee.test(t)||ne.test(t)&&n+1<e.length&&re.test(e[n+1]))break;s.push(t),n++}s.length>0&&t.push({type:`paragraph`,lines:s})}return t}function ae(e){return e.slice(1,-1).split(`|`).map(e=>e.trim())}function oe(e){return e.slice(1,-1).split(`|`).map(e=>{let t=e.trim();return t.startsWith(`:`)&&t.endsWith(`:`)?`center`:t.endsWith(`:`)?`right`:`left`})}function se(e,t,n){let r=E(e),i=Math.max(0,t-r);if(n===`right`)return` `.repeat(i)+e;if(n===`center`){let t=Math.floor(i/2);return` `.repeat(t)+e+` `.repeat(i-t)}return e+` `.repeat(i)}const ce={NOTE:{icon:`ℹ`,label:`Note`,styleFn:y.cyan},TIP:{icon:`💡`,label:`Tip`,styleFn:y.green},IMPORTANT:{icon:`❗`,label:`Important`,styleFn:y.magenta},WARNING:{icon:`⚠`,label:`Warning`,styleFn:y.yellow},CAUTION:{icon:`🔴`,label:`Caution`,styleFn:y.red}};function le(e){switch(e.type){case`heading`:return y.green(y.bold(D(e.content)));case`hr`:return y.dim(`─`.repeat(40));case`blockquote`:{let t=y.dim(`│ `);return e.lines.map(e=>`${t}${D(e)}`).join(`
5
+ `)}case`alert`:{let{icon:t,label:n,styleFn:r}=ce[e.alertType],i=r(y.bold(`│`))+` `,a=`${i}${r(t)} ${r(n)}`;return e.lines.length===0?a:`${a}\n${e.lines.map(e=>`${i}${D(e)}`).join(`
6
+ `)}`}case`ul`:return e.items.map(e=>`${y.dim(`•`)} ${D(e)}`).join(`
7
+ `);case`ol`:{let t=e.start+e.items.length-1,n=String(t).length;return e.items.map((t,r)=>{let i=String(e.start+r).padStart(n,` `);return`${y.dim(`${i}.`)} ${D(t)}`}).join(`
8
+ `)}case`table`:{let t=e.headers.length,n=e.headers.map(e=>D(e)),r=e.rows.map(e=>Array.from({length:t},(t,n)=>D(e[n]??``))),i=n.map((e,t)=>{let n=E(e),i=r.map(e=>E(e[t]));return Math.max(n,...i)}),a=y.dim(`│`),o=y.dim(`┌─${i.map(e=>`─`.repeat(e)).join(`─┬─`)}─┐`),s=y.dim(`├─${i.map(e=>`─`.repeat(e)).join(`─┼─`)}─┤`),c=y.dim(`└─${i.map(e=>`─`.repeat(e)).join(`─┴─`)}─┘`);return[o,`${a} ${n.map((t,n)=>y.bold(se(t,i[n],e.alignments[n]??`left`))).join(` ${a} `)} ${a}`,s,...r.map(t=>{let n=t.map((t,n)=>se(t,i[n],e.alignments[n]??`left`));return`${a} ${n.join(` ${a} `)} ${a}`}),c].join(`
9
+ `)}case`code`:return e.lines.map(e=>` ${y.yellow(e)}`).join(`
10
+ `);case`paragraph`:return D(e.lines.join(` `))}}const P={help:`Show help`,helpAll:`Show help with all subcommand options`,version:`Show version`};function ue(e){return!e.startsWith(`__`)}function F(e){return Object.entries(e).filter(([e])=>ue(e))}function de(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?t.commandPath.join(` `):e.name??`command`}function fe(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?`${t.rootName} ${t.commandPath.join(` `)}`:e.name??`command`}function pe(e,t){let n=[],r=fe(e,t);n.push(y.commandName(r)),t?.globalExtracted?.fields.length&&n.push(y.placeholder(`[global options]`));let a=i(e);if(a){let t=a.fields.filter(e=>e.positional);a.fields.filter(e=>!e.positional).length>0&&n.push(y.placeholder(`[options]`)),e.subCommands&&F(e.subCommands).length>0&&(e.run?n.push(y.placeholder(`[command]`)):n.push(y.option(`<command>`)));for(let e of t)e.required?n.push(y.option(`<${e.name}>`)):n.push(y.placeholder(`[${e.name}]`))}else e.subCommands&&F(e.subCommands).length>0&&(e.run?n.push(y.placeholder(`[command]`)):n.push(y.option(`<command>`)));return n.join(` `)}function me(e,t={},n){let a=[],o={help:t.help??P.help,helpAll:t.helpAll??P.helpAll,version:t.version??P.version},s=i(e),c=s?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,l=s?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1;if(c?a.push(z(y.option(`--help`),o.help)):a.push(z(`${y.option(`-h`)}, ${y.option(`--help`)}`,o.help)),l?a.push(z(y.option(`--help-all`),o.helpAll)):a.push(z(`${y.option(`-H`)}, ${y.option(`--help-all`)}`,o.helpAll)),n?.rootVersion&&a.push(z(y.option(`--version`),o.version)),!s)return a.join(`
11
+ `);if(s.schemaType===`discriminatedUnion`&&s.discriminator)return he(s,e,a);if(s.schemaType===`union`&&s.unionOptions||s.schemaType===`xor`&&s.unionOptions)return ge(s,e,a);let u=s.fields.filter(e=>!e.positional);for(let e of u){let t=L(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${y.required(`(required)`)}`);let r=R(e.env);r&&(n+=` ${r}`),a.push(z(t,n));let i=I(e);i&&a.push(i)}return a.join(`
12
+ `)}function I(e,t=0,n=0){return!e.negationDisplay||!e.negationDescription?null:z(y.option(`--${e.negationDisplay}`),`${e.negationDescription} ${y.dim(`(↔ --${e.cliName})`)}`,t,n)}function he(e,t,n){let r=e.discriminator,i=e.variants??[],a=e.fields.find(e=>e.name===r);if(a){let t=i.map(e=>e.discriminatorValue).join(`|`),o=`${y.option(`--${r}`)} ${y.placeholder(`<${t}>`)}`,s=e.description??a.description??`Action to perform`;n.push(z(o,s))}let o=new Set,s=new Set;for(let e of i)for(let t of e.fields)s.add(t.name);for(let e of s)e!==r&&i.every(t=>t.fields.some(t=>t.name===e))&&o.add(e);for(let t of o){let r=e.fields.find(e=>e.name===t);if(r&&!r.positional){let e=L(r),t=r.description??``;r.defaultValue!==void 0&&(t+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let i=R(r.env);i&&(t+=` ${i}`),n.push(z(e,t));let a=I(r);a&&n.push(a)}}for(let e of i){let t=e.fields.filter(e=>e.name!==r&&!o.has(e.name)&&!e.positional);if(t.length>0){n.push(``);let i=e.description?`${y.dim(`When`)} ${y.option(r)}=${y.bold(e.discriminatorValue)}: ${e.description}`:`${y.dim(`When`)} ${y.option(r)}=${y.bold(e.discriminatorValue)}:`;n.push(i);for(let e of t){let t=L(e),r=e.description??``;e.defaultValue!==void 0&&(r+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(r+=` ${y.required(`(required)`)}`);let i=R(e.env);i&&(r+=` ${i}`),n.push(z(t,r,1));let a=I(e,1);a&&n.push(a)}}}return n.join(`
13
+ `)}function ge(e,t,n){let r=e.unionOptions??[],i=new Set,a=new Set;for(let e of r)for(let t of e.fields)a.add(t.name);for(let e of a)r.every(t=>t.fields.some(t=>t.name===e))&&i.add(e);for(let t of i){let r=e.fields.find(e=>e.name===t);if(r&&!r.positional){let e=L(r),t=r.description??``;r.defaultValue!==void 0&&(t+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let i=R(r.env);i&&(t+=` ${i}`),n.push(z(e,t));let a=I(r);a&&n.push(a)}}for(let e=0;e<r.length;e++){let t=r[e];if(!t)continue;let a=t.fields.filter(e=>!i.has(e.name)&&!e.positional),o=t.description??`Variant ${e+1}`;if(a.length>0){n.push(``),n.push(` ${y.bold(`${o}:`)}`);for(let e of a){let t=L(e),r=e.description??``;e.defaultValue!==void 0&&(r+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(r+=` ${y.required(`(required)`)}`);let i=R(e.env);i&&(r+=` ${i}`),n.push(z(t,r,1));let a=I(e,1);a&&n.push(a)}}else n.push(``),n.push(` ${y.bold(`${o}:`)}`),n.push(` ${y.dim(y.italic(`no options`))}`)}return n.join(`
14
+ `)}function L(e){let t=[];if(e.alias)for(let n of e.alias)n.length===1&&t.push(y.option(`-${n}`));let n=y.option(`--${e.cliName}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();n+=` ${y.placeholder(`<${t}>`)}`}if(t.push(n),e.alias){for(let n of e.alias)if(n.length>1){let r=y.option(`--${n}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();r+=` ${y.placeholder(`<${t}>`)}`}t.push(r)}}let r=t.join(`, `);return e.type===`boolean`&&e.negationDisplay&&!e.negationDescription?`${r} / ${y.option(`--${e.negationDisplay}`)}`:r}function R(e){if(!e)return``;let t=Array.isArray(e)?e:[e];return y.dim(`[env: ${t.join(`, `)}]`)}function _e(e){return e.replace(/\x1B\[[0-9;]*m/g,``)}function ve(e,t){let n=_e(e).length,r=Math.max(0,t-n);return e+` `.repeat(r)}function ye(e,t){if(!e.includes(`
15
+ `))return e;let n=` `.repeat(t);return e.split(`
16
+ `).join(`\n${n}`)}function z(e,t,n=0,r=0){let i=` `.repeat(n),a=_e(e).length,o=32-n*2+r,s=o+2+n*2,c=ye(t,s);return a>=o?`${i} ${e}\n${` `.repeat(s)}${c}`:`${i} ${ve(e,o)}${c}`}function be(e,t=0,n=0){let r=L(e),i=e.description??``;e.defaultValue!==void 0&&(i+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(i+=` ${y.required(`(required)`)}`);let a=R(e.env);return a&&(i+=` ${a}`),z(r,i,t,n)}function xe(e){let t=[];for(let n of e.fields){if(n.positional)continue;t.push(be(n));let e=I(n);e&&t.push(e)}return t.join(`
17
+ `)}function Se(e,t){let n=[],r=i(e);if(r){let e=r.fields.filter(e=>!e.positional);for(let r of e){let e=L(r),i=r.description??``;r.defaultValue!==void 0&&(i+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let a=R(r.env);a&&(i+=` ${a}`),n.push(z(e,i,t,2));let o=I(r,t,2);o&&n.push(o)}}return n}function Ce(e,t,n){let r=[];for(let[i,a]of F(e)){let e=p(a),o=t?`${t} ${i}`:i,s=e?.description??``,c=e?.aliases,l=c&&c.length>0?`${o}, ${c.join(`, `)}`:o;if(r.push(z(y.command(l),s,n)),e){let t=Se(e,n+1);r.push(...t);let i=e.subCommands?Object.fromEntries(F(e.subCommands)):void 0;if(i&&Object.keys(i).length>0){let e=Ce(i,o,n);r.push(...e)}}}return r}function we(e,t){let n=[],r=t.context,i=de(e,r);if(i){let e=y.commandName(i);r?.rootName&&r.commandPath&&r.commandPath.length>0?r.rootVersion?e+=` ${y.version(`(${r.rootName} v${r.rootVersion})`)}`:e+=` ${y.version(`(${r.rootName})`)}`:r?.rootVersion&&(e+=` ${y.version(`v${r.rootVersion}`)}`),n.push(e)}r?.aliasFor&&n.push(y.dim(`Alias for ${y.commandName(r.aliasFor)}`)),e.description&&n.push(e.description),!r?.aliasFor&&e.aliases&&e.aliases.length>0&&n.push(`${y.sectionHeader(`Aliases:`)} ${e.aliases.map(e=>y.command(e)).join(`, `)}`),n.push(`${y.sectionHeader(`Usage:`)} ${pe(e,r)}`);let a=me(e,t.descriptions,r);if(a&&n.push(`${y.sectionHeader(`Options:`)}\n${a}`),r?.globalExtracted?.fields.length&&n.push(`${y.sectionHeader(`Global Options:`)}\n${xe(r.globalExtracted)}`),t.showSubcommands!==!1&&e.subCommands&&F(e.subCommands).length>0){let i=r?.commandPath?.join(` `)??``,a=Object.fromEntries(F(e.subCommands));if(t.showSubcommandOptions){let e=Ce(a,i,0);n.push(`${y.sectionHeader(`Commands:`)}\n${e.join(`
18
+ `)}`)}else{let e=[];for(let[t,n]of Object.entries(a)){let r=p(n),a=r?.description??``,o=i?`${i} ${t}`:t,s=r?.aliases,c=s&&s.length>0?`${o}, ${s.join(`, `)}`:o;e.push(z(y.command(c),a))}n.push(`${y.sectionHeader(`Commands:`)}\n${e.join(`
19
+ `)}`)}}if(e.examples&&e.examples.length>0){let t=Te(e.examples,r);n.push(`${y.sectionHeader(`Examples:`)}\n${t}`)}if(e.notes){let t=O(e.notes).split(`
20
+ `).map(e=>e===``?``:` ${e}`).join(`
21
+ `);n.push(`${y.sectionHeader(`Notes:`)}\n${t}`)}return`\n${n.join(`
22
+
23
+ `)}\n`}function Te(e,t){let n=[],r=t?.rootName?`${t.rootName} `:``,i=t?.commandPath?.join(` `)??``,a=i?`${r}${i} `:r;for(let t of e){if(n.push(` ${y.dim(t.desc).split(`
24
+ `).join(`
25
+ `)}`),n.push(` ${y.dim(`$`)} ${a}${t.cmd}`),t.output)for(let e of t.output.split(`
26
+ `))n.push(` ${e}`);n.push(``)}return n.length>0&&n[n.length-1]===``&&n.pop(),n.join(`
27
+ `)}var Ee=class extends Error{constructor(e){super(e),this.name=`PositionalConfigError`}},De=class extends Error{constructor(e){super(e),this.name=`ReservedAliasError`}},Oe=class extends Error{constructor(e){super(e),this.name=`DuplicateFieldError`}},ke=class extends Error{constructor(e){super(e),this.name=`DuplicateAliasError`}},Ae=class extends Error{constructor(e){super(e),this.name=`CaseVariantCollisionError`}},je=class extends Error{constructor(e){super(e),this.name=`DuplicateNegationError`}},Me=class extends Error{constructor(e){super(e),this.name=`ReservedFieldNameError`}},Ne=class extends Error{constructor(e){super(e),this.name=`DefaultSubCommandError`}},Pe=class extends Error{constructor(e){super(e),this.name=`FieldTypeConflictError`}};function Fe(e,t){let n=[],r=new Map;for(let i of e.fields)r.has(i.name)&&n.push({commandPath:t,type:`duplicate_field`,message:`Duplicate field name "${i.name}" detected.`,field:i.name}),r.set(i.name,i.name);return n}function Ie(e,t){let r=[],i=new Map;for(let a of e.fields){let e=n(a.name),o=i.get(e);o&&o!==a.name&&r.push({commandPath:t,type:`case_variant_collision`,message:`Fields "${o}" and "${a.name}" are case variants of each other and would collide.`,field:a.name}),i.set(e,a.name)}return r}function Le(e,t){let i=[],a=new Map,o=new Set(e.fields.map(e=>e.name)),s=new Set(e.fields.map(e=>e.cliName)),c=(e,n,r)=>{(o.has(e)||s.has(e))&&i.push({commandPath:t,type:`duplicate_alias`,message:`Alias "${e}" for field "${n}" conflicts with existing field name or CLI name "${e}".`,field:n});let c=a.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_alias`,message:`Duplicate alias "${e}"${a} detected. Both "${c}" and "${n}" use the same alias.`,field:n})}a.set(e,n)};for(let t of e.fields){let e=r(t);if(e.length!==0){for(let r of e)if(c(r,t.name,!1),r.length>1&&r.includes(`-`)){let e=n(r);e!==r&&!o.has(e)&&c(e,t.name,!0)}}}return i}function Re(e,t){let i=[],a=new Map,o=(e,t,n)=>{a.has(e)||a.set(e,{field:t,kind:n})};for(let t of e.fields){if(o(t.name,t.name,`field name`),t.name.includes(`-`)){let e=n(t.name);e!==t.name&&o(e,t.name,`field name`)}if(t.cliName!==t.name&&o(t.cliName,t.name,`CLI name`),t.cliName.includes(`-`)){let e=n(t.cliName);e!==t.cliName&&o(e,t.name,`CLI name`)}for(let e of r(t))if(o(e,t.name,`alias`),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&o(r,t.name,`alias`)}if(t.type===`boolean`&&t.negation===!0){let e=`no-${t.cliName}`;o(e,t.name,`default negation`);let r=n(t.cliName),i=`no${r[0]?.toUpperCase()??``}${r.slice(1)}`;i!==e&&o(i,t.name,`default negation`)}}let s=new Map,c=(e,n,r)=>{let o=a.get(e);if(o){let a=r?` (derived camelCase variant)`:``,s=o.field===n?`the same field's own ${o.kind} "${e}"`:`${o.kind} "${e}" of field "${o.field}"`;i.push({commandPath:t,type:`duplicate_negation`,message:`Negation "${e}"${a} for field "${n}" conflicts with ${s}.`,field:n})}let c=s.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_negation`,message:`Duplicate negation "${e}"${a} detected. Both "${c}" and "${n}" use the same negation name.`,field:n})}s.set(e,n)};for(let t of e.fields)if(typeof t.negation==`string`&&(c(t.negation,t.name,!1),t.negation.includes(`-`))){let e=n(t.negation);e!==t.negation&&c(e,t.name,!0)}return i}function ze(e,t){let n=[],r=e.fields.filter(e=>e.positional),i=null,a=null;for(let e of r)i!==null&&n.push({commandPath:t,type:`positional_config`,message:`Positional argument "${e.name}" cannot follow array positional argument "${i}".`,field:e.name}),e.type===`array`&&a!==null&&n.push({commandPath:t,type:`positional_config`,message:`Array positional "${e.name}" cannot be used with optional positional "${a}" (ambiguous parsing).`,field:e.name}),a!==null&&e.required&&n.push({commandPath:t,type:`positional_config`,message:`Required positional "${e.name}" cannot follow optional positional "${a}".`,field:e.name}),e.type===`array`&&(i=e.name),e.required||(a=e.name);return n}function Be(e,t){let n=[];for(let i of e.fields)if(i.overrideBuiltinAlias!==!0)for(let e of r(i))(e===`h`||e===`H`)&&n.push({commandPath:t,type:`reserved_alias`,message:`Alias "${e}" is reserved for --${e===`h`?`help`:`help-all`}.`,field:i.name});return n}function Ve(e,t){let n=[];for(let r of e.fields)r.name.startsWith(`$`)&&n.push({commandPath:t,type:`reserved_field_name`,message:`Field "${r.name}" starts with "$", which is reserved for framework-injected helpers (e.g. $source).`,field:r.name});return n}function He(e){let t=Fe(e,[]);if(t.length>0)throw new Oe(`Duplicate field name "${t[0]?.field??`unknown`}" detected. Each field must have a unique name.`)}function Ue(e){let t=Le(e,[]);if(t.length>0){let e=t[0];throw new ke(e.message)}}function We(e){let t=ze(e,[]);if(t.length>0){let e=t[0];throw new Ee(e.message)}}function B(e,t){let n=Be(e,[]);if(n.length>0){let t=n[0].field??`unknown`,i=e.fields.find(e=>e.name===t),a=(i?r(i):[]).find(e=>e===`h`||e===`H`)??`h`;throw new De(`Alias "${a}" is reserved for --${a===`h`?`help`:`help-all`}. To override this, set { overrideBuiltinAlias: true } for "${t}" and keep the alias where it is currently defined (in alias or hiddenAlias).`)}}function V(e){let t=Ve(e,[]);if(t.length>0){let e=t[0];throw new Me(e.message)}}function H(e){let t=Re(e,[]);if(t.length>0){let e=t[0];throw new je(e.message)}}function U(e){let t=Ie(e,[]);if(t.length>0){let e=t[0];throw new Ae(e.message)}}function Ge(e,t){if(e.type!==t.type||e.positional!==t.positional)return!1;let n=e.enumValues,r=t.enumValues;if(!n&&!r)return!0;if(!n||!r)return!1;let i=new Set(n),a=new Set(r);if(i.size!==a.size)return!1;for(let e of i)if(!a.has(e))return!1;return!0}function Ke(e,t,r){let i=[],a=new Map;for(let t of e.fields)a.set(n(t.name),t);for(let e of t.fields){let t=n(e.name),o=a.get(t);if(o){if(o.name!==e.name){i.push({commandPath:r,type:`case_variant_collision`,message:`Global field "${o.name}" and command field "${e.name}" are case variants of each other and would collide.`,field:e.name});continue}Ge(o,e)||i.push({commandPath:r,type:`field_type_conflict`,message:`Global field "${o.name}" and command field "${e.name}" share the same name but have different definitions.`,field:e.name})}}return i}function qe(e,t){let n=Ke(e,t,[])[0];if(n)throw n.type===`case_variant_collision`?new Ae(n.message):new Pe(n.message)}function Je(e,t,n){return[...Fe(e,n),...Ie(e,n),...Le(e,n),...Re(e,n),...ze(e,n),...Be(e,n),...Ve(e,n)]}function Ye(e,t){let n=e,r=[];if(n.defaultSubCommand===void 0)return r;n.run&&r.push({commandPath:t,type:`default_subcommand_conflict`,message:`Command "${n.name}" defines both "run" and "defaultSubCommand". Define only one.`});let i=e.subCommands?Object.keys(e.subCommands):[];return i.includes(n.defaultSubCommand)||r.push({commandPath:t,type:`default_subcommand_not_found`,message:`defaultSubCommand "${n.defaultSubCommand}" does not match any subCommands key of "${n.name}". Registered: ${i.length>0?i.join(`, `):`(none)`}.`,field:n.defaultSubCommand}),r}function W(e){let t=Ye(e,[]);if(t.length>0)throw new Ne(t[0].message)}function Xe(e,t){let n=[];if(!e.subCommands)return n;let r=new Map;for(let[t]of Object.entries(e.subCommands))r.set(t,t);for(let[i,a]of Object.entries(e.subCommands)){let e=h(a)?a.meta:typeof a==`function`?null:a;if(!e?.aliases)continue;let o=[...t,i];for(let t of e.aliases){if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(t)){n.push({commandPath:o,type:`invalid_alias`,message:`Alias "${t}" is invalid. Aliases must start with an alphanumeric character and contain only alphanumeric characters, hyphens, or underscores.`,field:i});continue}if(t===i){n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with its own name.`,field:i});continue}let e=r.get(t);e?e===i?n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" is duplicated within the alias list.`,field:i}):n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with existing subcommand or alias "${e}".`,field:i}):r.set(t,i)}}return n}function Ze(e,t,n){return e===t?[]:[{commandPath:[...n,e],type:`subcommand_key_name_mismatch`,message:`Subcommand registered as "${e}" but its own name is "${t}".`,field:e}]}async function Qe(e,t={}){let n=t.commandPath??[e.name],r=[],i=e.subCommands?Object.keys(e.subCommands).length>0:!1,a=t.globalArgs?s(t.globalArgs):void 0;if(e.args){let t=s(e.args);r.push(...Je(t,i,n)),a&&r.push(...Ke(a,t,n))}if(r.push(...Xe(e,n)),r.push(...Ye(e,n)),e.subCommands)for(let[i,a]of Object.entries(e.subCommands)){let e=await g(a);r.push(...Ze(i,e.name,n));let o=await Qe(e,{commandPath:[...n,i],...t.globalArgs?{globalArgs:t.globalArgs}:{}});o.valid||r.push(...o.errors)}return r.length===0?{valid:!0}:{valid:!1,errors:r}}function $e(e){if(e.length===0)return``;let t=[`Command definition errors:`];for(let n of e){let e=n.commandPath.join(` > `);t.push(` - [${e}] ${n.message}`)}return t.join(`
28
+ `)}const et=new Set([`1`,`t`,`T`,`TRUE`,`true`,`True`]),tt=new Set([`0`,`f`,`F`,`FALSE`,`false`,`False`]);function G(e){return et.has(e)?!0:!tt.has(e)&&e}function nt(e,t){return t===`boolean`?G(e):e}function K(e){let t=e.indexOf(`=`);return t>=0?e.slice(2,t):e.slice(2)}function rt(e,t){let n=K(e);if(!e.includes(`=`)){let e=t.negationMap.get(n);if(e&&t.booleanFlags.has(e))return{resolvedName:e,withoutDashes:n,isNegated:!0,isCustomNegation:!0,isSuppressedNegation:!1}}let r=e.includes(`=`);if(!r&&n.startsWith(`no-`)){let e=n.slice(3);if(e===e.toLowerCase()){let r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}}if(!r&&n.length>2&&n.startsWith(`no`)&&/[A-Z]/.test(n[2])){let e=n[2].toLowerCase()+n.slice(3),r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}return{resolvedName:t.aliasMap.get(n)??n,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!1}}const it=/^-\.?\d/;function at(e){return it.test(e)}function q(e,t={}){let{aliasMap:n=new Map,booleanFlags:r=new Set,arrayFlags:i=new Set,definedNames:a=new Set,negationMap:o=new Map,defaultNegationDisabledFields:s}=t,c={aliasMap:n,booleanFlags:r,definedNames:a,negationMap:o,defaultNegationDisabledFields:s??new Set(r)},l={options:{},positionals:[],rest:[]},u=0,d=!1,f=(e,t)=>{let r=n.get(e)??e;if(i.has(r)){let e=l.options[r];Array.isArray(e)?e.push(t):e===void 0?l.options[r]=[t]:l.options[r]=[e,t]}else l.options[r]=t};for(;u<e.length;){let t=e[u];if(d){l.rest.push(t),u++;continue}if(t===`--`){d=!0,u++;continue}if(t.startsWith(`--`)){let i=t.slice(2),a=rt(t,c);if(a.isSuppressedNegation){f(a.withoutDashes,!0),u++;continue}if(a.isNegated){f(a.resolvedName,!1),u++;continue}let o=i.indexOf(`=`);if(o!==-1){let e=i.slice(0,o),t=i.slice(o+1),a=n.get(e)??e;f(e,r.has(a)?G(t):t),u++}else{let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||at(n))?(f(t,n),u+=2):(f(t,!0),u++)}}continue}if(t.startsWith(`-`)&&t.length>1&&!t.startsWith(`--`)){let i=t.slice(1),a=i.indexOf(`=`);if(a!==-1){let e=i.slice(0,a),t=i.slice(a+1),o=n.get(e)??e;f(e,r.has(o)?G(t):t),u++}else if(i.length===1){let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||at(n))?(f(t,n),u+=2):(f(t,!0),u++)}}else{for(let e of i)f(e,!0);u++}continue}l.positionals.push(t),u++}return l}function J(e){let t=new Map,i=new Set,a=new Set,o=new Set,s=new Map,c=new Set;for(let t of e.fields)o.add(t.name);for(let l of e.fields){l.cliName!==l.name&&t.set(l.cliName,l.name);for(let e of r(l))if(t.set(e,l.name),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&!o.has(r)&&!t.has(r)&&t.set(r,l.name)}let e=n(l.name);if(e!==l.name&&!o.has(e)&&!t.has(e)&&t.set(e,l.name),l.type===`boolean`&&i.add(l.name),l.type===`array`&&a.add(l.name),l.type===`boolean`&&l.negation!==!0&&(c.add(l.name),typeof l.negation==`string`&&(s.set(l.negation,l.name),l.negation.includes(`-`)))){let e=n(l.negation);e!==l.negation&&s.set(e,l.name)}}return{aliasMap:t,booleanFlags:i,arrayFlags:a,definedNames:o,negationMap:s,defaultNegationDisabledFields:c}}function ot(e,t){let n={...e.options},r=t.fields.filter(e=>e.positional),i=e.rest.length>0?[...e.positionals,...e.rest]:e.positionals,a=0;for(let e of r){if(a>=i.length)break;if(e.type===`array`){n[e.name]=i.slice(a);break}n[e.name]=i[a],a++}return n}function Y(e){let{aliasMap:t=new Map,booleanFlags:n=new Set,definedNames:i=new Set,negationMap:a=new Map,defaultNegationDisabledFields:o=new Set}=J(e),s=new Set;for(let t of e.fields)for(let e of r(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:n,definedNames:i,flagNames:new Set(e.fields.map(e=>e.name)),cliNames:new Set(e.fields.map(e=>e.cliName)),aliases:s,negationMap:a,defaultNegationDisabledFields:o}}function st(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=rt(e,t);if(o)return{resolvedName:n,withoutDashes:r,isNegated:!1,isGlobal:!1,isSuppressedNegation:o};let s=i&&!a?r.startsWith(`no-`)?r.slice(3):r[2].toLowerCase()+r.slice(3):r;return{resolvedName:n,withoutDashes:r,isNegated:i,isGlobal:t.flagNames.has(n)||t.cliNames.has(r)||t.cliNames.has(s),isSuppressedNegation:!1}}function ct(e,t,n,r,i){return!e.includes(`=`)&&!i.has(t)&&!n&&r!==void 0&&!r.startsWith(`-`)}function X(e,t,n,r,i,a){let o=e[t];return a.push(o),ct(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function lt(e,t,n){let r=Y(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||ut.has(t))break;if(!t.startsWith(`-`)&&i.has(t))return{subCommandIndex:s,globalTokensBefore:a,tokensAfterSubcommand:e.slice(s+1),suppressedTokens:o};if(t.startsWith(`--`)){let{resolvedName:n,withoutDashes:i,isNegated:c,isGlobal:l,isSuppressedNegation:u}=st(t,r);if(l){s+=X(e,s,n,c,r.booleanFlags,a);continue}if(u){o.push(i),s++;continue}break}if(t.startsWith(`-`)&&t.length>1){let n=t.includes(`=`)?t.slice(1,t.indexOf(`=`)):t.slice(1);if(n.length===1){let t=r.aliasMap.get(n)??n;if(r.aliases.has(n)||r.flagNames.has(t)){s+=X(e,s,t,!1,r.booleanFlags,a);continue}}break}break}return{subCommandIndex:-1,globalTokensBefore:a,tokensAfterSubcommand:[],suppressedTokens:o}}const ut=new Set([`--help`,`-h`,`--help-all`,`-H`,`--version`]);function dt(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?Y(t):{aliasMap:new Map,booleanFlags:new Set,definedNames:new Set,flagNames:new Set,cliNames:new Set,aliases:new Set,negationMap:new Map,defaultNegationDisabledFields:new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||ut.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=st(n,i);if(s){ct(n,a,o,e[t+1],i.booleanFlags)&&t++;continue}if(c){if(r)return-1;continue}return-1}let a=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(a.length===1){let r=i.aliasMap.get(a)??a;if(i.aliases.has(a)||i.flagNames.has(r)){ct(n,r,!1,e[t+1],i.booleanFlags)&&t++;continue}}return-1}return-1}function Z(e,t){let n=dt(e,t);return n>=0?e[n]:void 0}function ft(e,t,n={}){let i=_(t),a=[...i],o=a.length>0;if(o&&e.length>0){if(n.globalExtracted){let t=lt(e,a,n.globalExtracted);if(t.subCommandIndex>=0){let r=pt(t.globalTokensBefore,n.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:r}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=s(t.args),n.skipValidation||(He(c),U(c),Ue(c),H(c),We(c),B(c,o),V(c),n.globalExtracted&&qe(n.globalExtracted,c)));let l=e,u,d=[];if(n.globalExtracted){let{separated:t,globalParsed:r,suppressedTokens:i}=mt(e,n.globalExtracted,c);l=t,u=r,d=i}let f=e.indexOf(`--`),p=f>=0?e.slice(0,f):e,m=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,g=p.includes(`--help-all`)||!m&&p.includes(`-H`),v=!g&&(p.includes(`--help`)||!h&&p.includes(`-h`)),y=p.includes(`--version`);if(v||g||y)return{helpRequested:v,helpAllRequested:g,versionRequested:y,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u};if(!c){let e=l.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?l.slice(0,e):l,rest:e>=0?l.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u}}let b=J(c),x=q(l,b),S=ot(x,c),C=new Set;for(let e of c.fields)if(e.env&&S[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){S[e.name]=nt(t,e.type),C.add(e.name);break}}}let w=new Set(c.fields.map(e=>e.name)),T=new Set(c.fields.map(e=>e.cliName)),E=new Set;for(let e of c.fields)for(let t of r(e))E.add(t);if(n.globalExtracted)for(let e of n.globalExtracted.fields){w.add(e.name),T.add(e.cliName);for(let t of r(e))E.add(t)}let D=[];for(let e of Object.keys(x.options))!w.has(e)&&!T.has(e)&&!E.has(e)&&D.push(e);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:S,positionals:x.positionals,rest:x.rest,unknownFlags:D,unknownGlobalFlags:d,extractedFields:c,rawGlobalArgs:u,envFallbackFields:C}}function pt(e,t){return e.length===0?{}:ot(q(e,J(t)),t)}function mt(e,t,i){let a=Y(t),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?J(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let t of[e.cliName,...r(e)]){let e=`no-${t}`;d.add(e),d.add(n(e))}let f=[],p=[],m=[];for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){p.push(...e.slice(t));break}if(n.startsWith(`--`)){let{resolvedName:r,withoutDashes:i,isNegated:c,isGlobal:p,isSuppressedNegation:h}=st(n,a),g=r,_=o.has(i)||o.has(g)||s.has(i)||s.has(g)||l.has(i)||l.has(g)||u.has(i)||u.has(g)||d.has(i);if(p&&!_){t+=X(e,t,r,c,a.booleanFlags,f)-1;continue}if(h&&!_){m.push(i);continue}}else if(n.startsWith(`-`)&&n.length>1){let r=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(r.length===1){let n=a.aliasMap.get(r)??r;if((a.aliases.has(r)||a.flagNames.has(n))&&!l.has(r)){t+=X(e,t,n,!1,a.booleanFlags,f)-1;continue}}}p.push(n)}return{separated:p,globalParsed:pt(f,t),suppressedTokens:m}}function ht(t,n){return a(n)?o(t,n):e().validate(t,n)}function gt(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
29
+ `)}function _t(e,t){let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function vt(e,t){let n=Math.max(2,Math.floor(e.length/2));return t.map(t=>({candidate:t,distance:_t(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function yt(e,t){let n=vt(e.replace(/^-{1,2}/,``),t),r=`${y.warning(`Warning: Unknown option:`)} ${y.bold(e)}`;if(n.length>0){r+=`\n\n${y.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${v.arrow} ${y.option(`--${e}`)}`}return r}function bt(e,t){return t&&e.stack?`${y.error(`Error:`)} ${e.message}\n\n${y.dim(e.stack)}`:`${y.error(`Error:`)} ${e.message}`}function Q(e){return new Proxy(e,{get(e,r,i){if(typeof r==`string`){if(r in e)return Reflect.get(e,r,i);let a=n(r);if(a!==r&&a in e)return Reflect.get(e,a,i);let o=t(r);if(o!==r&&o in e)return Reflect.get(e,o,i)}return Reflect.get(e,r,i)},has(e,r){if(typeof r==`string`){if(r in e)return!0;let i=n(r);if(i!==r&&i in e)return!0;let a=t(r);if(a!==r&&a in e)return!0}return Reflect.has(e,r)}})}async function xt(e,t,n){for(let r of t.fields)r.effect&&await r.effect(e[r.name],{name:r.name,args:e,...n!=null&&{globalArgs:n}})}const St={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function Ct(e,r){Object.defineProperty(e,"$source",{value:e=>r.get(e)??r.get(n(e))??r.get(t(e))??`default`,enumerable:!1})}function wt(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function Tt(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function Et(e,t,n={}){let r=At(n),i=n.captureLogs??!1,a=i?d():null;if(n.setup){a?.start();try{await n.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(n.cleanup)try{await n.cleanup({error:t})}catch{}return a?.stop(),{success:!1,error:t,exitCode:1,logs:a?.getLogs()??l()}}a?.stop()}let o=await $(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:n.cleanup,_existingLogs:a?.getLogs()});if(n.cleanup){let e=i?d():null;e?.start();let t={error:o.success?void 0:o.error};try{await n.cleanup(t)}catch(t){if(o.success){let n=t instanceof Error?t:Error(String(t));return e?.stop(),{success:!1,error:n,exitCode:1,logs:u(o.logs,e?.getLogs()??l())}}}e?.stop();let r=e?.getLogs()??l();if(r.entries.length>0)return{...o,logs:u(o.logs,r)}}return o}function Dt(e,t,n){let r=Z(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function Ot(e,t={}){if(t.compileCache!==!1&&c(typeof t.compileCache==`string`?{cacheDir:t.compileCache}:{programName:e.name}),e.runMainHook)try{e.runMainHook(process.argv.slice(2))}catch{}let n=process.argv.slice(2),r;if(t.globalArgs)try{r=s(t.globalArgs)}catch{}let i=t;if(Dt(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=At(i);if(i.skipValidation||W(e),i.onUnknownSubcommand&&!e.run&&!Dt(e,n,r)){let t=_(e);if(t.size>0){let e=dt(n,a,{stopOnSuppressedNegation:a?.unknownKeysMode!==`passthrough`}),r=e>=0?n[e]:void 0;if(r&&!t.has(r)){let t=n.slice(e+1),a=await i.onUnknownSubcommand({commandPath:[],name:r,args:t,precedingArgs:n.slice(0,e)});if(typeof a==`number`)return await kt(),process.exit(a)}}}if(i.setup)try{await i.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(i.cleanup)try{await i.cleanup({error:t})}catch{}process.exit(1)}let o=await $(e,n,{debug:i.debug,captureLogs:i.captureLogs,skipValidation:i.skipValidation,handleSignals:!0,logger:i.logger,globalArgs:i.globalArgs,prompt:i.prompt,onUnknownSubcommand:i.onUnknownSubcommand,_globalExtracted:a,_globalCleanup:i.cleanup,_context:{commandPath:[],rootName:e.name,rootVersion:i.version,globalExtracted:a}});if((i.displayErrors??!0)&&!o.success&&o.error&&(i.logger??St).error(bt(o.error,i.debug??!1)),i.cleanup){let e={error:o.success?void 0:o.error};try{await i.cleanup(e)}catch{}}await kt(),process.exit(o.exitCode)}async function kt(){await Promise.all([process.stdout,process.stderr].map(e=>e.writableLength>0?new Promise(t=>e.write(``,()=>t())):Promise.resolve()))}async function $(e,t,n={}){let r=n.logger??St,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?d():null;a?.start();let o=()=>{let e=n._existingLogs??l(),t=a?.getLogs()??l();return u(e,t)};try{n.skipValidation||W(e);let s=ft(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=_(e);if(r.size>0){let e=dt(t,n._globalExtracted,{stopOnSuppressedNegation:n._globalExtracted?.unknownKeysMode!==`passthrough`}),i=e>=0?t[e]:void 0;if(i&&!r.has(i)){let r=t.slice(e+1),s=await n.onUnknownSubcommand({commandPath:l,name:i,args:r,precedingArgs:[...n._precedingArgs??[],...t.slice(0,e)]});if(typeof s==`number`){if(a?.stop(),n.handleSignals){if(n._globalCleanup)try{await n._globalCleanup({error:void 0})}catch{}await kt(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested){let c=!1,l=m(e),u=_(e);if(l.length>0){let e=Z(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}let d=we(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i});if(r.log(d),a?.stop(),c){let e=Z(t,i.globalExtracted)??``,n=vt(e,[...u]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}return{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownGlobalFlags&&s.unknownGlobalFlags.length>0){let e=i.globalExtracted?.unknownKeysMode??`strip`;if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownGlobalFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`){let e=i.globalExtracted?.fields.map(e=>e.name)??[];for(let t of s.unknownGlobalFlags)r.error(yt(t,e))}}if(s.versionRequested){let e=i.rootVersion;return e&&r.log(e),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.subCommand){let r=await f(e,s.subCommand);if(r){let e={commandPath:[...i.commandPath??[],s.subCommand],rootName:i.rootName,rootVersion:i.rootVersion,globalExtracted:i.globalExtracted,aliasFor:r.aliasFor};a?.stop();let l=new Set(n._globalExtracted?.unknownKeysMode===`passthrough`?[]:s.unknownGlobalFlags??[]),u=e=>e.startsWith(`--`)&&l.has(K(e)),d=t.slice(0,t.length-s.remainingArgs.length-1).filter(e=>!u(e));return $(r.command,s.remainingArgs,{...n,_context:e,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...d]})}}let u=s.extractedFields?.fields.filter(e=>e.positional)??[],d=u.some(e=>e.type===`array`),p=[...s.positionals,...s.rest],h=d?[]:p.slice(u.length),v=d?[]:s.positionals.slice(u.length);if(m(e).length>0&&!s.subCommand&&!e.run&&h.length===0){if(e.defaultSubCommand&&s.unknownFlags.length===0){let r=e.subCommands?.[e.defaultSubCommand];if(r){let l=await g(r),u={commandPath:[...i.commandPath??[],e.defaultSubCommand],rootName:i.rootName,rootVersion:i.rootVersion,globalExtracted:i.globalExtracted};a?.stop();let d=new Set(n._globalExtracted?.unknownKeysMode===`passthrough`?[]:s.unknownGlobalFlags??[]),f=e=>e.startsWith(`--`)&&d.has(K(e)),p=t.filter(e=>!f(e));return $(l,[],{...n,_context:u,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...p]})}}let l=we(e,{showSubcommands:n.showSubcommands??!0,context:i});return r.log(l),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownFlags.length>0){let e=s.extractedFields?.unknownKeysMode??`strip`,t=s.extractedFields?.fields.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(yt(e,t))}if(h.length>0){let t=_(e);if(t.size>0){let e=v.find(e=>!e.startsWith(`-`)&&!t.has(e));if(e){let n=vt(e,[...t]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return a?.stop(),{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}}let n=s.extractedFields?.unknownKeysMode??`strip`;if(n===`strict`)return a?.stop(),{success:!1,error:Error(`Unexpected positional argument${h.length>1?`s`:``}: ${h.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of h)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let y={},b=e.name===`__complete`,S=new Set(Object.keys(c)),C=new Set;if(n.globalArgs&&n._globalExtracted&&!b){for(let e of n._globalExtracted.fields)if(e.env&&c[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){c[e.name]=nt(t,e.type),C.add(e.name);break}}}if(n.prompt){let e=await n.prompt(c,n._globalExtracted);for(let[t,n]of Object.entries(e))n!==void 0&&(c[t]=n)}let e=ht(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(gt(e.errors)),exitCode:1,logs:o()};y=e.data}if(!e.args){let t=new Map;for(let e of S)t.set(e,`cli`);for(let e of C)t.set(e,`env`);Ct(y,t),wt(y,Tt(e,i));let r=Q(y);return n._globalExtracted&&!b&&await xt(r,n._globalExtracted,r),a?.stop(),await x(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let w=s.rawArgs,T=new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(w,s.extractedFields),t={...w};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,T.add(n));w=t}let E=new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||T.has(e.name))&&S.has(e.name)&&Object.hasOwn(y,e.name)&&(w={...w,[e.name]:y[e.name]},E.add(e.name));let D=ht(w,e.args);if(!D.success)return a?.stop(),{success:!1,error:Error(gt(D.errors)),exitCode:1,logs:o()};let O=Q(D.data),k=Q(y);n._globalExtracted&&!b&&await xt(k,n._globalExtracted,k),s.extractedFields&&!b&&await xt(O,s.extractedFields,k);let A={...k,...O},j=new Map;for(let e of S)j.set(e,`cli`);for(let e of C)j.set(e,`env`);let M=s.envFallbackFields??new Set;for(let e of s.extractedFields?.fields??[]){if(E.has(e.name)){j.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||M.has(e.name);j.set(e.name,t?M.has(e.name)?`env`:`cli`:`default`)}Ct(A,j),wt(A,Tt(e,i));let N=Q(A);return a?.stop(),await x(e,N,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}catch(e){let t=e instanceof Error?e:Error(String(e));return a?.stop(),{success:!1,error:t,exitCode:1,logs:o()}}}function At(e){if(!e.globalArgs)return;let t=s(e.globalArgs);if(!e.skipValidation){He(t),U(t),Ue(t),H(t),B(t,!0),V(t);let e=t.fields.filter(e=>e.positional).map(e=>e.name);if(e.length>0)throw Error(`Global options schema must not contain positional arguments. Found: ${e.join(`, `)}`)}return t}export{Ee as C,D,we as E,O,Pe as S,Me as T,Ae as _,q as a,Oe as b,Qe as c,Ue as d,He as f,V as g,B as h,gt as i,qe as l,We as m,Ot as n,$e as o,H as p,Q as r,U as s,Et as t,W as u,Ne as v,De as w,je as x,ke as y};
package/dist/skill.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Q as UnknownKeysMode, b as ArgsSchema, v as AnyCommand } from "./arg-registry-BzQ-y-e0.js";
1
+ import { Q as UnknownKeysMode, b as ArgsSchema, v as AnyCommand } from "./arg-registry-C-fvuAAg.js";
2
2
  import { z } from "zod";
3
3
  //#region ../core/src/skill/types.d.ts
4
4
  /**
package/dist/skill.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./register-C1WbbeYH.js";import{a as e,i as t,t as n}from"./schema-extractor-DU0Vuhbd.js";import{n as r}from"./command-Mbdt0bmN.js";import{a as i,n as a}from"./logger-CJsyJ8sb.js";import{copyFileSync as o,existsSync as s,lstatSync as c,mkdirSync as l,mkdtempSync as u,readFileSync as d,readdirSync as f,readlinkSync as p,realpathSync as m,renameSync as ee,rmSync as h,statSync as g,symlinkSync as te,unlinkSync as _}from"node:fs";import{basename as v,dirname as y,isAbsolute as b,join as x,parse as ne,relative as S,resolve as C,sep as w}from"node:path";import{parse as re}from"yaml";import{z as T}from"zod";const ie=/^[a-z0-9]+(-[a-z0-9]+)*$/;function E(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function ae(e){let t=[],n=(n,r)=>{let i=e[n];if(i===void 0){r.required&&t.push({path:[n],message:`Invalid input: expected string, received undefined`});return}if(typeof i!=`string`){t.push({path:[n],message:`Invalid input: expected string, received ${E(i)}`});return}r.min!==void 0&&i.length<r.min&&t.push({path:[n],message:`Too small: expected string to have >=${r.min} characters`}),r.max!==void 0&&i.length>r.max&&t.push({path:[n],message:`Too big: expected string to have <=${r.max} characters`})};n(`name`,{required:!0,min:1,max:64}),typeof e.name==`string`&&!ie.test(e.name)&&t.push({path:[`name`],message:`name must be lowercase alphanumerics separated by single hyphens`}),n(`description`,{required:!0,min:1,max:1024}),n(`license`,{min:1}),n(`compatibility`,{max:500}),n(`allowed-tools`,{});let r=e.metadata;if(r!==void 0){if(typeof r!=`object`||!r||Array.isArray(r))t.push({path:[`metadata`],message:`Invalid input: expected record, received ${E(r)}`});else for(let[e,n]of Object.entries(r))typeof n!=`string`&&t.push({path:[`metadata`,e],message:`Invalid input: expected string, received ${E(n)}`})}return t.length>0?{success:!1,issues:t}:{success:!0,data:{...e}}}const oe=/^\uFEFF?---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)([\s\S]*)$/;function D(e){let t=e.match(oe);if(!t)return{data:{},body:e};let n=t[1],r=t[2];try{let e=re(n);return se(e)?{data:e,body:r}:{data:{},body:r}}catch(e){return{data:{},body:r,parseError:e instanceof Error?e.message:String(e)}}}function se(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ce(e){let{data:t,body:n}=D(e),r=ae(t);return r.success?{frontmatter:r.data,body:n,rawContent:e}:null}const O=`.agents/skills`,k=[`.claude/skills`],A=`politty-cli`;function j(e){if(e.length<1||e.length>64||!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e))throw Error(`Invalid skill name: ${JSON.stringify(e)}`)}function le(e,t=process.cwd(),n={}){let r=e.frontmatter.name;j(r);let i=n.mode??`symlink`,a=e.frontmatter.metadata?.[`politty-cli`]??null;if(i===`copy`&&a===null)throw Error(`Refusing to install "${e.frontmatter.name}" in copy mode without an ownership stamp. Add metadata.${A}="{package}:{cli}" to the source SKILL.md so subsequent installs can replace the copy in place.`);let o=C(t,O),s=m(e.sourcePath),c=ue(e.sourcePath),u=[x(N(o),r),...k.map(e=>x(N(C(t,e)),r))].find(e=>ye(e,s));if(u!==void 0)throw Error(`Refusing to install "${r}": source ${s} overlaps install destination ${u}. Choose a sourceDir outside .agents/skills/ and any agent-specific slot directory (e.g. .claude/skills/).`);if(i===`symlink`){let e=N(o);M(x(e,r),S(e,c));for(let n of k){let i=N(C(t,n));M(x(i,r),x(S(i,e),r))}}l(o,{recursive:!0});let d=m(o),f=x(d,r);he(f,a),ge({linkTarget:S(d,c),linkPath:f,copyFrom:s,mode:i}),ve(t,r,f,a,i)}function M(e,t){if(b(t))throw Error(`Refusing to write an absolute symlink target at ${e} → ${t}. The skill source and install root appear to live on different filesystem roots (e.g. different Windows drive letters); retry with mode: "copy".`)}function ue(e){let t=C(e),{root:n}=ne(t),r=t.slice(n.length).split(w).filter(e=>e!==``),i=n;for(let[e,t]of r.entries()){let n=x(i,t),a;try{a=c(n)}catch{return x(i,...r.slice(e))}if(a.isSymbolicLink()){if(de(i))return x(i,...r.slice(e));i=m(n)}else i=n}return i}function de(e){return v(e)===`node_modules`||v(e).startsWith(`@`)&&v(y(e))===`node_modules`}function N(e){let t=e,n=[];for(;;)try{let e=m(t);return n.length===0?e:C(e,...n.reverse())}catch{let r=y(t);if(r===t)return e;n.push(t.slice(r.length).replace(/^[/\\]+/,``)),t=r}}function fe(e,t=process.cwd(),n={}){j(e);let r=n.expectedOwnership??null,i=C(t,O,e);for(let n of k)me(C(t,n,e),r,{restrictSymlinkTo:i});me(i,r)}function pe(e,t){let n;try{n=p(e)}catch{return!1}let r=b(n)?n:C(y(e),n);if(r===t)return!0;try{return m(r)===m(t)}catch{return!1}}function me(e,t,n={}){let r;try{r=c(e)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return;throw e}if(r.isSymbolicLink()){if(n.restrictSymlinkTo!==void 0){pe(e,n.restrictSymlinkTo)&&_(e);return}(t===null||F(e)===t)&&_(e);return}r.isDirectory()&&t!==null&&F(e)===t&&h(e,{recursive:!0,force:!0})}function he(e,t,n={}){let r;try{r=c(e)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return;throw e}if(r.isSymbolicLink()){if(n.restrictSymlinkTo===void 0||pe(e,n.restrictSymlinkTo)){_(e);return}throw Error(`Refusing to replace symlink at ${e}: it does not route to this CLI's canonical slot (${n.restrictSymlinkTo}). Remove or migrate the foreign symlink before retrying.`)}if(r.isDirectory()&&t!==null&&F(e)===t){h(e,{recursive:!0,force:!0});return}throw Error(`Refusing to replace non-symlink path at ${e}. This looks like a legacy or manual install; remove or migrate it before retrying.`)}function ge(e){let{linkTarget:t,linkPath:n,copyFrom:r,mode:i}=e;if(i===`copy`){_e(r,n);return}M(n,t);try{te(t,n,`dir`)}catch(e){let r=e instanceof Error?e.message:String(e);throw Error(`Failed to symlink ${n} → ${t}: ${r}. If this filesystem does not support symlinks (e.g. Windows without Developer Mode), retry with mode: "copy".`,{cause:e})}}function _e(e,t){let n=u(`${t}.partial-`);try{P(e,n),ee(n,t)}catch(e){try{h(n,{recursive:!0,force:!0})}catch{}throw e}}function P(e,t,n=new Set){let r=g(e);if(r.isDirectory()){let r=m(e);if(n.has(r))throw Error(`Refusing to recursively copy cyclic directory symlink at ${e} (resolves to ${r}, already on the copy stack).`);n.add(r);try{l(t,{recursive:!0});for(let r of f(e))P(x(e,r),x(t,r),n)}finally{n.delete(r)}return}r.isFile()&&o(e,t)}function F(e){let t;try{t=d(x(e,`SKILL.md`),`utf-8`)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return null;throw e}let{data:n}=D(t),r=n.metadata;if(!r||typeof r!=`object`||Array.isArray(r))return null;let i=r[A];return typeof i==`string`?i:null}function I(e,t=process.cwd()){return j(e),s(C(t,O,e,`SKILL.md`))}function L(e,t=process.cwd()){j(e);let n=C(t,O,e,`SKILL.md`),r;try{r=d(n,`utf-8`)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return null;throw e}let{data:i}=D(r),a=i.metadata;if(!a||typeof a!=`object`||Array.isArray(a))return null;let o=a[A];return typeof o==`string`?o:null}function ve(e,t,n,r,i){for(let a of k){let o=C(e,a);l(o,{recursive:!0});let s=m(o),c=x(s,t);he(c,r,{restrictSymlinkTo:n});let u=m(C(n,`..`));ge({linkTarget:x(S(s,u),t),linkPath:c,copyFrom:n,mode:i})}}function R(e){return e instanceof Error&&typeof e.code==`string`}function ye(e,t){if(e===t)return!0;let n=(e,t)=>{let n=S(t,e);return n===``||n===`.`||!b(n)&&n!==`..`&&!n.startsWith(`..${w}`)};return n(e,t)||n(t,e)}const z=`SKILL.md`;function B(e){let t=[],n=[];try{let r;try{r=g(e)}catch(r){return H(r)&&(r.code===`ENOENT`||r.code===`ENOTDIR`)?n.push({path:e,reason:`missing-source`,message:`Source directory does not exist: ${e}`}):n.push({path:e,reason:`read-failed`,message:`Failed to stat source directory ${e}: ${V(r)}`}),{skills:t,errors:n}}if(!r.isDirectory())return n.push({path:e,reason:`missing-source`,message:`Source path is not a directory: ${e}`}),{skills:t,errors:n};let i=x(e,z),a=Se(i);if(a.kind===`error`)return n.push({path:e,reason:`read-failed`,message:`Failed to check ${i}: ${a.message}`}),{skills:t,errors:n};if(a.kind===`present`)return xe(be(e,{enforceParentMatch:!1}),t,n),{skills:t,errors:n};let o=f(e,{withFileTypes:!0});for(let r of o){let i=x(e,r.name),a;try{a=g(i).isDirectory()}catch(e){if(H(e)&&e.code===`ENOENT`&&!r.isSymbolicLink())continue;n.push({path:i,reason:`read-failed`,message:r.isSymbolicLink()?`Dangling symlink at ${i}: ${V(e)}`:`Failed to stat ${i}: ${V(e)}`});continue}if(!a)continue;let o=x(i,z),s=Se(o);if(s.kind===`error`){n.push({path:i,reason:`read-failed`,message:`Failed to check ${o}: ${s.message}`});continue}s.kind!==`absent`&&xe(be(i,{enforceParentMatch:!0}),t,n)}}catch(t){n.push({path:e,reason:`read-failed`,message:`Failed to scan ${e}: ${V(t)}`})}return t.sort((e,t)=>e.frontmatter.name<t.frontmatter.name?-1:+(e.frontmatter.name>t.frontmatter.name)),{skills:t,errors:n}}function be(e,t){let n=x(e,z),r;try{r=d(n,`utf-8`)}catch(t){return{path:e,reason:`read-failed`,message:`Failed to read ${n}: ${V(t)}`}}let{data:i,parseError:a}=D(r);if(a!==void 0)return{path:e,reason:`parse-failed`,message:`Invalid SKILL.md frontmatter in ${e}: YAML parse error: ${a}`};let o=ae(i);if(!o.success)return{path:e,reason:`parse-failed`,message:`Invalid SKILL.md frontmatter in ${e}: ${o.issues.map(e=>`${e.path.join(`.`)||`<root>`}: ${e.message}`).join(`; `)}`};if(t.enforceParentMatch){let t=v(e);if(t!==o.data.name)return{path:e,reason:`name-mismatch`,message:`Skill name "${o.data.name}" does not match directory "${t}"`,skillName:o.data.name}}return{frontmatter:o.data,sourcePath:e,rawContent:r}}function xe(e,t,n){`frontmatter`in e?t.push(e):n.push(e)}function V(e){return e instanceof Error?e.message:String(e)}function H(e){return e instanceof Error&&typeof e.code==`string`}function Se(e){try{return c(e),{kind:`present`}}catch(e){return H(e)&&e.code===`ENOENT`?{kind:`absent`}:{kind:`error`,message:V(e)}}}function Ce(e,t={}){let n=0,r=!1;for(let i of e){if(i.reason===`missing-source`||i.path===t.sourceDir){r=!0,a.warn(`Failed to scan source directory ${i.path}: ${i.message}`);continue}n+=1,a.warn(`Skipping skill at ${i.path}: ${i.message}`)}t.silentStdout||(n>0&&a.info(`${i.warning} Skipped ${n} skill(s) due to scan errors (see warnings above).`),r&&a.info(`${i.warning} Source directory scan failed (see warnings above); subsequent operations may be skipped.`))}function U(e,t){let n=e.errors.some(e=>e.reason===`missing-source`||e.path===t),r=e.errors.length>0&&e.skills.length===0;return n||r}function W(e,t={}){let n=B(e.sourceDir);return Ce(n.errors,{...t,sourceDir:e.sourceDir}),n}function we(e){let t={description:`Skill names to exclude from sync`};return e.excludeAlias!==void 0&&(t.alias=e.excludeAlias),t}function Te(e){let t={description:`Print install paths and modes`};return e.verbose.alias!==void 0&&(t.alias=e.verbose.alias),t}function G(e,t){return!!e[t]}function Ee(n){function i(e,t){let{skills:r,errors:i}=W(n),o=n.stamp,s=new Set(r.map(e=>e.frontmatter.name)),c=new Set(Ie(o,n.cwd,n.sourceDir)),l=Array.from(new Set(e.exclude)).filter(e=>!s.has(e)&&!c.has(e));if(l.length>0){let e=l.length===1?`Skill`:`Skills`,t=l.map(e=>JSON.stringify(e)).join(`, `);throw Error(`--exclude: ${e} ${t} not found in source directory or among installed skills.\n`+q({source:r,installed:c}))}let u=new Set(e.exclude),d=r.filter(e=>!u.has(e.frontmatter.name)),f=U({skills:r,errors:i},n.sourceDir),p=0;if(!f){let e=new Set(d.map(e=>e.frontmatter.name)),t=new Set;for(let e of i)e.path!==n.sourceDir&&(t.add(v(e.path)),e.skillName!==void 0&&t.add(e.skillName));for(let r of c)e.has(r)||u.has(r)||t.has(r)||(Y(r,o,n.cwd,n.sourceDir),p+=1)}let m=0;for(let e of d)J(e,o,n,t),m+=1;if(m===0&&p===0){let e=f?`source directory scan failed; see warnings`:r.length>0&&d.length===0?`all skills excluded`:`no skills bundled`;a.info(`No skills installed (${e}).`)}else a.info(`Sync complete: ${m} installed, ${p} removed.`)}return n.verbose.disabled?r({name:`sync`,description:n.descriptions.sync,args:t({exclude:e.stringArray(we(n))},{unknownKeys:n.unknownKeys}),run(e){i(e,G(e,`verbose`))}}):r({name:`sync`,description:n.descriptions.sync,args:t({exclude:e.stringArray(we(n)),verbose:e.boolean(Te(n))},{unknownKeys:n.unknownKeys}),run(e){i(e,e.verbose)}})}function De(n){let i={positional:!0,description:`Skill name(s) to install (default: all)`,placeholder:`NAME`};function o(e,t){let r=W(n),i=r.skills,o=n.stamp;if(e.name.length>0){let r=new Set(i.map(e=>e.frontmatter.name)),a=Array.from(new Set(e.name)),s=a.filter(e=>!r.has(e));if(s.length>0){let e=s.length===1?`Skill`:`Skills`,t=s.map(e=>JSON.stringify(e)).join(`, `);throw Error(`${e} ${t} not found in source directory.\n`+q({source:i}))}let c=new Set(a);for(let e of i)c.has(e.frontmatter.name)&&J(e,o,n,t);return}if(i.length===0){U(r,n.sourceDir)?a.info(`No skills installed (source directory scan failed; see warnings).`):a.info(`No skills found in source directory.`);return}for(let e of i)J(e,o,n,t)}return n.verbose.disabled?r({name:n.commandNames.add.name,...n.commandNames.add.aliases.length>0?{aliases:n.commandNames.add.aliases}:{},description:n.descriptions.add,args:t({name:e.stringArray(i)},{unknownKeys:n.unknownKeys}),run(e){o(e,G(e,`verbose`))}}):r({name:n.commandNames.add.name,...n.commandNames.add.aliases.length>0?{aliases:n.commandNames.add.aliases}:{},description:n.descriptions.add,args:t({name:e.stringArray(i),verbose:e.boolean(Te(n))},{unknownKeys:n.unknownKeys}),run(e){o(e,e.verbose)}})}function Oe(n){return r({name:n.commandNames.remove.name,...n.commandNames.remove.aliases.length>0?{aliases:n.commandNames.remove.aliases}:{},description:n.descriptions.remove,args:t({name:e.optionalString({positional:!0,description:`Skill name to remove (default: all)`,placeholder:`NAME`})},{unknownKeys:n.unknownKeys}),run(e){let t=W(n),r=t.skills,i=n.stamp;if(e.name){if(r.some(t=>t.frontmatter.name===e.name)&&Me(r,e.name),!Y(e.name,i,n.cwd,n.sourceDir)){if(K(e.name,n.cwd))a.info(`${e.name} is installed without a ${A} stamp this CLI recognises; refusing to remove. Remove .agents/skills/${e.name} manually if intended.`);else{let t=new Set(Ie(i,n.cwd,n.sourceDir));a.info(`${e.name} is not installed; nothing to remove.\n`+q({installed:t}))}}return}if(r.length===0){U(t,n.sourceDir)?a.info(`No skills found (source directory scan failed; see warnings); nothing to remove.`):a.info(`No skills found in source directory; nothing to remove.`);return}let o=0;for(let e of r)Y(e.frontmatter.name,i,n.cwd,n.sourceDir)&&(o+=1);o===0&&a.info(`No installed skills owned by this CLI; nothing to remove.`)}})}function ke(e,t,n,r){let i;try{i=L(e,n)}catch(t){return a.warn(`Failed to read ownership for installed skill ${e}: ${Ae(t)}`),`unreadable`}if(i===t)return`installed`;if(i!==null)return`foreign`;if(!I(e,n)){let t=C(n,O,e);return Z(t)&&X(t,r)?`missing`:K(e,n)?`unstamped`:`not-installed`}return`unstamped`}function Ae(e){return e instanceof Error?e.message:String(e)}function K(e,t){try{return c(C(t,O,e)),!0}catch{return!1}}function je(n){function i(e){let t=W(n,{silentStdout:e}),r=t.skills,i=n.stamp;if(e){console.log(JSON.stringify(r.map(e=>({name:e.frontmatter.name,description:e.frontmatter.description,owner:e.frontmatter.metadata?.[`politty-cli`]??null,expectedOwner:i,status:ke(e.frontmatter.name,i,n.cwd,n.sourceDir),sourcePath:e.sourcePath}))));return}if(r.length===0){U(t,n.sourceDir)?a.info(`Source directory scan failed; see warnings.`):a.info(`No skills found in source directory.`);return}a.info(`Available skills:`);for(let e of r){let t=ke(e.frontmatter.name,i,n.cwd,n.sourceDir);a.info(` ${e.frontmatter.name.padEnd(20)} ${t.padEnd(14)} ${e.frontmatter.description}`)}}return n.json.disabled?r({name:`list`,description:n.descriptions.list,args:t({},{unknownKeys:n.unknownKeys}),run(e){i(G(e,`json`))}}):r({name:`list`,description:n.descriptions.list,args:t({json:e.boolean({description:`Output as JSON`})},{unknownKeys:n.unknownKeys}),run(e){i(e.json)}})}function Me(e,t){let n=e.find(e=>e.frontmatter.name===t);if(!n){let n=e.map(e=>e.frontmatter.name).join(`, `)||`<none>`;throw Error(`Skill "${t}" not found in source directory. Available: ${n}`)}return n}function q(e){let t=[];return e.source!==void 0&&t.push(` Source: ${e.source.map(e=>e.frontmatter.name).join(`, `)||`<none>`}`),e.installed!==void 0&&t.push(` Installed: ${[...e.installed].sort().join(`, `)||`<none>`}`),t.join(`
1
+ import"./register-C1WbbeYH.js";import{a as e,i as t,t as n}from"./schema-extractor-DU0Vuhbd.js";import{n as r}from"./command-tLHaJHe6.js";import{a as i,n as a}from"./logger-CJsyJ8sb.js";import{copyFileSync as o,existsSync as s,lstatSync as c,mkdirSync as l,mkdtempSync as u,readFileSync as d,readdirSync as f,readlinkSync as p,realpathSync as m,renameSync as ee,rmSync as h,statSync as g,symlinkSync as te,unlinkSync as _}from"node:fs";import{basename as v,dirname as y,isAbsolute as b,join as x,parse as ne,relative as S,resolve as C,sep as w}from"node:path";import{parse as re}from"yaml";import{z as T}from"zod";const ie=/^[a-z0-9]+(-[a-z0-9]+)*$/;function E(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function ae(e){let t=[],n=(n,r)=>{let i=e[n];if(i===void 0){r.required&&t.push({path:[n],message:`Invalid input: expected string, received undefined`});return}if(typeof i!=`string`){t.push({path:[n],message:`Invalid input: expected string, received ${E(i)}`});return}r.min!==void 0&&i.length<r.min&&t.push({path:[n],message:`Too small: expected string to have >=${r.min} characters`}),r.max!==void 0&&i.length>r.max&&t.push({path:[n],message:`Too big: expected string to have <=${r.max} characters`})};n(`name`,{required:!0,min:1,max:64}),typeof e.name==`string`&&!ie.test(e.name)&&t.push({path:[`name`],message:`name must be lowercase alphanumerics separated by single hyphens`}),n(`description`,{required:!0,min:1,max:1024}),n(`license`,{min:1}),n(`compatibility`,{max:500}),n(`allowed-tools`,{});let r=e.metadata;if(r!==void 0){if(typeof r!=`object`||!r||Array.isArray(r))t.push({path:[`metadata`],message:`Invalid input: expected record, received ${E(r)}`});else for(let[e,n]of Object.entries(r))typeof n!=`string`&&t.push({path:[`metadata`,e],message:`Invalid input: expected string, received ${E(n)}`})}return t.length>0?{success:!1,issues:t}:{success:!0,data:{...e}}}const oe=/^\uFEFF?---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)([\s\S]*)$/;function D(e){let t=e.match(oe);if(!t)return{data:{},body:e};let n=t[1],r=t[2];try{let e=re(n);return se(e)?{data:e,body:r}:{data:{},body:r}}catch(e){return{data:{},body:r,parseError:e instanceof Error?e.message:String(e)}}}function se(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ce(e){let{data:t,body:n}=D(e),r=ae(t);return r.success?{frontmatter:r.data,body:n,rawContent:e}:null}const O=`.agents/skills`,k=[`.claude/skills`],A=`politty-cli`;function j(e){if(e.length<1||e.length>64||!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e))throw Error(`Invalid skill name: ${JSON.stringify(e)}`)}function le(e,t=process.cwd(),n={}){let r=e.frontmatter.name;j(r);let i=n.mode??`symlink`,a=e.frontmatter.metadata?.[`politty-cli`]??null;if(i===`copy`&&a===null)throw Error(`Refusing to install "${e.frontmatter.name}" in copy mode without an ownership stamp. Add metadata.${A}="{package}:{cli}" to the source SKILL.md so subsequent installs can replace the copy in place.`);let o=C(t,O),s=m(e.sourcePath),c=ue(e.sourcePath),u=[x(N(o),r),...k.map(e=>x(N(C(t,e)),r))].find(e=>ye(e,s));if(u!==void 0)throw Error(`Refusing to install "${r}": source ${s} overlaps install destination ${u}. Choose a sourceDir outside .agents/skills/ and any agent-specific slot directory (e.g. .claude/skills/).`);if(i===`symlink`){let e=N(o);M(x(e,r),S(e,c));for(let n of k){let i=N(C(t,n));M(x(i,r),x(S(i,e),r))}}l(o,{recursive:!0});let d=m(o),f=x(d,r);he(f,a),ge({linkTarget:S(d,c),linkPath:f,copyFrom:s,mode:i}),ve(t,r,f,a,i)}function M(e,t){if(b(t))throw Error(`Refusing to write an absolute symlink target at ${e} → ${t}. The skill source and install root appear to live on different filesystem roots (e.g. different Windows drive letters); retry with mode: "copy".`)}function ue(e){let t=C(e),{root:n}=ne(t),r=t.slice(n.length).split(w).filter(e=>e!==``),i=n;for(let[e,t]of r.entries()){let n=x(i,t),a;try{a=c(n)}catch{return x(i,...r.slice(e))}if(a.isSymbolicLink()){if(de(i))return x(i,...r.slice(e));i=m(n)}else i=n}return i}function de(e){return v(e)===`node_modules`||v(e).startsWith(`@`)&&v(y(e))===`node_modules`}function N(e){let t=e,n=[];for(;;)try{let e=m(t);return n.length===0?e:C(e,...n.reverse())}catch{let r=y(t);if(r===t)return e;n.push(t.slice(r.length).replace(/^[/\\]+/,``)),t=r}}function fe(e,t=process.cwd(),n={}){j(e);let r=n.expectedOwnership??null,i=C(t,O,e);for(let n of k)me(C(t,n,e),r,{restrictSymlinkTo:i});me(i,r)}function pe(e,t){let n;try{n=p(e)}catch{return!1}let r=b(n)?n:C(y(e),n);if(r===t)return!0;try{return m(r)===m(t)}catch{return!1}}function me(e,t,n={}){let r;try{r=c(e)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return;throw e}if(r.isSymbolicLink()){if(n.restrictSymlinkTo!==void 0){pe(e,n.restrictSymlinkTo)&&_(e);return}(t===null||F(e)===t)&&_(e);return}r.isDirectory()&&t!==null&&F(e)===t&&h(e,{recursive:!0,force:!0})}function he(e,t,n={}){let r;try{r=c(e)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return;throw e}if(r.isSymbolicLink()){if(n.restrictSymlinkTo===void 0||pe(e,n.restrictSymlinkTo)){_(e);return}throw Error(`Refusing to replace symlink at ${e}: it does not route to this CLI's canonical slot (${n.restrictSymlinkTo}). Remove or migrate the foreign symlink before retrying.`)}if(r.isDirectory()&&t!==null&&F(e)===t){h(e,{recursive:!0,force:!0});return}throw Error(`Refusing to replace non-symlink path at ${e}. This looks like a legacy or manual install; remove or migrate it before retrying.`)}function ge(e){let{linkTarget:t,linkPath:n,copyFrom:r,mode:i}=e;if(i===`copy`){_e(r,n);return}M(n,t);try{te(t,n,`dir`)}catch(e){let r=e instanceof Error?e.message:String(e);throw Error(`Failed to symlink ${n} → ${t}: ${r}. If this filesystem does not support symlinks (e.g. Windows without Developer Mode), retry with mode: "copy".`,{cause:e})}}function _e(e,t){let n=u(`${t}.partial-`);try{P(e,n),ee(n,t)}catch(e){try{h(n,{recursive:!0,force:!0})}catch{}throw e}}function P(e,t,n=new Set){let r=g(e);if(r.isDirectory()){let r=m(e);if(n.has(r))throw Error(`Refusing to recursively copy cyclic directory symlink at ${e} (resolves to ${r}, already on the copy stack).`);n.add(r);try{l(t,{recursive:!0});for(let r of f(e))P(x(e,r),x(t,r),n)}finally{n.delete(r)}return}r.isFile()&&o(e,t)}function F(e){let t;try{t=d(x(e,`SKILL.md`),`utf-8`)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return null;throw e}let{data:n}=D(t),r=n.metadata;if(!r||typeof r!=`object`||Array.isArray(r))return null;let i=r[A];return typeof i==`string`?i:null}function I(e,t=process.cwd()){return j(e),s(C(t,O,e,`SKILL.md`))}function L(e,t=process.cwd()){j(e);let n=C(t,O,e,`SKILL.md`),r;try{r=d(n,`utf-8`)}catch(e){if(R(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return null;throw e}let{data:i}=D(r),a=i.metadata;if(!a||typeof a!=`object`||Array.isArray(a))return null;let o=a[A];return typeof o==`string`?o:null}function ve(e,t,n,r,i){for(let a of k){let o=C(e,a);l(o,{recursive:!0});let s=m(o),c=x(s,t);he(c,r,{restrictSymlinkTo:n});let u=m(C(n,`..`));ge({linkTarget:x(S(s,u),t),linkPath:c,copyFrom:n,mode:i})}}function R(e){return e instanceof Error&&typeof e.code==`string`}function ye(e,t){if(e===t)return!0;let n=(e,t)=>{let n=S(t,e);return n===``||n===`.`||!b(n)&&n!==`..`&&!n.startsWith(`..${w}`)};return n(e,t)||n(t,e)}const z=`SKILL.md`;function B(e){let t=[],n=[];try{let r;try{r=g(e)}catch(r){return H(r)&&(r.code===`ENOENT`||r.code===`ENOTDIR`)?n.push({path:e,reason:`missing-source`,message:`Source directory does not exist: ${e}`}):n.push({path:e,reason:`read-failed`,message:`Failed to stat source directory ${e}: ${V(r)}`}),{skills:t,errors:n}}if(!r.isDirectory())return n.push({path:e,reason:`missing-source`,message:`Source path is not a directory: ${e}`}),{skills:t,errors:n};let i=x(e,z),a=Se(i);if(a.kind===`error`)return n.push({path:e,reason:`read-failed`,message:`Failed to check ${i}: ${a.message}`}),{skills:t,errors:n};if(a.kind===`present`)return xe(be(e,{enforceParentMatch:!1}),t,n),{skills:t,errors:n};let o=f(e,{withFileTypes:!0});for(let r of o){let i=x(e,r.name),a;try{a=g(i).isDirectory()}catch(e){if(H(e)&&e.code===`ENOENT`&&!r.isSymbolicLink())continue;n.push({path:i,reason:`read-failed`,message:r.isSymbolicLink()?`Dangling symlink at ${i}: ${V(e)}`:`Failed to stat ${i}: ${V(e)}`});continue}if(!a)continue;let o=x(i,z),s=Se(o);if(s.kind===`error`){n.push({path:i,reason:`read-failed`,message:`Failed to check ${o}: ${s.message}`});continue}s.kind!==`absent`&&xe(be(i,{enforceParentMatch:!0}),t,n)}}catch(t){n.push({path:e,reason:`read-failed`,message:`Failed to scan ${e}: ${V(t)}`})}return t.sort((e,t)=>e.frontmatter.name<t.frontmatter.name?-1:+(e.frontmatter.name>t.frontmatter.name)),{skills:t,errors:n}}function be(e,t){let n=x(e,z),r;try{r=d(n,`utf-8`)}catch(t){return{path:e,reason:`read-failed`,message:`Failed to read ${n}: ${V(t)}`}}let{data:i,parseError:a}=D(r);if(a!==void 0)return{path:e,reason:`parse-failed`,message:`Invalid SKILL.md frontmatter in ${e}: YAML parse error: ${a}`};let o=ae(i);if(!o.success)return{path:e,reason:`parse-failed`,message:`Invalid SKILL.md frontmatter in ${e}: ${o.issues.map(e=>`${e.path.join(`.`)||`<root>`}: ${e.message}`).join(`; `)}`};if(t.enforceParentMatch){let t=v(e);if(t!==o.data.name)return{path:e,reason:`name-mismatch`,message:`Skill name "${o.data.name}" does not match directory "${t}"`,skillName:o.data.name}}return{frontmatter:o.data,sourcePath:e,rawContent:r}}function xe(e,t,n){`frontmatter`in e?t.push(e):n.push(e)}function V(e){return e instanceof Error?e.message:String(e)}function H(e){return e instanceof Error&&typeof e.code==`string`}function Se(e){try{return c(e),{kind:`present`}}catch(e){return H(e)&&e.code===`ENOENT`?{kind:`absent`}:{kind:`error`,message:V(e)}}}function Ce(e,t={}){let n=0,r=!1;for(let i of e){if(i.reason===`missing-source`||i.path===t.sourceDir){r=!0,a.warn(`Failed to scan source directory ${i.path}: ${i.message}`);continue}n+=1,a.warn(`Skipping skill at ${i.path}: ${i.message}`)}t.silentStdout||(n>0&&a.info(`${i.warning} Skipped ${n} skill(s) due to scan errors (see warnings above).`),r&&a.info(`${i.warning} Source directory scan failed (see warnings above); subsequent operations may be skipped.`))}function U(e,t){let n=e.errors.some(e=>e.reason===`missing-source`||e.path===t),r=e.errors.length>0&&e.skills.length===0;return n||r}function W(e,t={}){let n=B(e.sourceDir);return Ce(n.errors,{...t,sourceDir:e.sourceDir}),n}function we(e){let t={description:`Skill names to exclude from sync`};return e.excludeAlias!==void 0&&(t.alias=e.excludeAlias),t}function Te(e){let t={description:`Print install paths and modes`};return e.verbose.alias!==void 0&&(t.alias=e.verbose.alias),t}function G(e,t){return!!e[t]}function Ee(n){function i(e,t){let{skills:r,errors:i}=W(n),o=n.stamp,s=new Set(r.map(e=>e.frontmatter.name)),c=new Set(Ie(o,n.cwd,n.sourceDir)),l=Array.from(new Set(e.exclude)).filter(e=>!s.has(e)&&!c.has(e));if(l.length>0){let e=l.length===1?`Skill`:`Skills`,t=l.map(e=>JSON.stringify(e)).join(`, `);throw Error(`--exclude: ${e} ${t} not found in source directory or among installed skills.\n`+q({source:r,installed:c}))}let u=new Set(e.exclude),d=r.filter(e=>!u.has(e.frontmatter.name)),f=U({skills:r,errors:i},n.sourceDir),p=0;if(!f){let e=new Set(d.map(e=>e.frontmatter.name)),t=new Set;for(let e of i)e.path!==n.sourceDir&&(t.add(v(e.path)),e.skillName!==void 0&&t.add(e.skillName));for(let r of c)e.has(r)||u.has(r)||t.has(r)||(Y(r,o,n.cwd,n.sourceDir),p+=1)}let m=0;for(let e of d)J(e,o,n,t),m+=1;if(m===0&&p===0){let e=f?`source directory scan failed; see warnings`:r.length>0&&d.length===0?`all skills excluded`:`no skills bundled`;a.info(`No skills installed (${e}).`)}else a.info(`Sync complete: ${m} installed, ${p} removed.`)}return n.verbose.disabled?r({name:`sync`,description:n.descriptions.sync,args:t({exclude:e.stringArray(we(n))},{unknownKeys:n.unknownKeys}),run(e){i(e,G(e,`verbose`))}}):r({name:`sync`,description:n.descriptions.sync,args:t({exclude:e.stringArray(we(n)),verbose:e.boolean(Te(n))},{unknownKeys:n.unknownKeys}),run(e){i(e,e.verbose)}})}function De(n){let i={positional:!0,description:`Skill name(s) to install (default: all)`,placeholder:`NAME`};function o(e,t){let r=W(n),i=r.skills,o=n.stamp;if(e.name.length>0){let r=new Set(i.map(e=>e.frontmatter.name)),a=Array.from(new Set(e.name)),s=a.filter(e=>!r.has(e));if(s.length>0){let e=s.length===1?`Skill`:`Skills`,t=s.map(e=>JSON.stringify(e)).join(`, `);throw Error(`${e} ${t} not found in source directory.\n`+q({source:i}))}let c=new Set(a);for(let e of i)c.has(e.frontmatter.name)&&J(e,o,n,t);return}if(i.length===0){U(r,n.sourceDir)?a.info(`No skills installed (source directory scan failed; see warnings).`):a.info(`No skills found in source directory.`);return}for(let e of i)J(e,o,n,t)}return n.verbose.disabled?r({name:n.commandNames.add.name,...n.commandNames.add.aliases.length>0?{aliases:n.commandNames.add.aliases}:{},description:n.descriptions.add,args:t({name:e.stringArray(i)},{unknownKeys:n.unknownKeys}),run(e){o(e,G(e,`verbose`))}}):r({name:n.commandNames.add.name,...n.commandNames.add.aliases.length>0?{aliases:n.commandNames.add.aliases}:{},description:n.descriptions.add,args:t({name:e.stringArray(i),verbose:e.boolean(Te(n))},{unknownKeys:n.unknownKeys}),run(e){o(e,e.verbose)}})}function Oe(n){return r({name:n.commandNames.remove.name,...n.commandNames.remove.aliases.length>0?{aliases:n.commandNames.remove.aliases}:{},description:n.descriptions.remove,args:t({name:e.optionalString({positional:!0,description:`Skill name to remove (default: all)`,placeholder:`NAME`})},{unknownKeys:n.unknownKeys}),run(e){let t=W(n),r=t.skills,i=n.stamp;if(e.name){if(r.some(t=>t.frontmatter.name===e.name)&&Me(r,e.name),!Y(e.name,i,n.cwd,n.sourceDir)){if(K(e.name,n.cwd))a.info(`${e.name} is installed without a ${A} stamp this CLI recognises; refusing to remove. Remove .agents/skills/${e.name} manually if intended.`);else{let t=new Set(Ie(i,n.cwd,n.sourceDir));a.info(`${e.name} is not installed; nothing to remove.\n`+q({installed:t}))}}return}if(r.length===0){U(t,n.sourceDir)?a.info(`No skills found (source directory scan failed; see warnings); nothing to remove.`):a.info(`No skills found in source directory; nothing to remove.`);return}let o=0;for(let e of r)Y(e.frontmatter.name,i,n.cwd,n.sourceDir)&&(o+=1);o===0&&a.info(`No installed skills owned by this CLI; nothing to remove.`)}})}function ke(e,t,n,r){let i;try{i=L(e,n)}catch(t){return a.warn(`Failed to read ownership for installed skill ${e}: ${Ae(t)}`),`unreadable`}if(i===t)return`installed`;if(i!==null)return`foreign`;if(!I(e,n)){let t=C(n,O,e);return Z(t)&&X(t,r)?`missing`:K(e,n)?`unstamped`:`not-installed`}return`unstamped`}function Ae(e){return e instanceof Error?e.message:String(e)}function K(e,t){try{return c(C(t,O,e)),!0}catch{return!1}}function je(n){function i(e){let t=W(n,{silentStdout:e}),r=t.skills,i=n.stamp;if(e){console.log(JSON.stringify(r.map(e=>({name:e.frontmatter.name,description:e.frontmatter.description,owner:e.frontmatter.metadata?.[`politty-cli`]??null,expectedOwner:i,status:ke(e.frontmatter.name,i,n.cwd,n.sourceDir),sourcePath:e.sourcePath}))));return}if(r.length===0){U(t,n.sourceDir)?a.info(`Source directory scan failed; see warnings.`):a.info(`No skills found in source directory.`);return}a.info(`Available skills:`);for(let e of r){let t=ke(e.frontmatter.name,i,n.cwd,n.sourceDir);a.info(` ${e.frontmatter.name.padEnd(20)} ${t.padEnd(14)} ${e.frontmatter.description}`)}}return n.json.disabled?r({name:`list`,description:n.descriptions.list,args:t({},{unknownKeys:n.unknownKeys}),run(e){i(G(e,`json`))}}):r({name:`list`,description:n.descriptions.list,args:t({json:e.boolean({description:`Output as JSON`})},{unknownKeys:n.unknownKeys}),run(e){i(e.json)}})}function Me(e,t){let n=e.find(e=>e.frontmatter.name===t);if(!n){let n=e.map(e=>e.frontmatter.name).join(`, `)||`<none>`;throw Error(`Skill "${t}" not found in source directory. Available: ${n}`)}return n}function q(e){let t=[];return e.source!==void 0&&t.push(` Source: ${e.source.map(e=>e.frontmatter.name).join(`, `)||`<none>`}`),e.installed!==void 0&&t.push(` Installed: ${[...e.installed].sort().join(`, `)||`<none>`}`),t.join(`
2
2
  `)}function J(e,t,n,r){let o=e.frontmatter.name,s=n.cwd,c=n.mode,l=e.frontmatter.metadata?.[`politty-cli`]??null;if(l!==t)throw Error(`Refusing to install "${o}": source SKILL.md declares metadata.${A}=${JSON.stringify(l)}, expected ${JSON.stringify(t)}.`);let u=L(o,s);if(u!==null&&u!==t)throw Error(`Refusing to install "${o}": owned by ${JSON.stringify(u)}, not ${JSON.stringify(t)}. Check metadata.${A} in .agents/skills/${o}/SKILL.md.`);let d=C(s,O,o),f=Z(d)&&X(d,n.sourceDir);if(u===null&&K(o,s)&&!f)throw Error(`Refusing to install "${o}": .agents/skills/${o} exists without a ${A} stamp, so it was not installed by this CLI. Remove it manually (or add the stamp to take ownership) before running "skills add".`);if(le(e,s,c===void 0?{}:{mode:c}),a.info(`${i.success} Installed ${o}`),r){let e=c??`symlink`;a.info(` mode=${e} path=${d}`)}}function Y(e,t,n,r){let o=L(e,n);if(o===null)return Ne(e,n,r)?(a.info(`${i.success} Removed ${e} (broken symlink)`),!0):!1;if(o!==t)throw Error(`Refusing to remove "${e}": owned by ${JSON.stringify(o)}, not ${JSON.stringify(t)}. Check metadata.${A} in .agents/skills/${e}/SKILL.md.`);return fe(e,n,{expectedOwnership:t}),a.info(`${i.success} Removed ${e}`),!0}function Ne(e,t,n){let r=C(t,O,e);if(!Z(r)||!X(r,n))return!1;for(let n of k){let i=C(t,n,e);Z(i)&&Fe(i,r)&&_(i)}return _(r),!0}function X(e,t){let n;try{n=p(e)}catch{return!1}let r=b(n)?n:C(y(e),n),i=Pe(C(t)),a=Pe(r),o=S(i,a);return!(b(o)||o===`..`||o.startsWith(`..${w}`))}function Pe(e){let t=e,n=[];for(;;)try{let e=m(t);return n.length===0?e:C(e,...n.reverse())}catch{let r=y(t);if(r===t)return e;n.push(t.slice(r.length).replace(/^[/\\]+/,``)),t=r}}function Fe(e,t){let n;try{n=p(e)}catch{return!1}let r=b(n)?n:C(y(e),n);if(r===t)return!0;try{return m(r)===m(t)}catch{return!1}}function Z(e){let t;try{t=c(e)}catch{return!1}return t.isSymbolicLink()?!s(e):!1}function Ie(e,t,n){let r=C(t,O),i=[],o;try{o=f(r,{withFileTypes:!0})}catch(e){let t=e.code;return t===`ENOENT`||t===`ENOTDIR`||a.warn(`Failed to enumerate ${r}: ${e instanceof Error?e.message:String(e)}`),i}for(let s of o){if(!s.isDirectory()&&!s.isSymbolicLink()||s.name.length<1||s.name.length>64||!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(s.name))continue;let o;try{o=L(s.name,t)}catch(e){a.warn(`Failed to read ownership for ${s.name}: ${e instanceof Error?e.message:String(e)}`);continue}if(o===e){i.push(s.name);continue}let c=C(r,s.name);o===null&&Z(c)&&X(c,n)&&i.push(s.name)}return i}const Le=[`add`,`install`],Re=[`remove`,`uninstall`],Q={skills:`Manage agent skills`,sync:`Remove and reinstall all skills from source`,add:`Install skills from source`,remove:`Remove installed skills`,list:`List available skills from source`},ze=/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/,Be=[`.git`,`package.json`];function Ve(e,t){return{sourceDir:e.sourceDir,package:e.package,mode:e.mode,cwd:Ue(e.cwd),excludeAlias:Ge(e.flags?.exclude?.alias),verbose:qe(e.flags?.verbose,e.globalArgs),json:{disabled:$(e.globalArgs,`json`)},commandNames:{add:Ke(e.commandMap?.add,Le,`add`),remove:Ke(e.commandMap?.remove,Re,`remove`)},unknownKeys:e.unknownKeys??`strip`,descriptionAppend:Je(e.descriptionAppend,t),stamp:`${e.package}:${t}`,descriptions:He(e.descriptions)}}function He(e){return{skills:e?.skills??Q.skills,sync:e?.sync??Q.sync,add:e?.add??Q.add,remove:e?.remove??Q.remove,list:e?.list??Q.list}}function Ue(e){if(e!==void 0)return C(e);let t=process.cwd();return We(t)??t}function We(e){let t=C(e);for(;;){for(let e of Be)if(s(C(t,e)))return t;let e=y(t);if(e===t)return null;t=e}}function Ge(e){if(e!==!1)return typeof e==`string`?e:`x`}function Ke(e,t,n){let r=e??t;if(r.length===0)throw Error(`SkillCommandOptions.commandMap.${n} must include at least one name.`);let i=r.find(e=>!ze.test(e));if(i!==void 0)throw Error(`SkillCommandOptions.commandMap.${n} contains an invalid entry ${JSON.stringify(i)}. Names/aliases must start with an alphanumeric character and contain only alphanumeric characters, hyphens, or underscores.`);return{name:r[0],aliases:r.slice(1)}}function qe(e,t){return{alias:e?.alias===!1?void 0:e?.alias??`v`,disabled:$(t,`verbose`)}}function $(e,t){return e?n(e).fields.some(e=>e.name===t&&!e.positional&&e.type===`boolean`):!1}function Je(e,t){return e===!1?!1:typeof e==`string`?e:`Manage agent skills with \`${t} skills <add|sync|remove|list>\`.`}const Ye=[`parse-failed`,`name-mismatch`,`read-failed`,`missing-source`];function Xe(e,t){if(e.subCommands&&Object.hasOwn(e.subCommands,`skills`))throw Error(`withSkillCommand: command "${e.name}" already defines a "skills" subcommand.`);let n=Ve(t,e.name),i=n.commandNames.add.name,a=n.commandNames.remove.name,o=[`sync`,`list`,i,...n.commandNames.add.aliases,a,...n.commandNames.remove.aliases],s=o.find((e,t)=>o.indexOf(e)!==t);if(s)throw Error(`withSkillCommand: commandMap produced duplicate subcommand name/alias "${s}".`);let c=r({name:`skills`,description:n.descriptions.skills,subCommands:{sync:Ee(n),[i]:De(n),[a]:Oe(n),list:je(n)}});return{...e,description:Ze(e.description,n.descriptionAppend),subCommands:{...e.subCommands,skills:c}}}function Ze(e,t){return t===!1||t===``?e:e?e.endsWith(t)?e:`${e}\n\n${t}`:t}const Qe=T.object({name:T.string().min(1).max(64).regex(/^[a-z0-9]+(-[a-z0-9]+)*$/,{message:`name must be lowercase alphanumerics separated by single hyphens`}),description:T.string().min(1).max(1024),license:T.string().min(1).optional(),compatibility:T.string().max(500).optional(),metadata:T.record(T.string(),T.string()).optional(),"allowed-tools":T.string().optional()}).passthrough();export{A as OWNERSHIP_METADATA_KEY,Ye as SCAN_ERROR_REASONS,I as hasInstalledSkill,le as installSkill,D as parseFrontmatter,ce as parseSkillMd,L as readInstalledOwnership,B as scanSourceDir,Qe as skillFrontmatterSchema,fe as uninstallSkill,Xe as withSkillCommand};
@@ -1,3 +1,3 @@
1
- import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-Mbdt0bmN.js";import{s as r}from"./subcommand-router-D8GTMXYL.js";import{t as i}from"./schema-BiUP_KyV.js";import{existsSync as a,readFileSync as o}from"node:fs";import{join as s}from"node:path";import{spawn as c}from"node:child_process";function l(){let e=(process.env.SHELL||``).split(`/`).pop()?.toLowerCase()||``;return e.includes(`bash`)?`bash`:e.includes(`zsh`)?`zsh`:e.includes(`fish`)?`fish`:null}function u(e){return`${process.env.XDG_CACHE_HOME??`${process.env.HOME??``}/.cache`}/${e}`}function d(e,t,n){if(t===`fish`){let t=process.env.XDG_CONFIG_HOME??`${process.env.HOME??``}/.config`;return s(t,`fish`,`completions`,`${e}.fish`)}let r=n??u(e);return s(r,`completion.${t}`)}function f(e){try{if(!a(e))return null;let t=o(e,`utf8`).split(`
1
+ import{a as e,i as t}from"./schema-extractor-DU0Vuhbd.js";import{n}from"./command-tLHaJHe6.js";import{s as r}from"./subcommand-router-D8GTMXYL.js";import{t as i}from"./schema-BiUP_KyV.js";import{existsSync as a,readFileSync as o}from"node:fs";import{join as s}from"node:path";import{spawn as c}from"node:child_process";function l(){let e=(process.env.SHELL||``).split(`/`).pop()?.toLowerCase()||``;return e.includes(`bash`)?`bash`:e.includes(`zsh`)?`zsh`:e.includes(`fish`)?`fish`:null}function u(e){return`${process.env.XDG_CACHE_HOME??`${process.env.HOME??``}/.cache`}/${e}`}function d(e,t,n){if(t===`fish`){let t=process.env.XDG_CONFIG_HOME??`${process.env.HOME??``}/.config`;return s(t,`fish`,`completions`,`${e}.fish`)}let r=n??u(e);return s(r,`completion.${t}`)}function f(e){try{if(!a(e))return null;let t=o(e,`utf8`).split(`
2
2
  `,6).join(`
3
- `).match(/^# politty-bin-sig: (\S+)/m);return t?t[1]:null}catch{return null}}function p(e,t){return f(d(e.programName,t,e.cacheDir))!==null}function m(e,t){try{c(process.execPath,[e,`__refresh-completion`,t],{detached:!0,stdio:`ignore`}).unref()}catch{}}const h=t({shell:e.optionalEnum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell type (bash, zsh, or fish)`,placeholder:`SHELL`}),instructions:e.boolean({alias:`i`,description:`Show installation instructions`}),loader:e.boolean({description:`Print just the rc loader snippet (bash/zsh). Add it to ~/.bashrc or ~/.zshrc; it auto-regenerates the cache when the binary changes.`}),install:e.boolean({description:`Write the completion script to its on-disk cache (bash/zsh) or autoload location (fish) instead of printing it.`}),static:e.boolean({description:`Generate the legacy static completion script with command metadata baked in.`}),dispatcher:e.boolean({description:`Generate the runtime dispatcher completion script. This is the default.`}),worker:e.boolean({description:`Generate an internal static worker artifact for dispatcher mode.`})}),g=t({shell:e.enum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell to refresh`,placeholder:`SHELL`}),target:e.optionalString({positional:!0,description:`Existing politty-generated completion file to refresh`,placeholder:`TARGET`}),static:e.boolean({description:`Refresh using the legacy static completion script mode.`}),worker:e.boolean({description:`Refresh an internal static worker completion script.`})}),_=t({shell:e.enum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell worker to locate`,placeholder:`SHELL`})});function v(e,t){let{programName:a,globalArgsSchema:o,cacheDir:s,programVersion:c,bundledWorker:l}=typeof t==`string`?{programName:t}:t??{},u=a??e.name,d={...s!==void 0&&{cacheDir:s},...c!==void 0&&{programVersion:c},...o!==void 0&&{globalArgsSchema:o},...l!==void 0&&{bundledWorker:l}},f={...e};return f.subCommands={...e.subCommands,completion:r(n({name:`completion`,description:`Generate shell completion script`,args:h,run(){}}),()=>import(`./completion-DUMcvXkT.js`).then(e=>e.createCompletionCommand(f,a,o,d))),__complete:r(n({name:`__complete`,args:i,run(){}}),()=>import(`./dynamic-CMtee4tD.js`).then(e=>e.createDynamicCompleteCommand(f,a,o))),"__refresh-completion":r(n({name:`__refresh-completion`,description:`(internal) Refresh the on-disk completion cache if stale.`,args:g,run(){}}),()=>import(`./completion-DUMcvXkT.js`).then(e=>e.createRefreshCompletionCommand(f,u,d))),"__completion-worker-path":r(n({name:`__completion-worker-path`,description:`(internal) Print the bundled completion worker path when available.`,args:_,run(){}}),()=>import(`./completion-DUMcvXkT.js`).then(e=>e.createCompletionWorkerPathCommand(u,d)))},f.runMainHook=e=>{y(e,{programName:u,...s!==void 0&&{cacheDir:s}})},f}function y(e,t){if(process.env.POLITTY_NO_COMPLETION_REFRESH)return;let n=e.find(e=>!e.startsWith(`-`));if(n===`__complete`||n===`__refresh-completion`||n===`__completion-worker-path`||n===`completion`)return;let r=l();if(!r)return;let i=process.argv[1];i&&p(t,r)&&m(i,r)}export{d as a,_ as i,h as n,f as o,g as r,l as s,v as t};
3
+ `).match(/^# politty-bin-sig: (\S+)/m);return t?t[1]:null}catch{return null}}function p(e,t){return f(d(e.programName,t,e.cacheDir))!==null}function m(e,t){try{c(process.execPath,[e,`__refresh-completion`,t],{detached:!0,stdio:`ignore`}).unref()}catch{}}const h=t({shell:e.optionalEnum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell type (bash, zsh, or fish)`,placeholder:`SHELL`}),instructions:e.boolean({alias:`i`,description:`Show installation instructions`}),loader:e.boolean({description:`Print just the rc loader snippet (bash/zsh). Add it to ~/.bashrc or ~/.zshrc; it auto-regenerates the cache when the binary changes.`}),install:e.boolean({description:`Write the completion script to its on-disk cache (bash/zsh) or autoload location (fish) instead of printing it.`}),static:e.boolean({description:`Generate the legacy static completion script with command metadata baked in.`}),dispatcher:e.boolean({description:`Generate the runtime dispatcher completion script. This is the default.`}),worker:e.boolean({description:`Generate an internal static worker artifact for dispatcher mode.`})}),g=t({shell:e.enum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell to refresh`,placeholder:`SHELL`}),target:e.optionalString({positional:!0,description:`Existing politty-generated completion file to refresh`,placeholder:`TARGET`}),static:e.boolean({description:`Refresh using the legacy static completion script mode.`}),worker:e.boolean({description:`Refresh an internal static worker completion script.`})}),_=t({shell:e.enum([`bash`,`zsh`,`fish`],{positional:!0,description:`Shell worker to locate`,placeholder:`SHELL`})});function v(e,t){let{programName:a,globalArgsSchema:o,cacheDir:s,programVersion:c,bundledWorker:l}=typeof t==`string`?{programName:t}:t??{},u=a??e.name,d={...s!==void 0&&{cacheDir:s},...c!==void 0&&{programVersion:c},...o!==void 0&&{globalArgsSchema:o},...l!==void 0&&{bundledWorker:l}},f={...e};return f.subCommands={...e.subCommands,completion:r(n({name:`completion`,description:`Generate shell completion script`,args:h,run(){}}),()=>import(`./completion-OEWfekOk.js`).then(e=>e.createCompletionCommand(f,a,o,d))),__complete:r(n({name:`__complete`,args:i,run(){}}),()=>import(`./dynamic-DPbDLfHB.js`).then(e=>e.createDynamicCompleteCommand(f,a,o))),"__refresh-completion":r(n({name:`__refresh-completion`,description:`(internal) Refresh the on-disk completion cache if stale.`,args:g,run(){}}),()=>import(`./completion-OEWfekOk.js`).then(e=>e.createRefreshCompletionCommand(f,u,d))),"__completion-worker-path":r(n({name:`__completion-worker-path`,description:`(internal) Print the bundled completion worker path when available.`,args:_,run(){}}),()=>import(`./completion-OEWfekOk.js`).then(e=>e.createCompletionWorkerPathCommand(u,d)))},f.runMainHook=e=>{y(e,{programName:u,...s!==void 0&&{cacheDir:s}})},f}function y(e,t){if(process.env.POLITTY_NO_COMPLETION_REFRESH)return;let n=e.find(e=>!e.startsWith(`-`));if(n===`__complete`||n===`__refresh-completion`||n===`__completion-worker-path`||n===`completion`)return;let r=l();if(!r)return;let i=process.argv[1];i&&p(t,r)&&m(i,r)}export{d as a,_ as i,h as n,f as o,g as r,l as s,v as t};
@@ -1,4 +1,4 @@
1
- import { Q as UnknownKeysMode, b as ArgsSchema, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, n as ArgMeta, v as AnyCommand } from "./arg-registry-BzQ-y-e0.js";
1
+ import { Q as UnknownKeysMode, b as ArgsSchema, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, n as ArgMeta, v as AnyCommand } from "./arg-registry-C-fvuAAg.js";
2
2
  //#region ../core/src/adapter/internal-args.d.ts
3
3
  /** Runtime brand distinguishing internal descriptors from library schemas. */
4
4
  declare const INTERNAL_ARGS_BRAND = "__polittyInternalArgs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@politty/zod",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "A lightweight CLI framework inspired by citty with zod v4 registry integration for type-safe metadata management",
5
5
  "keywords": [
6
6
  "argument-parser",
@@ -1 +0,0 @@
1
- import{t as e}from"./cli-main-DYdp1fLi.js";export{e as runPolittyCli};
@@ -1 +0,0 @@
1
- function e(e){return{name:e.name,description:e.description,aliases:e.aliases,args:e.args,subCommands:e.subCommands,setup:e.setup,run:e.run,cleanup:e.cleanup,notes:e.notes,examples:e.examples}}function t(){return e}export{e as n,t};
@@ -1 +0,0 @@
1
- import"./with-completion-command-DDohm8U6.js";import"./dynamic-CrnlveHj.js";import{c as e,n as t,r as n,t as r}from"./completion-D8DMrPqg.js";export{r as createCompletionCommand,t as createCompletionWorkerPathCommand,n as createRefreshCompletionCommand,e as generateBundledCompletionWorker};
@@ -1 +0,0 @@
1
- import{t as e}from"./dynamic-CrnlveHj.js";export{e as createDynamicCompleteCommand};
@@ -1,29 +0,0 @@
1
- import{a as e,i as t,r as n,t as r}from"./field-meta-COGya7xp.js";import{n as i,o as a,s as o,t as s}from"./schema-extractor-DU0Vuhbd.js";import{n as c}from"./compile-cache-VuUbFWIo.js";import{n as l,r as u,t as d}from"./log-collector-DICKib75.js";import{a as f,c as p,n as m,o as h,r as g,t as _}from"./subcommand-router-D8GTMXYL.js";import{a as v,i as y}from"./logger-CJsyJ8sb.js";import{stripVTControlCharacters as b}from"node:util";async function x(e,t,n={}){let r,i,a=n.captureLogs??!1?d():null;a?.start();let o={args:t},s={args:t,error:r},c;n.handleSignals&&(c=async t=>{c&&(process.off(`SIGINT`,c),process.off(`SIGTERM`,c));let r=Error(`Process interrupted`);if(s.error=r,e.cleanup)try{await e.cleanup(s)}catch(e){console.error(`Error during signal cleanup:`,e)}if(n.globalCleanup)try{await n.globalCleanup({error:r})}catch(e){console.error(`Error during global signal cleanup:`,e)}a?.stop(),process.stdout.writableNeedDrain&&await new Promise(e=>{let t=setTimeout(()=>{process.stdout.off(`drain`,n),e()},200),n=()=>{clearTimeout(t),e()};process.stdout.once(`drain`,n)}),process.exit(1)},process.on(`SIGINT`,c),process.on(`SIGTERM`,c));try{e.setup&&await e.setup(o),e.run&&(i=await e.run(t))}catch(e){r=e instanceof Error?e:Error(String(e))}finally{c&&(process.off(`SIGINT`,c),process.off(`SIGTERM`,c))}if(e.cleanup){s.error=r;try{await e.cleanup(s)}catch(e){r||=e instanceof Error?e:Error(String(e))}}a?.stop();let f=n.existingLogs??l(),p=a?.getLogs()??l(),m=u(f,p);return r?{success:!1,error:r,exitCode:1,logs:m}:{success:!0,result:i,exitCode:0,logs:m}}function S(e){return e<=31||e>=127&&e<=159||e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071||e===8203||e>=8204&&e<=8207||e===65279||e>=65024&&e<=65039||e>=917760&&e<=917999}function C(e){return e>=4352&&e<=4447||e>=11904&&e<=12350||e>=12353&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=40960&&e<=42191||e>=43360&&e<=43391||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110959||e>=127488&&e<=127569||e>=131072&&e<=262141||e>=9728&&e<=10175||e>=126976&&e<=129791}function w(e){let t=!1,n=!1,r=!1;for(let i of e){let e=i.codePointAt(0);if(e===65039){r=!0;continue}S(e)||(t=!0,C(e)&&(n=!0))}return t?n||r?2:1:0}const T=(()=>{try{return new Intl.Segmenter(`en`,{granularity:`grapheme`})}catch{return}})();function E(e){if(e.length===0)return 0;let t=e.includes(`\x1B`)||e.includes(`›`)?b(e):e,n=0;if(T)for(let{segment:e}of T.segment(t))n+=w(e);else for(let e of t)n+=w(e);return n}function D(e){let t=[],n=e.replace(/`([^`]+)`/g,(e,n)=>{let r=t.length;return t.push(y.cyan(n)),`\x00CODE${r}\x00`});return n=n.replace(/\*\*(.+?)\*\*/g,(e,t)=>y.bold(t)),n=n.replace(/__(.+?)__/g,(e,t)=>y.bold(t)),n=n.replace(/\*(.+?)\*/g,(e,t)=>y.italic(t)),n=n.replace(/(?<!\w)_(.+?)_(?!\w)/g,(e,t)=>y.italic(t)),n=n.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`${y.underline(t)} ${y.dim(`(${n})`)}`),n=n.replace(/\x00CODE(\d+)\x00/g,(e,n)=>t[Number(n)]),n}function O(e){return re(e.split(`
2
- `)).map(ce).join(`
3
-
4
- `)}const k=/^(#{1,6})\s+(.+)$/,A=/^(?:---+|\*\*\*+|___+)\s*$/,j=/^>\s?(.*)$/,M=/^-\s+(.+)$/,N=/^(\d+)[.)]\s+(.+)$/,ee=/^(`{3,}|~{3,})(\S*)\s*$/,te=/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*$/,P=/^\|(.+)\|$/,ne=/^\|(\s*:?-+:?\s*\|)+$/;function re(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.trim()===``){n++;continue}let i=r.match(ee);if(i){let r=i[1],a=i[2]??``,o=[];for(n++;n<e.length;){if(e[n].startsWith(r.charAt(0).repeat(r.length))&&e[n].trim()===r.charAt(0).repeat(Math.max(r.length,e[n].trim().length))){n++;break}o.push(e[n]),n++}t.push({type:`code`,lang:a,lines:o});continue}let a=r.match(k);if(a){t.push({type:`heading`,level:a[1].length,content:a[2]}),n++;continue}if(A.test(r)){t.push({type:`hr`}),n++;continue}if(j.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(j);if(t)r.push(t[1]),n++;else break}if(r.length>0){let e=r[0].match(te);if(e){let n=r.slice(1).filter(e=>e!==``);t.push({type:`alert`,alertType:e[1],lines:n});continue}}t.push({type:`blockquote`,lines:r});continue}if(M.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(M);if(t)r.push(t[1]),n++;else break}t.push({type:`ul`,items:r});continue}let o=r.match(N);if(o){let r=Number(o[1]),i=[];for(;n<e.length;){let t=e[n].match(N);if(t)i.push(t[2]),n++;else break}t.push({type:`ol`,items:i,start:r});continue}if(P.test(r)&&n+1<e.length&&ne.test(e[n+1])){let i=ie(r),a=ae(e[n+1]);n+=2;let o=[];for(;n<e.length&&P.test(e[n]);)o.push(ie(e[n])),n++;t.push({type:`table`,headers:i,alignments:a,rows:o});continue}let s=[];for(;n<e.length;){let t=e[n];if(t.trim()===``||k.test(t)||A.test(t)||j.test(t)||M.test(t)||N.test(t)||ee.test(t)||P.test(t)&&n+1<e.length&&ne.test(e[n+1]))break;s.push(t),n++}s.length>0&&t.push({type:`paragraph`,lines:s})}return t}function ie(e){return e.slice(1,-1).split(`|`).map(e=>e.trim())}function ae(e){return e.slice(1,-1).split(`|`).map(e=>{let t=e.trim();return t.startsWith(`:`)&&t.endsWith(`:`)?`center`:t.endsWith(`:`)?`right`:`left`})}function oe(e,t,n){let r=E(e),i=Math.max(0,t-r);if(n===`right`)return` `.repeat(i)+e;if(n===`center`){let t=Math.floor(i/2);return` `.repeat(t)+e+` `.repeat(i-t)}return e+` `.repeat(i)}const se={NOTE:{icon:`ℹ`,label:`Note`,styleFn:y.cyan},TIP:{icon:`💡`,label:`Tip`,styleFn:y.green},IMPORTANT:{icon:`❗`,label:`Important`,styleFn:y.magenta},WARNING:{icon:`⚠`,label:`Warning`,styleFn:y.yellow},CAUTION:{icon:`🔴`,label:`Caution`,styleFn:y.red}};function ce(e){switch(e.type){case`heading`:return y.green(y.bold(D(e.content)));case`hr`:return y.dim(`─`.repeat(40));case`blockquote`:{let t=y.dim(`│ `);return e.lines.map(e=>`${t}${D(e)}`).join(`
5
- `)}case`alert`:{let{icon:t,label:n,styleFn:r}=se[e.alertType],i=r(y.bold(`│`))+` `,a=`${i}${r(t)} ${r(n)}`;return e.lines.length===0?a:`${a}\n${e.lines.map(e=>`${i}${D(e)}`).join(`
6
- `)}`}case`ul`:return e.items.map(e=>`${y.dim(`•`)} ${D(e)}`).join(`
7
- `);case`ol`:{let t=e.start+e.items.length-1,n=String(t).length;return e.items.map((t,r)=>{let i=String(e.start+r).padStart(n,` `);return`${y.dim(`${i}.`)} ${D(t)}`}).join(`
8
- `)}case`table`:{let t=e.headers.length,n=e.headers.map(e=>D(e)),r=e.rows.map(e=>Array.from({length:t},(t,n)=>D(e[n]??``))),i=n.map((e,t)=>{let n=E(e),i=r.map(e=>E(e[t]));return Math.max(n,...i)}),a=y.dim(`│`),o=y.dim(`┌─${i.map(e=>`─`.repeat(e)).join(`─┬─`)}─┐`),s=y.dim(`├─${i.map(e=>`─`.repeat(e)).join(`─┼─`)}─┤`),c=y.dim(`└─${i.map(e=>`─`.repeat(e)).join(`─┴─`)}─┘`);return[o,`${a} ${n.map((t,n)=>y.bold(oe(t,i[n],e.alignments[n]??`left`))).join(` ${a} `)} ${a}`,s,...r.map(t=>{let n=t.map((t,n)=>oe(t,i[n],e.alignments[n]??`left`));return`${a} ${n.join(` ${a} `)} ${a}`}),c].join(`
9
- `)}case`code`:return e.lines.map(e=>` ${y.yellow(e)}`).join(`
10
- `);case`paragraph`:return D(e.lines.join(` `))}}const F={help:`Show help`,helpAll:`Show help with all subcommand options`,version:`Show version`};function le(e){return!e.startsWith(`__`)}function I(e){return Object.entries(e).filter(([e])=>le(e))}function ue(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?t.commandPath.join(` `):e.name??`command`}function de(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?`${t.rootName} ${t.commandPath.join(` `)}`:e.name??`command`}function fe(e,t){let n=[],r=de(e,t);n.push(y.commandName(r)),t?.globalExtracted?.fields.length&&n.push(y.placeholder(`[global options]`));let a=i(e);if(a){let t=a.fields.filter(e=>e.positional);a.fields.filter(e=>!e.positional).length>0&&n.push(y.placeholder(`[options]`)),e.subCommands&&I(e.subCommands).length>0&&(e.run?n.push(y.placeholder(`[command]`)):n.push(y.option(`<command>`)));for(let e of t)e.required?n.push(y.option(`<${e.name}>`)):n.push(y.placeholder(`[${e.name}]`))}else e.subCommands&&I(e.subCommands).length>0&&(e.run?n.push(y.placeholder(`[command]`)):n.push(y.option(`<command>`)));return n.join(` `)}function pe(e,t={},n){let a=[],o={help:t.help??F.help,helpAll:t.helpAll??F.helpAll,version:t.version??F.version},s=i(e),c=s?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,l=s?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1;if(c?a.push(B(y.option(`--help`),o.help)):a.push(B(`${y.option(`-h`)}, ${y.option(`--help`)}`,o.help)),l?a.push(B(y.option(`--help-all`),o.helpAll)):a.push(B(`${y.option(`-H`)}, ${y.option(`--help-all`)}`,o.helpAll)),n?.rootVersion&&a.push(B(y.option(`--version`),o.version)),!s)return a.join(`
11
- `);if(s.schemaType===`discriminatedUnion`&&s.discriminator)return me(s,e,a);if(s.schemaType===`union`&&s.unionOptions||s.schemaType===`xor`&&s.unionOptions)return he(s,e,a);let u=s.fields.filter(e=>!e.positional);for(let e of u){let t=R(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${y.required(`(required)`)}`);let r=z(e.env);r&&(n+=` ${r}`),a.push(B(t,n));let i=L(e);i&&a.push(i)}return a.join(`
12
- `)}function L(e,t=0,n=0){return!e.negationDisplay||!e.negationDescription?null:B(y.option(`--${e.negationDisplay}`),`${e.negationDescription} ${y.dim(`(↔ --${e.cliName})`)}`,t,n)}function me(e,t,n){let r=e.discriminator,i=e.variants??[],a=e.fields.find(e=>e.name===r);if(a){let t=i.map(e=>e.discriminatorValue).join(`|`),o=`${y.option(`--${r}`)} ${y.placeholder(`<${t}>`)}`,s=e.description??a.description??`Action to perform`;n.push(B(o,s))}let o=new Set,s=new Set;for(let e of i)for(let t of e.fields)s.add(t.name);for(let e of s)e!==r&&i.every(t=>t.fields.some(t=>t.name===e))&&o.add(e);for(let t of o){let r=e.fields.find(e=>e.name===t);if(r&&!r.positional){let e=R(r),t=r.description??``;r.defaultValue!==void 0&&(t+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let i=z(r.env);i&&(t+=` ${i}`),n.push(B(e,t));let a=L(r);a&&n.push(a)}}for(let e of i){let t=e.fields.filter(e=>e.name!==r&&!o.has(e.name)&&!e.positional);if(t.length>0){n.push(``);let i=e.description?`${y.dim(`When`)} ${y.option(r)}=${y.bold(e.discriminatorValue)}: ${e.description}`:`${y.dim(`When`)} ${y.option(r)}=${y.bold(e.discriminatorValue)}:`;n.push(i);for(let e of t){let t=R(e),r=e.description??``;e.defaultValue!==void 0&&(r+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(r+=` ${y.required(`(required)`)}`);let i=z(e.env);i&&(r+=` ${i}`),n.push(B(t,r,1));let a=L(e,1);a&&n.push(a)}}}return n.join(`
13
- `)}function he(e,t,n){let r=e.unionOptions??[],i=new Set,a=new Set;for(let e of r)for(let t of e.fields)a.add(t.name);for(let e of a)r.every(t=>t.fields.some(t=>t.name===e))&&i.add(e);for(let t of i){let r=e.fields.find(e=>e.name===t);if(r&&!r.positional){let e=R(r),t=r.description??``;r.defaultValue!==void 0&&(t+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let i=z(r.env);i&&(t+=` ${i}`),n.push(B(e,t));let a=L(r);a&&n.push(a)}}for(let e=0;e<r.length;e++){let t=r[e];if(!t)continue;let a=t.fields.filter(e=>!i.has(e.name)&&!e.positional),o=t.description??`Variant ${e+1}`;if(a.length>0){n.push(``),n.push(` ${y.bold(`${o}:`)}`);for(let e of a){let t=R(e),r=e.description??``;e.defaultValue!==void 0&&(r+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(r+=` ${y.required(`(required)`)}`);let i=z(e.env);i&&(r+=` ${i}`),n.push(B(t,r,1));let a=L(e,1);a&&n.push(a)}}else n.push(``),n.push(` ${y.bold(`${o}:`)}`),n.push(` ${y.dim(y.italic(`no options`))}`)}return n.join(`
14
- `)}function R(e){let t=[];if(e.alias)for(let n of e.alias)n.length===1&&t.push(y.option(`-${n}`));let n=y.option(`--${e.cliName}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();n+=` ${y.placeholder(`<${t}>`)}`}if(t.push(n),e.alias){for(let n of e.alias)if(n.length>1){let r=y.option(`--${n}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();r+=` ${y.placeholder(`<${t}>`)}`}t.push(r)}}let r=t.join(`, `);return e.type===`boolean`&&e.negationDisplay&&!e.negationDescription?`${r} / ${y.option(`--${e.negationDisplay}`)}`:r}function z(e){if(!e)return``;let t=Array.isArray(e)?e:[e];return y.dim(`[env: ${t.join(`, `)}]`)}function ge(e){return e.replace(/\x1B\[[0-9;]*m/g,``)}function _e(e,t){let n=ge(e).length,r=Math.max(0,t-n);return e+` `.repeat(r)}function ve(e,t){if(!e.includes(`
15
- `))return e;let n=` `.repeat(t);return e.split(`
16
- `).join(`\n${n}`)}function B(e,t,n=0,r=0){let i=` `.repeat(n),a=ge(e).length,o=32-n*2+r,s=o+2+n*2,c=ve(t,s);return a>=o?`${i} ${e}\n${` `.repeat(s)}${c}`:`${i} ${_e(e,o)}${c}`}function ye(e,t=0,n=0){let r=R(e),i=e.description??``;e.defaultValue!==void 0&&(i+=` ${y.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(i+=` ${y.required(`(required)`)}`);let a=z(e.env);return a&&(i+=` ${a}`),B(r,i,t,n)}function be(e){let t=[];for(let n of e.fields){if(n.positional)continue;t.push(ye(n));let e=L(n);e&&t.push(e)}return t.join(`
17
- `)}function xe(e,t){let n=[],r=i(e);if(r){let e=r.fields.filter(e=>!e.positional);for(let r of e){let e=R(r),i=r.description??``;r.defaultValue!==void 0&&(i+=` ${y.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let a=z(r.env);a&&(i+=` ${a}`),n.push(B(e,i,t,2));let o=L(r,t,2);o&&n.push(o)}}return n}function Se(e,t,n){let r=[];for(let[i,a]of I(e)){let e=p(a),o=t?`${t} ${i}`:i,s=e?.description??``,c=e?.aliases,l=c&&c.length>0?`${o}, ${c.join(`, `)}`:o;if(r.push(B(y.command(l),s,n)),e){let t=xe(e,n+1);r.push(...t);let i=e.subCommands?Object.fromEntries(I(e.subCommands)):void 0;if(i&&Object.keys(i).length>0){let e=Se(i,o,n);r.push(...e)}}}return r}function V(e,t){let n=[],r=t.context,i=ue(e,r);if(i){let e=y.commandName(i);r?.rootName&&r.commandPath&&r.commandPath.length>0?r.rootVersion?e+=` ${y.version(`(${r.rootName} v${r.rootVersion})`)}`:e+=` ${y.version(`(${r.rootName})`)}`:r?.rootVersion&&(e+=` ${y.version(`v${r.rootVersion}`)}`),n.push(e)}r?.aliasFor&&n.push(y.dim(`Alias for ${y.commandName(r.aliasFor)}`)),e.description&&n.push(e.description),!r?.aliasFor&&e.aliases&&e.aliases.length>0&&n.push(`${y.sectionHeader(`Aliases:`)} ${e.aliases.map(e=>y.command(e)).join(`, `)}`),n.push(`${y.sectionHeader(`Usage:`)} ${fe(e,r)}`);let a=pe(e,t.descriptions,r);if(a&&n.push(`${y.sectionHeader(`Options:`)}\n${a}`),r?.globalExtracted?.fields.length&&n.push(`${y.sectionHeader(`Global Options:`)}\n${be(r.globalExtracted)}`),t.showSubcommands!==!1&&e.subCommands&&I(e.subCommands).length>0){let i=r?.commandPath?.join(` `)??``,a=Object.fromEntries(I(e.subCommands));if(t.showSubcommandOptions){let e=Se(a,i,0);n.push(`${y.sectionHeader(`Commands:`)}\n${e.join(`
18
- `)}`)}else{let e=[];for(let[t,n]of Object.entries(a)){let r=p(n),a=r?.description??``,o=i?`${i} ${t}`:t,s=r?.aliases,c=s&&s.length>0?`${o}, ${s.join(`, `)}`:o;e.push(B(y.command(c),a))}n.push(`${y.sectionHeader(`Commands:`)}\n${e.join(`
19
- `)}`)}}if(e.examples&&e.examples.length>0){let t=Ce(e.examples,r);n.push(`${y.sectionHeader(`Examples:`)}\n${t}`)}if(e.notes){let t=O(e.notes).split(`
20
- `).map(e=>e===``?``:` ${e}`).join(`
21
- `);n.push(`${y.sectionHeader(`Notes:`)}\n${t}`)}return`\n${n.join(`
22
-
23
- `)}\n`}function Ce(e,t){let n=[],r=t?.rootName?`${t.rootName} `:``,i=t?.commandPath?.join(` `)??``,a=i?`${r}${i} `:r;for(let t of e){if(n.push(` ${y.dim(t.desc).split(`
24
- `).join(`
25
- `)}`),n.push(` ${y.dim(`$`)} ${a}${t.cmd}`),t.output)for(let e of t.output.split(`
26
- `))n.push(` ${e}`);n.push(``)}return n.length>0&&n[n.length-1]===``&&n.pop(),n.join(`
27
- `)}var we=class extends Error{constructor(e){super(e),this.name=`PositionalConfigError`}},Te=class extends Error{constructor(e){super(e),this.name=`ReservedAliasError`}},Ee=class extends Error{constructor(e){super(e),this.name=`DuplicateFieldError`}},De=class extends Error{constructor(e){super(e),this.name=`DuplicateAliasError`}},H=class extends Error{constructor(e){super(e),this.name=`CaseVariantCollisionError`}},Oe=class extends Error{constructor(e){super(e),this.name=`DuplicateNegationError`}},ke=class extends Error{constructor(e){super(e),this.name=`ReservedFieldNameError`}},Ae=class extends Error{constructor(e){super(e),this.name=`FieldTypeConflictError`}};function je(e,t){let n=[],r=new Map;for(let i of e.fields)r.has(i.name)&&n.push({commandPath:t,type:`duplicate_field`,message:`Duplicate field name "${i.name}" detected.`,field:i.name}),r.set(i.name,i.name);return n}function Me(e,t){let r=[],i=new Map;for(let a of e.fields){let e=n(a.name),o=i.get(e);o&&o!==a.name&&r.push({commandPath:t,type:`case_variant_collision`,message:`Fields "${o}" and "${a.name}" are case variants of each other and would collide.`,field:a.name}),i.set(e,a.name)}return r}function Ne(e,t){let i=[],a=new Map,o=new Set(e.fields.map(e=>e.name)),s=new Set(e.fields.map(e=>e.cliName)),c=(e,n,r)=>{(o.has(e)||s.has(e))&&i.push({commandPath:t,type:`duplicate_alias`,message:`Alias "${e}" for field "${n}" conflicts with existing field name or CLI name "${e}".`,field:n});let c=a.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_alias`,message:`Duplicate alias "${e}"${a} detected. Both "${c}" and "${n}" use the same alias.`,field:n})}a.set(e,n)};for(let t of e.fields){let e=r(t);if(e.length!==0){for(let r of e)if(c(r,t.name,!1),r.length>1&&r.includes(`-`)){let e=n(r);e!==r&&!o.has(e)&&c(e,t.name,!0)}}}return i}function Pe(e,t){let i=[],a=new Map,o=(e,t,n)=>{a.has(e)||a.set(e,{field:t,kind:n})};for(let t of e.fields){if(o(t.name,t.name,`field name`),t.name.includes(`-`)){let e=n(t.name);e!==t.name&&o(e,t.name,`field name`)}if(t.cliName!==t.name&&o(t.cliName,t.name,`CLI name`),t.cliName.includes(`-`)){let e=n(t.cliName);e!==t.cliName&&o(e,t.name,`CLI name`)}for(let e of r(t))if(o(e,t.name,`alias`),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&o(r,t.name,`alias`)}if(t.type===`boolean`&&t.negation===!0){let e=`no-${t.cliName}`;o(e,t.name,`default negation`);let r=n(t.cliName),i=`no${r[0]?.toUpperCase()??``}${r.slice(1)}`;i!==e&&o(i,t.name,`default negation`)}}let s=new Map,c=(e,n,r)=>{let o=a.get(e);if(o){let a=r?` (derived camelCase variant)`:``,s=o.field===n?`the same field's own ${o.kind} "${e}"`:`${o.kind} "${e}" of field "${o.field}"`;i.push({commandPath:t,type:`duplicate_negation`,message:`Negation "${e}"${a} for field "${n}" conflicts with ${s}.`,field:n})}let c=s.get(e);if(c&&c!==n){let a=r?` (derived camelCase variant)`:``;i.push({commandPath:t,type:`duplicate_negation`,message:`Duplicate negation "${e}"${a} detected. Both "${c}" and "${n}" use the same negation name.`,field:n})}s.set(e,n)};for(let t of e.fields)if(typeof t.negation==`string`&&(c(t.negation,t.name,!1),t.negation.includes(`-`))){let e=n(t.negation);e!==t.negation&&c(e,t.name,!0)}return i}function Fe(e,t){let n=[],r=e.fields.filter(e=>e.positional),i=null,a=null;for(let e of r)i!==null&&n.push({commandPath:t,type:`positional_config`,message:`Positional argument "${e.name}" cannot follow array positional argument "${i}".`,field:e.name}),e.type===`array`&&a!==null&&n.push({commandPath:t,type:`positional_config`,message:`Array positional "${e.name}" cannot be used with optional positional "${a}" (ambiguous parsing).`,field:e.name}),a!==null&&e.required&&n.push({commandPath:t,type:`positional_config`,message:`Required positional "${e.name}" cannot follow optional positional "${a}".`,field:e.name}),e.type===`array`&&(i=e.name),e.required||(a=e.name);return n}function Ie(e,t){let n=[];for(let i of e.fields)if(i.overrideBuiltinAlias!==!0)for(let e of r(i))(e===`h`||e===`H`)&&n.push({commandPath:t,type:`reserved_alias`,message:`Alias "${e}" is reserved for --${e===`h`?`help`:`help-all`}.`,field:i.name});return n}function Le(e,t){let n=[];for(let r of e.fields)r.name.startsWith(`$`)&&n.push({commandPath:t,type:`reserved_field_name`,message:`Field "${r.name}" starts with "$", which is reserved for framework-injected helpers (e.g. $source).`,field:r.name});return n}function U(e){let t=je(e,[]);if(t.length>0)throw new Ee(`Duplicate field name "${t[0]?.field??`unknown`}" detected. Each field must have a unique name.`)}function W(e){let t=Ne(e,[]);if(t.length>0){let e=t[0];throw new De(e.message)}}function Re(e){let t=Fe(e,[]);if(t.length>0){let e=t[0];throw new we(e.message)}}function G(e,t){let n=Ie(e,[]);if(n.length>0){let t=n[0].field??`unknown`,i=e.fields.find(e=>e.name===t),a=(i?r(i):[]).find(e=>e===`h`||e===`H`)??`h`;throw new Te(`Alias "${a}" is reserved for --${a===`h`?`help`:`help-all`}. To override this, set { overrideBuiltinAlias: true } for "${t}" and keep the alias where it is currently defined (in alias or hiddenAlias).`)}}function K(e){let t=Le(e,[]);if(t.length>0){let e=t[0];throw new ke(e.message)}}function q(e){let t=Pe(e,[]);if(t.length>0){let e=t[0];throw new Oe(e.message)}}function J(e){let t=Me(e,[]);if(t.length>0){let e=t[0];throw new H(e.message)}}function ze(e,t){if(e.type!==t.type||e.positional!==t.positional)return!1;let n=e.enumValues,r=t.enumValues;if(!n&&!r)return!0;if(!n||!r)return!1;let i=new Set(n),a=new Set(r);if(i.size!==a.size)return!1;for(let e of i)if(!a.has(e))return!1;return!0}function Be(e,t,r){let i=[],a=new Map;for(let t of e.fields)a.set(n(t.name),t);for(let e of t.fields){let t=n(e.name),o=a.get(t);if(o){if(o.name!==e.name){i.push({commandPath:r,type:`case_variant_collision`,message:`Global field "${o.name}" and command field "${e.name}" are case variants of each other and would collide.`,field:e.name});continue}ze(o,e)||i.push({commandPath:r,type:`field_type_conflict`,message:`Global field "${o.name}" and command field "${e.name}" share the same name but have different definitions.`,field:e.name})}}return i}function Ve(e,t){let n=Be(e,t,[])[0];if(n)throw n.type===`case_variant_collision`?new H(n.message):new Ae(n.message)}function He(e,t,n){return[...je(e,n),...Me(e,n),...Ne(e,n),...Pe(e,n),...Fe(e,n),...Ie(e,n),...Le(e,n)]}function Ue(e,t){let n=[];if(!e.subCommands)return n;let r=new Map;for(let[t]of Object.entries(e.subCommands))r.set(t,t);for(let[i,a]of Object.entries(e.subCommands)){let e=h(a)?a.meta:typeof a==`function`?null:a;if(!e?.aliases)continue;let o=[...t,i];for(let t of e.aliases){if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(t)){n.push({commandPath:o,type:`invalid_alias`,message:`Alias "${t}" is invalid. Aliases must start with an alphanumeric character and contain only alphanumeric characters, hyphens, or underscores.`,field:i});continue}if(t===i){n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with its own name.`,field:i});continue}let e=r.get(t);e?e===i?n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" is duplicated within the alias list.`,field:i}):n.push({commandPath:o,type:`duplicate_alias`,message:`Alias "${t}" conflicts with existing subcommand or alias "${e}".`,field:i}):r.set(t,i)}}return n}function We(e,t,n){return e===t?[]:[{commandPath:[...n,e],type:`subcommand_key_name_mismatch`,message:`Subcommand registered as "${e}" but its own name is "${t}".`,field:e}]}async function Ge(e,t={}){let n=t.commandPath??[e.name],r=[],i=e.subCommands?Object.keys(e.subCommands).length>0:!1,a=t.globalArgs?s(t.globalArgs):void 0;if(e.args){let t=s(e.args);r.push(...He(t,i,n)),a&&r.push(...Be(a,t,n))}if(r.push(...Ue(e,n)),e.subCommands)for(let[i,a]of Object.entries(e.subCommands)){let e=await g(a);r.push(...We(i,e.name,n));let o=await Ge(e,{commandPath:[...n,i],...t.globalArgs?{globalArgs:t.globalArgs}:{}});o.valid||r.push(...o.errors)}return r.length===0?{valid:!0}:{valid:!1,errors:r}}function Ke(e){if(e.length===0)return``;let t=[`Command definition errors:`];for(let n of e){let e=n.commandPath.join(` > `);t.push(` - [${e}] ${n.message}`)}return t.join(`
28
- `)}const qe=new Set([`1`,`t`,`T`,`TRUE`,`true`,`True`]),Je=new Set([`0`,`f`,`F`,`FALSE`,`false`,`False`]);function Y(e){return qe.has(e)?!0:!Je.has(e)&&e}function Ye(e,t){return t===`boolean`?Y(e):e}function Xe(e){let t=e.indexOf(`=`);return t>=0?e.slice(2,t):e.slice(2)}function Ze(e,t){let n=Xe(e);if(!e.includes(`=`)){let e=t.negationMap.get(n);if(e&&t.booleanFlags.has(e))return{resolvedName:e,withoutDashes:n,isNegated:!0,isCustomNegation:!0,isSuppressedNegation:!1}}let r=e.includes(`=`);if(!r&&n.startsWith(`no-`)){let e=n.slice(3);if(e===e.toLowerCase()){let r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}}if(!r&&n.length>2&&n.startsWith(`no`)&&/[A-Z]/.test(n[2])){let e=n[2].toLowerCase()+n.slice(3),r=t.aliasMap.get(e)??e;if(t.booleanFlags.has(r)){let e=t.aliasMap.get(n)??n;if(!t.definedNames.has(e))return t.defaultNegationDisabledFields.has(r)?{resolvedName:r,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!0}:{resolvedName:r,withoutDashes:n,isNegated:!0,isCustomNegation:!1,isSuppressedNegation:!1}}}return{resolvedName:t.aliasMap.get(n)??n,withoutDashes:n,isNegated:!1,isCustomNegation:!1,isSuppressedNegation:!1}}const Qe=/^-\.?\d/;function $e(e){return Qe.test(e)}function et(e,t={}){let{aliasMap:n=new Map,booleanFlags:r=new Set,arrayFlags:i=new Set,definedNames:a=new Set,negationMap:o=new Map,defaultNegationDisabledFields:s}=t,c={aliasMap:n,booleanFlags:r,definedNames:a,negationMap:o,defaultNegationDisabledFields:s??new Set(r)},l={options:{},positionals:[],rest:[]},u=0,d=!1,f=(e,t)=>{let r=n.get(e)??e;if(i.has(r)){let e=l.options[r];Array.isArray(e)?e.push(t):e===void 0?l.options[r]=[t]:l.options[r]=[e,t]}else l.options[r]=t};for(;u<e.length;){let t=e[u];if(d){l.rest.push(t),u++;continue}if(t===`--`){d=!0,u++;continue}if(t.startsWith(`--`)){let i=t.slice(2),a=Ze(t,c);if(a.isSuppressedNegation){f(a.withoutDashes,!0),u++;continue}if(a.isNegated){f(a.resolvedName,!1),u++;continue}let o=i.indexOf(`=`);if(o!==-1){let e=i.slice(0,o),t=i.slice(o+1),a=n.get(e)??e;f(e,r.has(a)?Y(t):t),u++}else{let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||$e(n))?(f(t,n),u+=2):(f(t,!0),u++)}}continue}if(t.startsWith(`-`)&&t.length>1&&!t.startsWith(`--`)){let i=t.slice(1),a=i.indexOf(`=`);if(a!==-1){let e=i.slice(0,a),t=i.slice(a+1),o=n.get(e)??e;f(e,r.has(o)?Y(t):t),u++}else if(i.length===1){let t=i,a=n.get(t)??t;if(r.has(a))f(t,!0),u++;else{let n=e[u+1];n!==void 0&&(!n.startsWith(`-`)||$e(n))?(f(t,n),u+=2):(f(t,!0),u++)}}else{for(let e of i)f(e,!0);u++}continue}l.positionals.push(t),u++}return l}function X(e){let t=new Map,i=new Set,a=new Set,o=new Set,s=new Map,c=new Set;for(let t of e.fields)o.add(t.name);for(let l of e.fields){l.cliName!==l.name&&t.set(l.cliName,l.name);for(let e of r(l))if(t.set(e,l.name),e.length>1&&e.includes(`-`)){let r=n(e);r!==e&&!o.has(r)&&!t.has(r)&&t.set(r,l.name)}let e=n(l.name);if(e!==l.name&&!o.has(e)&&!t.has(e)&&t.set(e,l.name),l.type===`boolean`&&i.add(l.name),l.type===`array`&&a.add(l.name),l.type===`boolean`&&l.negation!==!0&&(c.add(l.name),typeof l.negation==`string`&&(s.set(l.negation,l.name),l.negation.includes(`-`)))){let e=n(l.negation);e!==l.negation&&s.set(e,l.name)}}return{aliasMap:t,booleanFlags:i,arrayFlags:a,definedNames:o,negationMap:s,defaultNegationDisabledFields:c}}function tt(e,t){let n={...e.options},r=t.fields.filter(e=>e.positional),i=e.rest.length>0?[...e.positionals,...e.rest]:e.positionals,a=0;for(let e of r){if(a>=i.length)break;if(e.type===`array`){n[e.name]=i.slice(a);break}n[e.name]=i[a],a++}return n}function nt(e){let{aliasMap:t=new Map,booleanFlags:n=new Set,definedNames:i=new Set,negationMap:a=new Map,defaultNegationDisabledFields:o=new Set}=X(e),s=new Set;for(let t of e.fields)for(let e of r(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:n,definedNames:i,flagNames:new Set(e.fields.map(e=>e.name)),cliNames:new Set(e.fields.map(e=>e.cliName)),aliases:s,negationMap:a,defaultNegationDisabledFields:o}}function rt(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=Ze(e,t);if(o)return{resolvedName:n,withoutDashes:r,isNegated:!1,isGlobal:!1,isSuppressedNegation:o};let s=i&&!a?r.startsWith(`no-`)?r.slice(3):r[2].toLowerCase()+r.slice(3):r;return{resolvedName:n,withoutDashes:r,isNegated:i,isGlobal:t.flagNames.has(n)||t.cliNames.has(r)||t.cliNames.has(s),isSuppressedNegation:!1}}function it(e,t,n,r,i){return!e.includes(`=`)&&!i.has(t)&&!n&&r!==void 0&&!r.startsWith(`-`)}function Z(e,t,n,r,i,a){let o=e[t];return a.push(o),it(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function at(e,t,n){let r=nt(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||ot.has(t))break;if(!t.startsWith(`-`)&&i.has(t))return{subCommandIndex:s,globalTokensBefore:a,tokensAfterSubcommand:e.slice(s+1),suppressedTokens:o};if(t.startsWith(`--`)){let{resolvedName:n,withoutDashes:i,isNegated:c,isGlobal:l,isSuppressedNegation:u}=rt(t,r);if(l){s+=Z(e,s,n,c,r.booleanFlags,a);continue}if(u){o.push(i),s++;continue}break}if(t.startsWith(`-`)&&t.length>1){let n=t.includes(`=`)?t.slice(1,t.indexOf(`=`)):t.slice(1);if(n.length===1){let t=r.aliasMap.get(n)??n;if(r.aliases.has(n)||r.flagNames.has(t)){s+=Z(e,s,t,!1,r.booleanFlags,a);continue}}break}break}return{subCommandIndex:-1,globalTokensBefore:a,tokensAfterSubcommand:[],suppressedTokens:o}}const ot=new Set([`--help`,`-h`,`--help-all`,`-H`,`--version`]);function st(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?nt(t):{aliasMap:new Map,booleanFlags:new Set,definedNames:new Set,flagNames:new Set,cliNames:new Set,aliases:new Set,negationMap:new Map,defaultNegationDisabledFields:new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||ot.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=rt(n,i);if(s){it(n,a,o,e[t+1],i.booleanFlags)&&t++;continue}if(c){if(r)return-1;continue}return-1}let a=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(a.length===1){let r=i.aliasMap.get(a)??a;if(i.aliases.has(a)||i.flagNames.has(r)){it(n,r,!1,e[t+1],i.booleanFlags)&&t++;continue}}return-1}return-1}function ct(e,t){let n=st(e,t);return n>=0?e[n]:void 0}function lt(e,t,n={}){let i=_(t),a=[...i],o=a.length>0;if(o&&e.length>0){if(n.globalExtracted){let t=at(e,a,n.globalExtracted);if(t.subCommandIndex>=0){let r=ut(t.globalTokensBefore,n.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:r}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=s(t.args),n.skipValidation||(U(c),J(c),W(c),q(c),Re(c),G(c,o),K(c),n.globalExtracted&&Ve(n.globalExtracted,c)));let l=e,u,d=[];if(n.globalExtracted){let{separated:t,globalParsed:r,suppressedTokens:i}=dt(e,n.globalExtracted,c);l=t,u=r,d=i}let f=e.indexOf(`--`),p=f>=0?e.slice(0,f):e,m=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`H`))??!1,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&r(e).includes(`h`))??!1,g=p.includes(`--help-all`)||!m&&p.includes(`-H`),v=!g&&(p.includes(`--help`)||!h&&p.includes(`-h`)),y=p.includes(`--version`);if(v||g||y)return{helpRequested:v,helpAllRequested:g,versionRequested:y,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u};if(!c){let e=l.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?l.slice(0,e):l,rest:e>=0?l.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:d,rawGlobalArgs:u}}let b=X(c),x=et(l,b),S=tt(x,c),C=new Set;for(let e of c.fields)if(e.env&&S[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){S[e.name]=Ye(t,e.type),C.add(e.name);break}}}let w=new Set(c.fields.map(e=>e.name)),T=new Set(c.fields.map(e=>e.cliName)),E=new Set;for(let e of c.fields)for(let t of r(e))E.add(t);if(n.globalExtracted)for(let e of n.globalExtracted.fields){w.add(e.name),T.add(e.cliName);for(let t of r(e))E.add(t)}let D=[];for(let e of Object.keys(x.options))!w.has(e)&&!T.has(e)&&!E.has(e)&&D.push(e);return{helpRequested:!1,helpAllRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:S,positionals:x.positionals,rest:x.rest,unknownFlags:D,unknownGlobalFlags:d,extractedFields:c,rawGlobalArgs:u,envFallbackFields:C}}function ut(e,t){return e.length===0?{}:tt(et(e,X(t)),t)}function dt(e,t,i){let a=nt(t),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?X(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let t of[e.cliName,...r(e)]){let e=`no-${t}`;d.add(e),d.add(n(e))}let f=[],p=[],m=[];for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){p.push(...e.slice(t));break}if(n.startsWith(`--`)){let{resolvedName:r,withoutDashes:i,isNegated:c,isGlobal:p,isSuppressedNegation:h}=rt(n,a),g=r,_=o.has(i)||o.has(g)||s.has(i)||s.has(g)||l.has(i)||l.has(g)||u.has(i)||u.has(g)||d.has(i);if(p&&!_){t+=Z(e,t,r,c,a.booleanFlags,f)-1;continue}if(h&&!_){m.push(i);continue}}else if(n.startsWith(`-`)&&n.length>1){let r=n.includes(`=`)?n.slice(1,n.indexOf(`=`)):n.slice(1);if(r.length===1){let n=a.aliasMap.get(r)??r;if((a.aliases.has(r)||a.flagNames.has(n))&&!l.has(r)){t+=Z(e,t,n,!1,a.booleanFlags,f)-1;continue}}}p.push(n)}return{separated:p,globalParsed:ut(f,t),suppressedTokens:m}}function ft(t,n){return a(n)?o(t,n):e().validate(t,n)}function Q(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
29
- `)}function pt(e,t){let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function mt(e,t){let n=Math.max(2,Math.floor(e.length/2));return t.map(t=>({candidate:t,distance:pt(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function ht(e,t){let n=mt(e.replace(/^-{1,2}/,``),t),r=`${y.warning(`Warning: Unknown option:`)} ${y.bold(e)}`;if(n.length>0){r+=`\n\n${y.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${v.arrow} ${y.option(`--${e}`)}`}return r}function gt(e,t){return t&&e.stack?`${y.error(`Error:`)} ${e.message}\n\n${y.dim(e.stack)}`:`${y.error(`Error:`)} ${e.message}`}function $(e){return new Proxy(e,{get(e,r,i){if(typeof r==`string`){if(r in e)return Reflect.get(e,r,i);let a=n(r);if(a!==r&&a in e)return Reflect.get(e,a,i);let o=t(r);if(o!==r&&o in e)return Reflect.get(e,o,i)}return Reflect.get(e,r,i)},has(e,r){if(typeof r==`string`){if(r in e)return!0;let i=n(r);if(i!==r&&i in e)return!0;let a=t(r);if(a!==r&&a in e)return!0}return Reflect.has(e,r)}})}async function _t(e,t,n){for(let r of t.fields)r.effect&&await r.effect(e[r.name],{name:r.name,args:e,...n!=null&&{globalArgs:n}})}const vt={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function yt(e,r){Object.defineProperty(e,"$source",{value:e=>r.get(e)??r.get(n(e))??r.get(t(e))??`default`,enumerable:!1})}function bt(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function xt(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function St(e,t,n={}){let r=Dt(n),i=n.captureLogs??!1,a=i?d():null;if(n.setup){a?.start();try{await n.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(n.cleanup)try{await n.cleanup({error:t})}catch{}return a?.stop(),{success:!1,error:t,exitCode:1,logs:a?.getLogs()??l()}}a?.stop()}let o=await Et(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:n.cleanup,_existingLogs:a?.getLogs()});if(n.cleanup){let e=i?d():null;e?.start();let t={error:o.success?void 0:o.error};try{await n.cleanup(t)}catch(t){if(o.success){let n=t instanceof Error?t:Error(String(t));return e?.stop(),{success:!1,error:n,exitCode:1,logs:u(o.logs,e?.getLogs()??l())}}}e?.stop();let r=e?.getLogs()??l();if(r.entries.length>0)return{...o,logs:u(o.logs,r)}}return o}function Ct(e,t,n){let r=ct(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function wt(e,t={}){if(t.compileCache!==!1&&c(typeof t.compileCache==`string`?{cacheDir:t.compileCache}:{programName:e.name}),e.runMainHook)try{e.runMainHook(process.argv.slice(2))}catch{}let n=process.argv.slice(2),r;if(t.globalArgs)try{r=s(t.globalArgs)}catch{}let i=t;if(Ct(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=Dt(i);if(i.onUnknownSubcommand&&!e.run&&!Ct(e,n,r)){let t=_(e);if(t.size>0){let e=st(n,a,{stopOnSuppressedNegation:a?.unknownKeysMode!==`passthrough`}),r=e>=0?n[e]:void 0;if(r&&!t.has(r)){let t=n.slice(e+1),a=await i.onUnknownSubcommand({commandPath:[],name:r,args:t,precedingArgs:n.slice(0,e)});if(typeof a==`number`)return await Tt(),process.exit(a)}}}if(i.setup)try{await i.setup({})}catch(e){let t=e instanceof Error?e:Error(String(e));if(i.cleanup)try{await i.cleanup({error:t})}catch{}process.exit(1)}let o=await Et(e,n,{debug:i.debug,captureLogs:i.captureLogs,skipValidation:i.skipValidation,handleSignals:!0,logger:i.logger,globalArgs:i.globalArgs,prompt:i.prompt,onUnknownSubcommand:i.onUnknownSubcommand,_globalExtracted:a,_globalCleanup:i.cleanup,_context:{commandPath:[],rootName:e.name,rootVersion:i.version,globalExtracted:a}});if((i.displayErrors??!0)&&!o.success&&o.error&&(i.logger??vt).error(gt(o.error,i.debug??!1)),i.cleanup){let e={error:o.success?void 0:o.error};try{await i.cleanup(e)}catch{}}await Tt(),process.exit(o.exitCode)}async function Tt(){await Promise.all([process.stdout,process.stderr].map(e=>e.writableLength>0?new Promise(t=>e.write(``,()=>t())):Promise.resolve()))}async function Et(e,t,n={}){let r=n.logger??vt,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?d():null;a?.start();let o=()=>{let e=n._existingLogs??l(),t=a?.getLogs()??l();return u(e,t)};try{let s=lt(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=_(e);if(r.size>0){let e=st(t,n._globalExtracted,{stopOnSuppressedNegation:n._globalExtracted?.unknownKeysMode!==`passthrough`}),i=e>=0?t[e]:void 0;if(i&&!r.has(i)){let r=t.slice(e+1),s=await n.onUnknownSubcommand({commandPath:l,name:i,args:r,precedingArgs:[...n._precedingArgs??[],...t.slice(0,e)]});if(typeof s==`number`){if(a?.stop(),n.handleSignals){if(n._globalCleanup)try{await n._globalCleanup({error:void 0})}catch{}await Tt(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested){let c=!1,l=m(e),u=_(e);if(l.length>0){let e=ct(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}let d=V(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i});if(r.log(d),a?.stop(),c){let e=ct(t,i.globalExtracted)??``,n=mt(e,[...u]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}return{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownGlobalFlags&&s.unknownGlobalFlags.length>0){let e=i.globalExtracted?.unknownKeysMode??`strip`;if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownGlobalFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`){let e=i.globalExtracted?.fields.map(e=>e.name)??[];for(let t of s.unknownGlobalFlags)r.error(ht(t,e))}}if(s.versionRequested){let e=i.rootVersion;return e&&r.log(e),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.subCommand){let r=await f(e,s.subCommand);if(r){let e={commandPath:[...i.commandPath??[],s.subCommand],rootName:i.rootName,rootVersion:i.rootVersion,globalExtracted:i.globalExtracted,aliasFor:r.aliasFor};a?.stop();let l=new Set(n._globalExtracted?.unknownKeysMode===`passthrough`?[]:s.unknownGlobalFlags??[]),u=e=>e.startsWith(`--`)&&l.has(Xe(e)),d=t.slice(0,t.length-s.remainingArgs.length-1).filter(e=>!u(e));return Et(r.command,s.remainingArgs,{...n,_context:e,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...d]})}}let u=s.extractedFields?.fields.filter(e=>e.positional)??[],d=u.some(e=>e.type===`array`),p=[...s.positionals,...s.rest],h=d?[]:p.slice(u.length),g=d?[]:s.positionals.slice(u.length);if(m(e).length>0&&!s.subCommand&&!e.run&&h.length===0){let t=V(e,{showSubcommands:n.showSubcommands??!0,context:i});return r.log(t),a?.stop(),{success:!0,result:void 0,exitCode:0,logs:o()}}if(s.unknownFlags.length>0){let e=s.extractedFields?.unknownKeysMode??`strip`,t=s.extractedFields?.fields.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(ht(e,t))}if(h.length>0){let t=_(e);if(t.size>0){let e=g.find(e=>!e.startsWith(`-`)&&!t.has(e));if(e){let n=mt(e,[...t]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return a?.stop(),{success:!1,error:Error(`Unknown subcommand: ${e}${r?`.${r}`:``}`),exitCode:1,logs:o()}}}let n=s.extractedFields?.unknownKeysMode??`strip`;if(n===`strict`)return a?.stop(),{success:!1,error:Error(`Unexpected positional argument${h.length>1?`s`:``}: ${h.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of h)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let v={},y=e.name===`__complete`,b=new Set(Object.keys(c)),S=new Set;if(n.globalArgs&&n._globalExtracted&&!y){for(let e of n._globalExtracted.fields)if(e.env&&c[e.name]===void 0){let t=Array.isArray(e.env)?e.env:[e.env];for(let n of t){let t=process.env[n];if(t!==void 0){c[e.name]=Ye(t,e.type),S.add(e.name);break}}}if(n.prompt){let e=await n.prompt(c,n._globalExtracted);for(let[t,n]of Object.entries(e))n!==void 0&&(c[t]=n)}let e=ft(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(Q(e.errors)),exitCode:1,logs:o()};v=e.data}if(!e.args){let t=new Map;for(let e of b)t.set(e,`cli`);for(let e of S)t.set(e,`env`);yt(v,t),bt(v,xt(e,i));let r=$(v);return n._globalExtracted&&!y&&await _t(r,n._globalExtracted,r),a?.stop(),await x(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let C=s.rawArgs,w=new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(C,s.extractedFields),t={...C};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,w.add(n));C=t}let T=new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||w.has(e.name))&&b.has(e.name)&&Object.hasOwn(v,e.name)&&(C={...C,[e.name]:v[e.name]},T.add(e.name));let E=ft(C,e.args);if(!E.success)return a?.stop(),{success:!1,error:Error(Q(E.errors)),exitCode:1,logs:o()};let D=$(E.data),O=$(v);n._globalExtracted&&!y&&await _t(O,n._globalExtracted,O),s.extractedFields&&!y&&await _t(D,s.extractedFields,O);let k={...O,...D},A=new Map;for(let e of b)A.set(e,`cli`);for(let e of S)A.set(e,`env`);let j=s.envFallbackFields??new Set;for(let e of s.extractedFields?.fields??[]){if(T.has(e.name)){A.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||j.has(e.name);A.set(e.name,t?j.has(e.name)?`env`:`cli`:`default`)}yt(k,A),bt(k,xt(e,i));let M=$(k);return a?.stop(),await x(e,M,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}catch(e){let t=e instanceof Error?e:Error(String(e));return a?.stop(),{success:!1,error:t,exitCode:1,logs:o()}}}function Dt(e){if(!e.globalArgs)return;let t=s(e.globalArgs);if(!e.skipValidation){U(t),J(t),W(t),q(t),G(t,!0),K(t);let e=t.fields.filter(e=>e.positional).map(e=>e.name);if(e.length>0)throw Error(`Global options schema must not contain positional arguments. Found: ${e.join(`, `)}`)}return t}export{ke as C,O as E,Te as S,D as T,De as _,et as a,Ae as b,Ge as c,U as d,q as f,H as g,K as h,Q as i,Ve as l,G as m,wt as n,Ke as o,Re as p,$ as r,J as s,St as t,W as u,Ee as v,V as w,we as x,Oe as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./runner-BBzVbri9.js";export{e as runCommand};