@politty/zod 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/agent.d.ts +2 -0
- package/dist/agent.js +1 -0
- package/dist/{arg-registry-Dvi0co21.d.ts → arg-registry-vcm6uTB1.d.ts} +37 -2
- package/dist/augment.d.ts +1 -1
- package/dist/{cli-main-C7vClSAF.js → cli-main-DcB9Slb7.js} +1 -1
- package/dist/cli-main-Dp25rn4L.js +1 -0
- package/dist/{cli-run-CitZgzLl.js → cli-run-C-K9FeKJ.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/completion.d.ts +2 -2
- package/dist/detect-agent-D7KSeWMh.js +3 -0
- package/dist/detect-agent-EHaSY1KW.d.ts +49 -0
- package/dist/docs.d.ts +1 -1
- package/dist/docs.js +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.js +1 -1
- package/dist/prompt-clack.d.ts +1 -1
- package/dist/prompt-inquirer.d.ts +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/runner-CqslNxyn.js +30 -0
- package/dist/runner-DD6DzZky.js +1 -0
- package/dist/skill.d.ts +1 -1
- package/dist/{with-completion-command-BKHwbzEc.d.ts → with-completion-command-DR98pkpR.d.ts} +1 -1
- package/package.json +5 -1
- package/dist/cli-main-dbj7bXjm.js +0 -1
- package/dist/runner-BKyUtmoD.js +0 -1
- package/dist/runner-CBG2DbVY.js +0 -30
package/README.md
CHANGED
|
@@ -531,6 +531,21 @@ politty integrates Node.js's on-disk compile cache (V8 code cache, Node >= 22.8.
|
|
|
531
531
|
|
|
532
532
|
`generate-shim` writes an executable shim that enables the cache and loads `--entry` (a specifier relative to the shim) with a dynamic import. The output path and program name come from `package.json` (the `bin` path and the `bin` name), and the shim imports the cache helper from the politty package whose `politty` bin you ran — the one you installed, so it resolves from your package. Packages with multiple bins pass `--entry` once per bin, and `--entry` itself can be omitted when the entry sits next to the shim under a conventional name (`./cli.js`, `./index.js`, ...). See [Faster Startup (Compile Cache)](./docs/recipes.md#faster-startup-compile-cache) for the flags, the opt-out (`compileCache: false`), and the hand-written shim variant.
|
|
533
533
|
|
|
534
|
+
## AI Coding Agents
|
|
535
|
+
|
|
536
|
+
politty detects AI coding agents (Claude Code, Codex, Cursor, Gemini CLI, ...) from the environment, following [vercel/detect-agent](https://github.com/vercel/detect-agent)'s spec. Give agents guidance humans never see, and branch on the detected agent at run time:
|
|
537
|
+
|
|
538
|
+
```typescript
|
|
539
|
+
runMain(cli, {
|
|
540
|
+
agentHelp: "**AGENTS:** Pass `--json` and parse stdout instead of the table output.",
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
// In run/setup/cleanup: args.$agent // e.g. { id: "claude_code", rawId: "claude_code" }, or undefined
|
|
544
|
+
// Anywhere: import { detectAgent } from "politty/agent";
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Set `POLITTY_NO_AGENT=1` to opt out. See [AI Coding Agents](./docs/advanced-features.md#ai-coding-agents).
|
|
548
|
+
|
|
534
549
|
## Skill Management
|
|
535
550
|
|
|
536
551
|
politty manages SKILL.md-based agent skills distributed via npm packages.
|
package/dist/agent.d.ts
ADDED
package/dist/agent.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./detect-agent-D7KSeWMh.js";export{e as detectAgent};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as AgentInfo } from "./detect-agent-EHaSY1KW.js";
|
|
1
2
|
//#region ../core/src/adapter/standard-schema.d.ts
|
|
2
3
|
/**
|
|
3
4
|
* Type-level subset of the Standard Schema V1 interface
|
|
@@ -312,14 +313,34 @@ interface CleanupContext<TArgs = unknown> {
|
|
|
312
313
|
/**
|
|
313
314
|
* Context provided to global setup function (runMain/runCommand level)
|
|
314
315
|
*/
|
|
315
|
-
interface GlobalSetupContext {
|
|
316
|
+
interface GlobalSetupContext {
|
|
317
|
+
/** AI coding agent running the CLI (see `detectAgent`); undefined when none is detected */
|
|
318
|
+
agent?: AgentInfo | undefined;
|
|
319
|
+
}
|
|
316
320
|
/**
|
|
317
321
|
* Context provided to global cleanup function (runMain/runCommand level)
|
|
318
322
|
*/
|
|
319
323
|
interface GlobalCleanupContext {
|
|
324
|
+
/** AI coding agent running the CLI (see `detectAgent`); undefined when none is detected */
|
|
325
|
+
agent?: AgentInfo | undefined;
|
|
320
326
|
/** Error if command execution failed */
|
|
321
327
|
error?: Error | undefined;
|
|
322
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* Context passed to a function-form {@link AgentHelp}
|
|
331
|
+
*/
|
|
332
|
+
interface AgentHelpContext {
|
|
333
|
+
/** The detected agent */
|
|
334
|
+
agent: AgentInfo;
|
|
335
|
+
/** Subcommand names from the root to the command whose help is shown (empty at the root) */
|
|
336
|
+
commandPath: readonly string[];
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Agent-only guidance prepended to help output (Markdown, rendered like
|
|
340
|
+
* `notes`). A function form can vary it per agent or command, and returns
|
|
341
|
+
* `undefined` to show nothing.
|
|
342
|
+
*/
|
|
343
|
+
type AgentHelp = string | ((context: AgentHelpContext) => string | undefined);
|
|
323
344
|
/**
|
|
324
345
|
* Base command interface (shared properties)
|
|
325
346
|
* @template TArgsSchema - The args schema type (from the CLI's schema library)
|
|
@@ -449,6 +470,13 @@ interface MainOptions {
|
|
|
449
470
|
displayErrors?: boolean;
|
|
450
471
|
/** Prompt resolver for interactive missing-arg prompts (e.g. from `politty/prompt/clack`). */
|
|
451
472
|
prompt?: PromptResolver | undefined;
|
|
473
|
+
/**
|
|
474
|
+
* Guidance for AI coding agents, shown above `--help`/`--help-all` output
|
|
475
|
+
* (and the help shown for a missing or unknown subcommand) only when
|
|
476
|
+
* `detectAgent()` detects one; humans never see it. `--help-json` carries
|
|
477
|
+
* it as the `agentHelp` field.
|
|
478
|
+
*/
|
|
479
|
+
agentHelp?: AgentHelp | undefined;
|
|
452
480
|
/**
|
|
453
481
|
* Fallback hook for CLI plugin dispatch, invoked when a positional is not a
|
|
454
482
|
* known subcommand at any level whose command exposes subcommands (e.g. exec
|
|
@@ -520,6 +548,13 @@ interface RunCommandOptions {
|
|
|
520
548
|
cleanup?: ((context: GlobalCleanupContext) => void | Promise<void>) | undefined;
|
|
521
549
|
/** Prompt resolver for interactive missing-arg prompts (e.g. from `politty/prompt/clack`). */
|
|
522
550
|
prompt?: PromptResolver | undefined;
|
|
551
|
+
/**
|
|
552
|
+
* Guidance for AI coding agents, shown above `--help`/`--help-all` output
|
|
553
|
+
* (and the help shown for a missing or unknown subcommand) only when
|
|
554
|
+
* `detectAgent()` detects one; humans never see it. `--help-json` carries
|
|
555
|
+
* it as the `agentHelp` field.
|
|
556
|
+
*/
|
|
557
|
+
agentHelp?: AgentHelp | undefined;
|
|
523
558
|
}
|
|
524
559
|
/**
|
|
525
560
|
* Log level type
|
|
@@ -1068,4 +1103,4 @@ interface ArgFn<TSchemaBase extends SchemaLike = SchemaLike> {
|
|
|
1068
1103
|
<T extends TSchemaBase, M extends ArgMeta<InferSchemaOutput<T>>>(schema: T, meta: ValidateArgMeta<M, InferSchemaOutput<T>>): T;
|
|
1069
1104
|
}
|
|
1070
1105
|
//#endregion
|
|
1071
|
-
export {
|
|
1106
|
+
export { ResolvedFieldMeta as $, GlobalSetupContext as A, RunInvocation as B, CleanupContext as C, Example as D, CommandBase as E, Logger as F, SetupContext as G, RunResultFailure as H, MainOptions as I, UnknownSubcommandHandler as J, SubCommandValue as K, NonRunnableCommand as L, LogEntry as M, LogLevel as N, GlobalArgs as O, LogStream as P, ExtractedFields as Q, PromptResolver as R, ArgsSchema as S, Command as T, RunResultSuccess as U, RunResult as V, RunnableCommand as W, isLazyCommand as X, LazyCommand as Y, lazy as Z, DynamicCompletionResult as _, CustomCompletion as a, AnyCommand as b, PromptType as c, ExpandCompletion as d, UnknownKeysMode as et, ResolvedExpandCandidate as f, DynamicCompletionResolver as g, DynamicCompletionContext as h, CompletionType as i, SchemaLike as it, IsEmpty as j, GlobalCleanupContext as k, ValidateArgMeta as l, DynamicCompletionCandidate as m, ArgMeta as n, toKebabCase as nt, EffectContext as o, CompletionDirectiveMask as p, SubCommandsRecord as q, CompletionMeta as r, InferSchemaOutput as rt, PromptMeta as s, ArgFn as t, toCamelCase as tt, ExpandCandidate as u, AgentHelp as v, CollectedLogs as w, ArgSource as x, AgentHelpContext as y, RunCommandOptions as z };
|
package/dist/augment.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as e,u as t}from"./schema-extractor-fZZ2_WAZ.js";import{n}from"./command-tLHaJHe6.js";import{n as r}from"./runner-
|
|
1
|
+
import{d as e,u as t}from"./schema-extractor-fZZ2_WAZ.js";import{n}from"./command-tLHaJHe6.js";import{n as r}from"./runner-CqslNxyn.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
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=/* @__PURE__ */ 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-CizQSJgq.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./cli-main-DcB9Slb7.js";export{e as runPolittyCli};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./register-TbOCQNeI.js";const{runPolittyCli:e}=await import(`./cli-main-
|
|
1
|
+
import"./register-TbOCQNeI.js";const{runPolittyCli:e}=await import(`./cli-main-Dp25rn4L.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-6u9hgeWu.js";e(`politty`),await import(`./cli-run-
|
|
2
|
+
import{n as e}from"./compile-cache-6u9hgeWu.js";e(`politty`),await import(`./cli-run-C-K9FeKJ.js`);export{};
|
package/dist/completion.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
1
|
+
import { $ as ResolvedFieldMeta, S as ArgsSchema, T as Command, _ as DynamicCompletionResult, b as AnyCommand, d as ExpandCompletion, g as DynamicCompletionResolver, h as DynamicCompletionContext, m as DynamicCompletionCandidate, p as CompletionDirectiveMask } from "./arg-registry-vcm6uTB1.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-DR98pkpR.js";
|
|
3
3
|
//#region ../core/src/completion/schemas.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Schema for the completion command arguments
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{existsSync as e}from"node:fs";const t=[`cursor`,`cursor-cli`,`kimi`,`grok`,`gemini_cli`,`cline`,`codex_cli`,`antigravity`,`augment-cli`,`open_code`,`goose`,`junie`,`pi`,`cowork`,`claude_code`,`replit`,`github-copilot`,`kiro`,`openclaw`,`devin`];var n=`AI_AGENT`;
|
|
2
|
+
/*! Agent detection data from vercel/detect-agent (https://github.com/vercel/detect-agent), Copyright Vercel, Inc., Apache-2.0 (http://www.apache.org/licenses/LICENSE-2.0) */
|
|
3
|
+
const r=[{key:`CURSOR`,name:`cursor`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`CURSOR_TRACE_ID`}]}},{key:`CURSOR_CLI`,name:`cursor-cli`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`CURSOR_AGENT`},{type:`env_value`,name:`CURSOR_EXTENSION_HOST_ROLE`,value:`agent-exec`}]}},{key:`KIMI`,name:`kimi`,description:`Kimi Code plugin hooks. KIMI_CODE_HOME may be configured outside an active Kimi session, so detection uses the plugin-scoped KIMI_PLUGIN_ROOT marker.`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`KIMI_PLUGIN_ROOT`}]}},{key:`GROK`,name:`grok`,description:`Grok Build plugin hooks. Evaluated before Claude Code because Grok supports Claude Code plugins and may expose compatibility markers.`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`GROK_PLUGIN_ROOT`},{type:`env_set`,name:`GROK_PLUGIN_DATA`}]}},{key:`GEMINI`,name:`gemini_cli`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`GEMINI_CLI`}]}},{key:`CLINE`,name:`cline`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`CLINE_ACTIVE`}]}},{key:`CODEX`,name:`codex_cli`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`CODEX_SANDBOX`},{type:`env_set`,name:`CODEX_CI`},{type:`env_set`,name:`CODEX_THREAD_ID`},{type:`env_set`,name:`CODEX_SANDBOX_NETWORK_DISABLED`}]}},{key:`ANTIGRAVITY`,name:`antigravity`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`ANTIGRAVITY_AGENT`},{type:`env_set`,name:`ANTIGRAVITY_CLI_ALIAS`}]}},{key:`AUGMENT_CLI`,name:`augment-cli`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`AUGMENT_AGENT`}]}},{key:`OPENCODE`,name:`open_code`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`OPENCODE_CLIENT`},{type:`env_set`,name:`OPENCODE`}]}},{key:`GOOSE`,name:`goose`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`GOOSE_PROVIDER`}]}},{key:`JUNIE`,name:`junie`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`JUNIE_DATA`},{type:`env_set`,name:`JUNIE_SHIM_PATH`}]}},{key:`PI`,name:`pi`,description:`Matches when the PATH contains a '.pi/agent' (or '.pi\\\\agent') segment.`,match:{type:`anyOf`,conditions:[{type:`env_matches`,name:`PATH`,pattern:`\\.pi[\\\\/]agent`}]}},{key:`COWORK`,name:`cowork`,description:"Claude Cowork. Evaluated before `claude_code` so the more specific COWORK marker wins. Requires CLAUDE_CODE_IS_COWORK plus a Claude Code marker.",match:{type:`allOf`,conditions:[{type:`env_set`,name:`CLAUDE_CODE_IS_COWORK`},{type:`anyOf`,conditions:[{type:`env_set`,name:`CLAUDECODE`},{type:`env_set`,name:`CLAUDE_CODE`}]}]}},{key:`CLAUDE`,name:`claude_code`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`CLAUDECODE`},{type:`env_set`,name:`CLAUDE_CODE`}]}},{key:`REPLIT`,name:`replit`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`REPL_ID`}]}},{key:`GITHUB_COPILOT`,name:`github-copilot`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`COPILOT_MODEL`},{type:`env_set`,name:`COPILOT_ALLOW_ALL`},{type:`env_set`,name:`COPILOT_GITHUB_TOKEN`}]}},{key:`KIRO`,name:`kiro`,description:`AWS Kiro. TERM_PROGRAM=kiro is set by both the IDE terminal and the CLI agent, so gate on no_tty to avoid misdetecting a human at the integrated terminal.`,match:{type:`allOf`,conditions:[{type:`env_matches`,name:`TERM_PROGRAM`,pattern:`kiro`},{type:`no_tty`}]}},{key:`OPENCLAW`,name:`openclaw`,match:{type:`anyOf`,conditions:[{type:`env_set`,name:`OPENCLAW_SHELL`}]}},{key:`DEVIN`,name:`devin`,match:{type:`anyOf`,conditions:[{type:`file_exists`,path:`/opt/.devin`}]}}],i=new Set(t);function a(e){return i.has(e)}function o(e,t,n){switch(e.type){case`env_set`:return!!t[e.name];case`env_value`:return t[e.name]===e.value;case`env_matches`:{let n=t[e.name];if(!n)return!1;try{return new RegExp(e.pattern).test(n)}catch{return!1}}case`no_tty`:return!n.isTTY;case`file_exists`:try{return n.fileExists(e.path)}catch{return!1}case`anyOf`:return e.conditions.some(e=>o(e,t,n));case`allOf`:return e.conditions.every(e=>o(e,t,n));default:return!1}}function s(t=process.env,i={}){try{if(t.POLITTY_NO_AGENT)return;let s=t[n]?.trim();if(s&&a(s))return{id:s,rawId:s};let c={isTTY:i.isTTY??process.stdout?.isTTY??!1,fileExists:i.fileExists??e},l=r.find(e=>o(e.match,t,c))?.name??s;return l?{id:l,rawId:s||l}:void 0}catch{return}}export{s as t};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region ../core/src/agent/known-agent-ids.d.ts
|
|
2
|
+
declare const KNOWN_AGENT_IDS: readonly ["cursor", "cursor-cli", "kimi", "grok", "gemini_cli", "cline", "codex_cli", "antigravity", "augment-cli", "open_code", "goose", "junie", "pi", "cowork", "claude_code", "replit", "github-copilot", "kiro", "openclaw", "devin"];
|
|
3
|
+
//#endregion
|
|
4
|
+
//#region ../core/src/agent/detect-agent.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Agent name defined by the detect-agent spec (e.g. `"claude_code"`,
|
|
7
|
+
* `"codex_cli"`). Names follow upstream and may change with it.
|
|
8
|
+
*/
|
|
9
|
+
type KnownAgentId = (typeof KNOWN_AGENT_IDS)[number];
|
|
10
|
+
/**
|
|
11
|
+
* An AI coding agent detected from the environment.
|
|
12
|
+
*/
|
|
13
|
+
interface AgentInfo {
|
|
14
|
+
/**
|
|
15
|
+
* The spec's name for the agent: `AI_AGENT` when it is a known name,
|
|
16
|
+
* otherwise the first spec agent whose markers match, falling back to the
|
|
17
|
+
* custom `AI_AGENT` value when none does.
|
|
18
|
+
*/
|
|
19
|
+
id: KnownAgentId | (string & {});
|
|
20
|
+
/**
|
|
21
|
+
* The id as the detect-agent spec reports it: the trimmed `AI_AGENT` value
|
|
22
|
+
* when non-empty (e.g. `"claude-code_2-1-284_agent"`), otherwise the same as
|
|
23
|
+
* `id`.
|
|
24
|
+
*/
|
|
25
|
+
rawId: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Overrides for the non-env inputs of {@link detectAgent}, mainly for tests.
|
|
29
|
+
*/
|
|
30
|
+
interface DetectAgentOptions {
|
|
31
|
+
/** Whether stdout is a TTY (default: `process.stdout.isTTY`) */
|
|
32
|
+
isTTY?: boolean | undefined;
|
|
33
|
+
/** File existence check (default: `fs.existsSync`) */
|
|
34
|
+
fileExists?: ((path: string) => boolean) | undefined;
|
|
35
|
+
}
|
|
36
|
+
type Env = Readonly<Record<string, string | undefined>>;
|
|
37
|
+
/**
|
|
38
|
+
* Detect whether the process runs under an AI coding agent, following the
|
|
39
|
+
* [detect-agent](https://github.com/vercel/detect-agent) spec: a non-empty
|
|
40
|
+
* `AI_AGENT` (trimmed) wins as `rawId`, then the spec's agents are checked in
|
|
41
|
+
* order. `id` normalizes the result to a spec name when possible.
|
|
42
|
+
* `POLITTY_NO_AGENT` (any non-empty value) disables detection. Never throws.
|
|
43
|
+
*
|
|
44
|
+
* @param env - Environment to inspect (default: `process.env`)
|
|
45
|
+
* @returns The detected agent, or `undefined`
|
|
46
|
+
*/
|
|
47
|
+
declare function detectAgent(env?: Env, options?: DetectAgentOptions): AgentInfo | undefined;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { detectAgent as i, DetectAgentOptions as n, KnownAgentId as r, AgentInfo as t };
|
package/dist/docs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as ResolvedFieldMeta, D as Example, K as SubCommandValue, Q as ExtractedFields, S as ArgsSchema, b as AnyCommand, it as SchemaLike } from "./arg-registry-vcm6uTB1.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{o as e}from"./field-meta-D9ySul7J.js";import"./register-TbOCQNeI.js";impo
|
|
|
18
18
|
`}}const ke={command:e=>U(e),tableStyle:U({optionStyle:`table`}),listStyle:U({optionStyle:`list`})};function Ae(e,t){let n=u.resolve(t);if(!l.existsSync(n))return{match:!1,fileExists:!1};let r=l.readFileSync(n,`utf-8`);return e===r?{match:!0,fileExists:!0}:{match:!1,diff:W(r,e),fileExists:!0}}function W(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 G(e,t){let n=u.resolve(e),r=u.dirname(n);l.existsSync(r)||l.mkdirSync(r,{recursive:!0}),l.writeFileSync(n,t,`utf-8`)}function je(e){let t=u.resolve(e);return l.existsSync(t)?l.readFileSync(t,`utf-8`):null}function Me(e,t=l){let n=u.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Ne(e,n,r=[]){let o=i(e),s=o?t(o):[],l=o?a(o):[],u=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await c(n),i=[...r,t];u.push({name:t,description:e.description,aliases:e.aliases,fullPath:i})}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:s,options:l,subCommands:u,extracted:o,command:e,notes:e.notes,examples:e.examples}}async function Pe(e,t){let n=t??e.name??`command`,r=/* @__PURE__ */ new Map;async function i(e,t){let a=await Ne(e,n,t),o=t.join(` `);if(r.set(o,a),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await i(await c(r),[...t,n])}return await i(e,[]),r}async function Fe(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Ie(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Ie(e,t,n){let r=Le(e.cmd),i=[...n,...r],a=s({passthrough:!1});a.start();let o=!0;try{let{runCommand:e}=await import(`./runner-
|
|
21
|
+
`)}function G(e,t){let n=u.resolve(e),r=u.dirname(n);l.existsSync(r)||l.mkdirSync(r,{recursive:!0}),l.writeFileSync(n,t,`utf-8`)}function je(e){let t=u.resolve(e);return l.existsSync(t)?l.readFileSync(t,`utf-8`):null}function Me(e,t=l){let n=u.resolve(e);t.existsSync(n)&&t.unlinkSync(n)}async function Ne(e,n,r=[]){let o=i(e),s=o?t(o):[],l=o?a(o):[],u=[];if(e.subCommands)for(let[t,n]of Object.entries(e.subCommands)){let e=await c(n),i=[...r,t];u.push({name:t,description:e.description,aliases:e.aliases,fullPath:i})}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:s,options:l,subCommands:u,extracted:o,command:e,notes:e.notes,examples:e.examples}}async function Pe(e,t){let n=t??e.name??`command`,r=/* @__PURE__ */ new Map;async function i(e,t){let a=await Ne(e,n,t),o=t.join(` `);if(r.set(o,a),e.subCommands)for(let[n,r]of Object.entries(e.subCommands))await i(await c(r),[...t,n])}return await i(e,[]),r}async function Fe(e,t,n,r=[]){let i=[];t.mock&&await t.mock();try{for(let t of e){let e=await Ie(t,n,r);i.push(e)}}finally{t.cleanup&&await t.cleanup()}return i}async function Ie(e,t,n){let r=Le(e.cmd),i=[...n,...r],a=s({passthrough:!1});a.start();let o=!0;try{let{runCommand:e}=await import(`./runner-DD6DzZky.js`),n=await e(t,i);o=n.success,!n.success&&n.error&&console.error(n.error.message)}catch(e){o=!1,console.error(e instanceof Error?e.message:String(e))}finally{a.stop()}let c=a.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:o}}function Le(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 Re(t){let n=e();return Object.entries(t).map(([e,t])=>n.resolveFieldMeta(e,t))}function ze(e,t){let n=Re(e).filter(e=>!e.positional);return n.length===0?``:D(v(n),t?.columns)}function Be(e){return e.replace(/\|/g,`\\|`).replace(/\n/g,` `)}function Ve(e){return e.replace(/\s+/g,`-`).toLowerCase()}function He(e){return e.subCommands.length===0}function Ue(e,t){return e===t?!0:t===``?e!==``:e.startsWith(t+` `)}function We(e,t,n){let r=[];for(let i of e){let e=t.get(i);if(e){if(He(e))r.push(i);else for(let[e,a]of t)(i===``?e.length>0:e.startsWith(i+` `)||e===i)&&(He(a)||!n)&&r.push(e)}}return r}function Ge(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:We(e.commands,t,r),s=o,c=/* @__PURE__ */ 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=>Ue(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)&&!He(i))continue;let o=n||i.name,s=Ve(o),l=Be(i.description??``);a.push(`| [${o}](${e.docPath}#${s}) | ${l} |`)}return a.join(`
|
|
24
24
|
`)}async function Ke(e,t,n){let r=n?.headingLevel??3,i=n?.leafOnly??!0,a=await Pe(e),o=[];for(let e of t){let t=Ge(e,a,r,i);o.push(t)}return o.join(`
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { _ as
|
|
1
|
+
import { r as KnownAgentId, t as AgentInfo } from "./detect-agent-EHaSY1KW.js";
|
|
2
|
+
import { $ as ResolvedFieldMeta, A as GlobalSetupContext, B as RunInvocation, C as CleanupContext, D as Example, E as CommandBase, F as Logger, G as SetupContext, H as RunResultFailure, I as MainOptions, J as UnknownSubcommandHandler, K as SubCommandValue, L as NonRunnableCommand, M as LogEntry, N as LogLevel, O as GlobalArgs, P as LogStream, Q as ExtractedFields, R as PromptResolver, S as ArgsSchema$1, T as Command, U as RunResultSuccess, V as RunResult, W as RunnableCommand, X as isLazyCommand, Y as LazyCommand, Z as lazy, _ as DynamicCompletionResult, a as CustomCompletion, b as AnyCommand, c as PromptType, d as ExpandCompletion, et as UnknownKeysMode, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, h as DynamicCompletionContext, i as CompletionType, it as SchemaLike, j as IsEmpty, k as GlobalCleanupContext, l as ValidateArgMeta, m as DynamicCompletionCandidate, n as ArgMeta, nt as toKebabCase, o as EffectContext, p as CompletionDirectiveMask, q as SubCommandsRecord, r as CompletionMeta, rt as InferSchemaOutput, s as PromptMeta, t as ArgFn, tt as toCamelCase, u as ExpandCandidate, v as AgentHelp, w as CollectedLogs, x as ArgSource, y as AgentHelpContext, z as RunCommandOptions } from "./arg-registry-vcm6uTB1.js";
|
|
3
|
+
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-DR98pkpR.js";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
//#region ../core/src/core/schema-extractor.d.ts
|
|
5
6
|
/**
|
|
@@ -243,7 +244,7 @@ type InferArgs<TArgsSchema> = TArgsSchema extends InternalArgsSchema<infer TInte
|
|
|
243
244
|
*/
|
|
244
245
|
type MergedArgs<TLocalArgs, TGlobalArgs> = IsEmpty<TGlobalArgs> extends true ? TLocalArgs : TLocalArgs & WithCaseVariants<TGlobalArgs>;
|
|
245
246
|
/**
|
|
246
|
-
* Add the `$source` and `$
|
|
247
|
+
* Add the `$source`, `$invocation` and `$agent` run-time metadata helpers.
|
|
247
248
|
*
|
|
248
249
|
* `$source` reports whether a given field's final value came from an
|
|
249
250
|
* explicit CLI token, a `field.env` fallback, or neither (schema default /
|
|
@@ -257,10 +258,14 @@ type MergedArgs<TLocalArgs, TGlobalArgs> = IsEmpty<TGlobalArgs> extends true ? T
|
|
|
257
258
|
*
|
|
258
259
|
* `$invocation` reports the CLI name (canonical or alias) this command was
|
|
259
260
|
* invoked with.
|
|
261
|
+
*
|
|
262
|
+
* `$agent` reports the AI coding agent running the CLI (see `detectAgent`),
|
|
263
|
+
* or `undefined` when none is detected.
|
|
260
264
|
*/
|
|
261
265
|
type WithRunMeta<T> = T & {
|
|
262
266
|
$source?: (name: string) => ArgSource;
|
|
263
267
|
$invocation?: RunInvocation;
|
|
268
|
+
$agent?: AgentInfo | undefined;
|
|
264
269
|
};
|
|
265
270
|
/**
|
|
266
271
|
* Resolve merged args from schema and global args type
|
|
@@ -446,6 +451,8 @@ interface HelpOptions {
|
|
|
446
451
|
descriptions?: BuiltinOptionDescriptions | undefined;
|
|
447
452
|
/** Command hierarchy context */
|
|
448
453
|
context?: CommandContext | undefined;
|
|
454
|
+
/** Agent-only guidance (Markdown) shown above everything else */
|
|
455
|
+
agentHelp?: string | undefined;
|
|
449
456
|
}
|
|
450
457
|
/**
|
|
451
458
|
* Serializable representation of a single argument (positional or option),
|
|
@@ -608,6 +615,8 @@ interface HelpData {
|
|
|
608
615
|
examples?: Example[] | undefined;
|
|
609
616
|
/** Additional notes (raw Markdown, unrendered) */
|
|
610
617
|
notes?: string | undefined;
|
|
618
|
+
/** Agent-only guidance (raw Markdown), set only when an AI coding agent is detected */
|
|
619
|
+
agentHelp?: string | undefined;
|
|
611
620
|
}
|
|
612
621
|
/**
|
|
613
622
|
* Generate help text for a command
|
|
@@ -625,6 +634,8 @@ interface HelpDataOptions {
|
|
|
625
634
|
descriptions?: BuiltinOptionDescriptions | undefined;
|
|
626
635
|
/** Command hierarchy context */
|
|
627
636
|
context?: CommandContext | undefined;
|
|
637
|
+
/** Agent-only guidance (raw Markdown) to include as {@link HelpData.agentHelp} */
|
|
638
|
+
agentHelp?: string | undefined;
|
|
628
639
|
}
|
|
629
640
|
/**
|
|
630
641
|
* Generate a structured, JSON-serializable representation of a command's help.
|
|
@@ -1074,4 +1085,4 @@ export declare const defineCommand: DefineCommandFn<ArgsSchema>;
|
|
|
1074
1085
|
export declare const createDefineCommand: CreateDefineCommandFn<ArgsSchema>;
|
|
1075
1086
|
export declare const arg: ArgFn<z.ZodType>;
|
|
1076
1087
|
//#endregion
|
|
1077
|
-
export { type AnyCommand, type ArgFn, type ArgMeta, type ArgSource, type BoundDefineCommandFn, type BuiltinOptionDescriptions, type CamelCase, 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, type DynamicCompletionCandidate, type DynamicCompletionContext, type DynamicCompletionResolver, type DynamicCompletionResult, type EffectContext, type Example, type ExpandCandidate, type ExpandCompletion, type ExtractedFields, type GenerateBundledCompletionWorkerOptions, type GenerateBundledCompletionWorkerResult, type GenerateCompileCacheShimOptions, type GenerateCompileCacheShimResult, type GlobalArgs, type GlobalCleanupContext, type GlobalSetupContext, type HelpData, type HelpDataOptions, type HelpFieldData, type HelpOptions, type HelpSubcommandData, type HelpUsageData, type HelpVariantData, type InferSchemaOutput, type KebabCase, type LazyCommand, type LogEntry, type LogLevel, type LogStream, type Logger, type MainOptions, type MergedArgs, type NonRunnableCommand, type ParsedArgv, type ParserOptions, type PromptMeta, type PromptResolver, type PromptType, 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, isLazyCommand, lazy, toCamelCase, toKebabCase, withCompletionCommand };
|
|
1088
|
+
export { type AgentHelp, type AgentHelpContext, type AgentInfo, type AnyCommand, type ArgFn, type ArgMeta, type ArgSource, type BoundDefineCommandFn, type BuiltinOptionDescriptions, type CamelCase, 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, type DynamicCompletionCandidate, type DynamicCompletionContext, type DynamicCompletionResolver, type DynamicCompletionResult, type EffectContext, type Example, type ExpandCandidate, type ExpandCompletion, type ExtractedFields, type GenerateBundledCompletionWorkerOptions, type GenerateBundledCompletionWorkerResult, type GenerateCompileCacheShimOptions, type GenerateCompileCacheShimResult, type GlobalArgs, type GlobalCleanupContext, type GlobalSetupContext, type HelpData, type HelpDataOptions, type HelpFieldData, type HelpOptions, type HelpSubcommandData, type HelpUsageData, type HelpVariantData, type InferSchemaOutput, type KebabCase, type KnownAgentId, type LazyCommand, type LogEntry, type LogLevel, type LogStream, type Logger, type MainOptions, type MergedArgs, type NonRunnableCommand, type ParsedArgv, type ParserOptions, type PromptMeta, type PromptResolver, type PromptType, 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, isLazyCommand, lazy, toCamelCase, toKebabCase, withCompletionCommand };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t}from"./field-meta-D9ySul7J.js";import{t as n}from"./register-TbOCQNeI.js";import{i as r,n as i}from"./schema-extractor-fZZ2_WAZ.js";import{n as a,t as o}from"./cli-main-
|
|
1
|
+
import{a as e,i as t}from"./field-meta-D9ySul7J.js";import{t as n}from"./register-TbOCQNeI.js";import{i as r,n as i}from"./schema-extractor-fZZ2_WAZ.js";import{n as a,t as o}from"./cli-main-DcB9Slb7.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-CqslNxyn.js";import{o as L,s as R}from"./subcommand-router-DR2KBQAt.js";import{a as z,i as B,n as V,r as H,t as U}from"./logger-CoeDrmRr.js";import{r as W}from"./argv-parser-CawJSYjw.js";import{t as G}from"./with-completion-command-DG-C9_0Z.js";const K=a(`@politty/zod`),q=s,J=c,Y=n;export{x as CaseVariantCollisionError,h as DefaultSubCommandError,N as DuplicateAliasError,I as DuplicateFieldError,_ as DuplicateNegationError,F as FieldTypeConflictError,p as PositionalConfigError,l as ReservedAliasError,P as ReservedFieldNameError,Y as arg,a as createCompileCacheShimGenerator,J as createDefineCommand,k as createDualCaseProxy,q as defineCommand,i as extractFields,g as formatCommandValidationErrors,C as formatValidationErrors,K as generateCompileCacheShim,m as generateHelp,d as generateHelpData,r as getUnknownKeysMode,U as isColorEnabled,L as isLazyCommand,R as lazy,V as logger,W 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,D as validateCaseVariantCollisions,A as validateCommand,v as validateCrossSchemaCollisions,w as validateDefaultSubCommand,M as validateDuplicateAliases,y as validateDuplicateFields,b as validateDuplicateNegations,O as validatePositionalConfig,T as validateReservedAliases,S as validateReservedFieldNames,G as withCompletionCommand};
|
package/dist/prompt-clack.d.ts
CHANGED
package/dist/prompt.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as ResolvedFieldMeta, Q as ExtractedFields } from "./arg-registry-vcm6uTB1.js";
|
|
2
2
|
//#region ../core/src/prompt/types.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Resolved prompt configuration for a single field
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import{a as e,i as t,n,o as r,t as i}from"./field-meta-D9ySul7J.js";import{a,c as o,f as s,l as c,n as l,o as u,p as d,r as f,s as p,t as m}from"./schema-extractor-fZZ2_WAZ.js";import{t as h}from"./detect-agent-D7KSeWMh.js";import{n as g}from"./compile-cache-6u9hgeWu.js";import{n as _,r as v,t as y}from"./log-collector-uhRWYT-z.js";import{a as ee,c as b,n as te,o as x,r as S,t as C}from"./subcommand-router-DR2KBQAt.js";import{a as w,i as T}from"./logger-CoeDrmRr.js";import{a as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./argv-parser-CawJSYjw.js";import{stripVTControlCharacters as N}from"node:util";async function ne(e,t,n={}){let r,i,a=n.captureLogs??!1?y():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=/* @__PURE__ */ 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 l=n.existingLogs??_(),u=a?.getLogs()??_(),d=v(l,u);return r?{success:!1,error:r,exitCode:1,logs:d}:{success:!0,result:i,exitCode:0,logs:d}}function re(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 ie(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 ae(e){let t=!1,n=!1,r=!1;for(let i of e){let e=i.codePointAt(0);if(e===65039){r=!0;continue}re(e)||(t=!0,ie(e)&&(n=!0))}return t?n||r?2:1:0}const oe=(()=>{try{return new Intl.Segmenter(`en`,{granularity:`grapheme`})}catch{return}})();function se(e){if(e.length===0)return 0;let t=e.includes(`\x1B`)||e.includes(``)?N(e):e,n=0;if(oe)for(let{segment:e}of oe.segment(t))n+=ae(e);else for(let e of t)n+=ae(e);return n}function P(e){let t=[],n=e.replace(/`([^`]+)`/g,(e,n)=>{let r=t.length;return t.push(T.cyan(n)),`\x00CODE${r}\x00`});return n=n.replace(/\*\*(.+?)\*\*/g,(e,t)=>T.bold(t)),n=n.replace(/__(.+?)__/g,(e,t)=>T.bold(t)),n=n.replace(/\*(.+?)\*/g,(e,t)=>T.italic(t)),n=n.replace(/(?<!\w)_(.+?)_(?!\w)/g,(e,t)=>T.italic(t)),n=n.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`${T.underline(t)} ${T.dim(`(${n})`)}`),n=n.replace(/\x00CODE(\d+)\x00/g,(e,n)=>t[Number(n)]),n}function F(e){return he(e.split(`
|
|
2
|
+
`)).map(be).join(`
|
|
3
|
+
|
|
4
|
+
`)}const ce=/^(#{1,6})\s+(.+)$/,le=/^(?:---+|\*\*\*+|___+)\s*$/,I=/^>\s?(.*)$/,L=/^-\s+(.+)$/,ue=/^(\d+)[.)]\s+(.+)$/,de=/^(`{3,}|~{3,})(\S*)\s*$/,fe=/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*$/,pe=/^\|(.+)\|$/,me=/^\|(\s*:?-+:?\s*\|)+$/;function he(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.trim()===``){n++;continue}let i=r.match(de);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(ce);if(a){t.push({type:`heading`,level:a[1].length,content:a[2]}),n++;continue}if(le.test(r)){t.push({type:`hr`}),n++;continue}if(I.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(I);if(t)r.push(t[1]),n++;else break}if(r.length>0){let e=r[0].match(fe);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(L.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(L);if(t)r.push(t[1]),n++;else break}t.push({type:`ul`,items:r});continue}let o=r.match(ue);if(o){let r=Number(o[1]),i=[];for(;n<e.length;){let t=e[n].match(ue);if(t)i.push(t[2]),n++;else break}t.push({type:`ol`,items:i,start:r});continue}if(pe.test(r)&&n+1<e.length&&me.test(e[n+1])){let i=ge(r),a=_e(e[n+1]);n+=2;let o=[];for(;n<e.length&&pe.test(e[n]);)o.push(ge(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()===``||ce.test(t)||le.test(t)||I.test(t)||L.test(t)||ue.test(t)||de.test(t)||pe.test(t)&&n+1<e.length&&me.test(e[n+1]))break;s.push(t),n++}s.length>0&&t.push({type:`paragraph`,lines:s})}return t}function ge(e){return e.slice(1,-1).split(`|`).map(e=>e.trim())}function _e(e){return e.slice(1,-1).split(`|`).map(e=>{let t=e.trim();return t.startsWith(`:`)&&t.endsWith(`:`)?`center`:t.endsWith(`:`)?`right`:`left`})}function ve(e,t,n){let r=se(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 ye={NOTE:{icon:`ℹ`,label:`Note`,styleFn:T.cyan},TIP:{icon:`💡`,label:`Tip`,styleFn:T.green},IMPORTANT:{icon:`❗`,label:`Important`,styleFn:T.magenta},WARNING:{icon:`⚠`,label:`Warning`,styleFn:T.yellow},CAUTION:{icon:`🔴`,label:`Caution`,styleFn:T.red}};function be(e){switch(e.type){case`heading`:return T.green(T.bold(P(e.content)));case`hr`:return T.dim(`─`.repeat(40));case`blockquote`:{let t=T.dim(`│ `);return e.lines.map(e=>`${t}${P(e)}`).join(`
|
|
5
|
+
`)}case`alert`:{let{icon:t,label:n,styleFn:r}=ye[e.alertType],i=r(T.bold(`│`))+` `,a=`${i}${r(t)} ${r(n)}`;return e.lines.length===0?a:`${a}\n${e.lines.map(e=>`${i}${P(e)}`).join(`
|
|
6
|
+
`)}`}case`ul`:return e.items.map(e=>`${T.dim(`•`)} ${P(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`${T.dim(`${i}.`)} ${P(t)}`}).join(`
|
|
8
|
+
`)}case`table`:{let t=e.headers.length,n=e.headers.map(e=>P(e)),r=e.rows.map(e=>Array.from({length:t},(t,n)=>P(e[n]??``))),i=n.map((e,t)=>{let n=se(e),i=r.map(e=>se(e[t]));return Math.max(n,...i)}),a=T.dim(`│`),o=T.dim(`┌─${i.map(e=>`─`.repeat(e)).join(`─┬─`)}─┐`),s=T.dim(`├─${i.map(e=>`─`.repeat(e)).join(`─┼─`)}─┤`),c=T.dim(`└─${i.map(e=>`─`.repeat(e)).join(`─┴─`)}─┘`);return[o,`${a} ${n.map((t,n)=>T.bold(ve(t,i[n],e.alignments[n]??`left`))).join(` ${a} `)} ${a}`,s,...r.map(t=>{let n=t.map((t,n)=>ve(t,i[n],e.alignments[n]??`left`));return`${a} ${n.join(` ${a} `)} ${a}`}),c].join(`
|
|
9
|
+
`)}case`code`:return e.lines.map(e=>` ${T.yellow(e)}`).join(`
|
|
10
|
+
`);case`paragraph`:return P(e.lines.join(` `))}}const R={help:`Show help`,helpAll:`Show help with all subcommand options`,helpJson:`Show help as JSON`,version:`Show version`};function xe(e){return!e.startsWith(`__`)}function z(e){return Object.entries(e).filter(([e])=>xe(e))}function Se(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?t.commandPath.join(` `):e.name??`command`}function Ce(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?`${t.rootName} ${t.commandPath.join(` `)}`:e.name??`command`}function we(e,t){let n=[],r=Ce(e,t);n.push(T.commandName(r)),t?.globalExtracted?.fields.length&&n.push(T.placeholder(`[global options]`));let i=f(e);if(i){let t=o(i);p(i).length>0&&n.push(T.placeholder(`[options]`)),e.subCommands&&z(e.subCommands).length>0&&(e.run||e.defaultSubCommand?n.push(T.placeholder(`[command]`)):n.push(T.option(`<command>`)));for(let e of t)e.required?n.push(T.option(`<${e.name}>`)):n.push(T.placeholder(`[${e.name}]`))}else e.subCommands&&z(e.subCommands).length>0&&(e.run||e.defaultSubCommand?n.push(T.placeholder(`[command]`)):n.push(T.option(`<command>`)));return n.join(` `)}function Te(e,t){let n=`${T.dim(`When`)} ${T.option(e)}=${T.bold(t.discriminatorValue)}:`;return t.description?`${n} ${t.description}`:n}function Ee(e,t){return` ${T.bold(`${e.description??`Variant ${t+1}`}:`)}`}function De(e,t=0){let n=e.required?T.option(`<${e.name}>`):T.placeholder(`[${e.name}]`),r=e.named?`${n}, ${V(e)}`:n,i=[e.description,e.defaultValue===void 0?void 0:T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)].filter(Boolean).join(` `);return i?U(r,i,t):`${` `.repeat(t)} ${r}`}function Oe(e){let t=f(e);if(!t)return``;let n=[];if(t.schemaType===`discriminatedUnion`&&t.discriminator){let e=t.discriminator;n=(t.variants??[]).map(t=>({label:Te(e,t),fields:t.fields}))}else(t.schemaType===`union`||t.schemaType===`xor`)&&t.unionOptions&&(n=t.unionOptions.map((e,t)=>({label:Ee(e,t),fields:e.fields})));let r=n.length>0?m(n):void 0,i=t.fields.filter(e=>e.positional&&(r===void 0||r.has(e.name))).map(e=>De(e));for(let e of n){let t=e.fields.filter(e=>e.positional&&!r?.has(e.name));t.length!==0&&i.push(``,e.label,...t.map(e=>De(e,1)))}return i.join(`
|
|
11
|
+
`)}function ke(e,t={},r){let i=[],a={help:t.help??R.help,helpAll:t.helpAll??R.helpAll,helpJson:t.helpJson??R.helpJson,version:t.version??R.version},o=f(e),s=o?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`h`))??!1,c=o?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`H`))??!1;if(s?i.push(U(T.option(`--help`),a.help)):i.push(U(`${T.option(`-h`)}, ${T.option(`--help`)}`,a.help)),c?i.push(U(T.option(`--help-all`),a.helpAll)):i.push(U(`${T.option(`-H`)}, ${T.option(`--help-all`)}`,a.helpAll)),i.push(U(T.option(`--help-json`),a.helpJson)),r?.rootVersion&&i.push(U(T.option(`--version`),a.version)),!o)return i.join(`
|
|
12
|
+
`);if(o.schemaType===`discriminatedUnion`&&o.discriminator)return Ae(o,e,i);if(o.schemaType===`union`&&o.unionOptions||o.schemaType===`xor`&&o.unionOptions)return je(o,e,i);let l=[],u=o.fields.filter(e=>!e.positional);for(let e of u){let t=V(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let r=H(e.env);r&&(n+=` ${r}`),l.push(U(t,n));let i=B(e);i&&l.push(i)}return l.push(...i),l.join(`
|
|
13
|
+
`)}function B(e,t=0,n=0){return!e.negationDisplay||!e.negationDescription?null:U(T.option(`--${e.negationDisplay}`),`${e.negationDescription} ${T.dim(`(↔ --${e.cliName})`)}`,t,n)}function Ae(e,t,n){let r=[],i=e.discriminator,a=e.variants??[],o=u(e,i);if(o){let t=a.map(e=>e.discriminatorValue).join(`|`),n=`${T.option(`--${i}`)} ${T.placeholder(`<${t}>`)}`,s=e.description??o.description??`Action to perform`;r.push(U(n,s))}let s=m(a,i);for(let t of s){let n=e.fields.find(e=>e.name===t);if(n&&!n.positional){let e=V(n),t=n.description??``;n.defaultValue!==void 0&&(t+=` ${T.defaultValue(`(default: ${JSON.stringify(n.defaultValue)})`)}`);let i=H(n.env);i&&(t+=` ${i}`),r.push(U(e,t));let a=B(n);a&&r.push(a)}}r.push(...n);for(let e of a){let t=e.fields.filter(e=>e.name!==i&&!s.has(e.name)&&!e.positional);if(t.length>0){r.push(``),r.push(Te(i,e));for(let e of t){let t=V(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let i=H(e.env);i&&(n+=` ${i}`),r.push(U(t,n,1));let a=B(e,1);a&&r.push(a)}}}return r.join(`
|
|
14
|
+
`)}function je(e,t,n){let r=[],i=e.unionOptions??[],a=m(i);for(let t of a){let n=e.fields.find(e=>e.name===t);if(n&&!n.positional){let e=V(n),t=n.description??``;n.defaultValue!==void 0&&(t+=` ${T.defaultValue(`(default: ${JSON.stringify(n.defaultValue)})`)}`);let i=H(n.env);i&&(t+=` ${i}`),r.push(U(e,t));let a=B(n);a&&r.push(a)}}r.push(...n);for(let e=0;e<i.length;e++){let t=i[e];if(!t)continue;let n=t.fields.filter(e=>!a.has(e.name)&&!e.positional),o=Ee(t,e);if(n.length>0){r.push(``),r.push(o);for(let e of n){let t=V(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let i=H(e.env);i&&(n+=` ${i}`),r.push(U(t,n,1));let a=B(e,1);a&&r.push(a)}}else r.push(``),r.push(o),r.push(` ${T.dim(T.italic(`no options`))}`)}return r.join(`
|
|
15
|
+
`)}function V(e){let t=[];if(e.alias)for(let n of e.alias)n.length===1&&t.push(T.option(`-${n}`));let n=T.option(`--${e.cliName}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();n+=` ${T.placeholder(`<${t}>`)}`}if(t.push(n),e.alias){for(let n of e.alias)if(n.length>1){let r=T.option(`--${n}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();r+=` ${T.placeholder(`<${t}>`)}`}t.push(r)}}let r=t.join(`, `);return e.type===`boolean`&&e.negationDisplay&&!e.negationDescription?`${r} / ${T.option(`--${e.negationDisplay}`)}`:r}function H(e){if(!e)return``;let t=Array.isArray(e)?e:[e];return T.dim(`[env: ${t.join(`, `)}]`)}function Me(e){return e.replace(/\x1B\[[0-9;]*m/g,``)}function Ne(e,t){let n=Me(e).length,r=Math.max(0,t-n);return e+` `.repeat(r)}function Pe(e,t){if(!e.includes(`
|
|
16
|
+
`))return e;let n=` `.repeat(t);return e.split(`
|
|
17
|
+
`).join(`\n${n}`)}function U(e,t,n=0,r=0){let i=` `.repeat(n),a=Me(e).length,o=32-n*2+r,s=o+2+n*2,c=Pe(t,s);return a>=o?`${i} ${e}\n${` `.repeat(s)}${c}`:`${i} ${Ne(e,o)}${c}`}function Fe(e,t=0,n=0){let r=V(e),i=e.description??``;e.defaultValue!==void 0&&(i+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(i+=` ${T.required(`(required)`)}`);let a=H(e.env);return a&&(i+=` ${a}`),U(r,i,t,n)}function Ie(e){let t=[];for(let n of e.fields){if(n.positional)continue;t.push(Fe(n));let e=B(n);e&&t.push(e)}return t.join(`
|
|
18
|
+
`)}function Le(e,t){let n=[],r=f(e);if(r){let e=r.fields.filter(e=>!e.positional);for(let r of e){let e=V(r),i=r.description??``;r.defaultValue!==void 0&&(i+=` ${T.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let a=H(r.env);a&&(i+=` ${a}`),n.push(U(e,i,t,2));let o=B(r,t,2);o&&n.push(o)}}return n}function Re(e,t,n){let r=[];for(let[i,a]of z(e)){let e=b(a),o=t?`${t} ${i}`:i,s=e?.description??``,c=e?.aliases,l=c&&c.length>0?`${o}, ${c.join(`, `)}`:o;if(r.push(U(T.command(l),s,n)),e){let t=Le(e,n+1);r.push(...t);let i=e.subCommands?Object.fromEntries(z(e.subCommands)):void 0;if(i&&Object.keys(i).length>0){let e=Re(i,o,n);r.push(...e)}}}return r}function W(e,t){let n=[],r=t.context;t.agentHelp&&n.push(F(t.agentHelp));let i=Se(e,r);if(i){let e=T.commandName(i);r?.rootName&&r.commandPath&&r.commandPath.length>0?r.rootVersion?e+=` ${T.version(`(${r.rootName} v${r.rootVersion})`)}`:e+=` ${T.version(`(${r.rootName})`)}`:r?.rootVersion&&(e+=` ${T.version(`v${r.rootVersion}`)}`),n.push(e)}r?.aliasFor&&n.push(T.dim(`Alias for ${T.commandName(r.aliasFor)}`)),e.description&&n.push(e.description),!r?.aliasFor&&e.aliases&&e.aliases.length>0&&n.push(`${T.sectionHeader(`Aliases:`)} ${e.aliases.map(e=>T.command(e)).join(`, `)}`),n.push(`${T.sectionHeader(`Usage:`)} ${we(e,r)}`);let a=Oe(e);a&&n.push(`${T.sectionHeader(`Arguments:`)}\n${a}`);let o=ke(e,t.descriptions,r);if(o&&n.push(`${T.sectionHeader(`Options:`)}\n${o}`),r?.globalExtracted?.fields.length&&n.push(`${T.sectionHeader(`Global Options:`)}\n${Ie(r.globalExtracted)}`),t.showSubcommands!==!1&&e.subCommands&&z(e.subCommands).length>0){let i=r?.commandPath?.join(` `)??``,a=Object.fromEntries(z(e.subCommands));if(t.showSubcommandOptions){let e=Re(a,i,0);n.push(`${T.sectionHeader(`Commands:`)}\n${e.join(`
|
|
19
|
+
`)}`)}else{let e=[];for(let[t,n]of Object.entries(a)){let r=b(n),a=r?.description??``,o=i?`${i} ${t}`:t,s=r?.aliases,c=s&&s.length>0?`${o}, ${s.join(`, `)}`:o;e.push(U(T.command(c),a))}n.push(`${T.sectionHeader(`Commands:`)}\n${e.join(`
|
|
20
|
+
`)}`)}}if(e.examples&&e.examples.length>0){let t=Be(e.examples,r);n.push(`${T.sectionHeader(`Examples:`)}\n${t}`)}if(e.notes){let t=F(e.notes).split(`
|
|
21
|
+
`).map(e=>e===``?``:` ${e}`).join(`
|
|
22
|
+
`);n.push(`${T.sectionHeader(`Notes:`)}\n${t}`)}return`\n${n.join(`
|
|
23
|
+
|
|
24
|
+
`)}\n`}function G(e){let t={name:e.name,cliName:e.cliName,positional:e.positional,named:e.named,required:e.required,type:e.type};return e.alias&&(t.alias=e.alias),e.description!==void 0&&(t.description=e.description),e.placeholder!==void 0&&(t.placeholder=e.placeholder),e.env!==void 0&&(t.env=e.env),e.defaultValue!==void 0&&(t.defaultValue=e.defaultValue),e.enumValues!==void 0&&(t.enumValues=e.enumValues),e.negation!==void 0&&(t.negation=e.negation),e.negationDisplay!==void 0&&(t.negationDisplay=e.negationDisplay),e.negationDescription!==void 0&&(t.negationDescription=e.negationDescription),t}function ze(e,t){let n=Ce(e,t),r=!!t?.globalExtracted?.fields.length,i=e.subCommands&&z(e.subCommands).length>0?e.run?`optional`:`required`:void 0,a=f(e);return{commandName:n,hasGlobalOptions:r,hasOptions:a?p(a).length>0:!1,subcommand:i,positionals:a?o(a).map(e=>({name:e.name,required:e.required})):[]}}function K(e,t={}){let n=t.context,r=n?.commandPath??[],i={help:t.descriptions?.help??R.help,helpAll:t.descriptions?.helpAll??R.helpAll,helpJson:t.descriptions?.helpJson??R.helpJson,...n?.rootVersion?{version:t.descriptions?.version??R.version}:{}},a=f(e),s,c=[],l=[],d,p,h;if(a){if(s=a.schemaType,c=o(a).map(G),a.schemaType===`discriminatedUnion`&&a.discriminator&&a.variants){let e=a.discriminator;d=e;let t=a.variants,n=m(t,e),r=u(a,e),i=a.fields.filter(e=>!e.positional&&n.has(e.name));l=[...r?[{...G(r),description:a.description??r.description??`Action to perform`}]:[],...i.map(G)],p=t.map(t=>({discriminatorValue:t.discriminatorValue,description:t.description,fields:t.fields.filter(t=>t.name!==e&&!n.has(t.name)).map(G)}))}else if((a.schemaType===`union`||a.schemaType===`xor`)&&a.unionOptions){let e=a.unionOptions,t=m(e);l=a.fields.filter(e=>!e.positional&&t.has(e.name)).map(G),h=e.map(e=>({description:e.description,fields:e.fields.filter(e=>!t.has(e.name)).map(G)}))}else l=a.fields.filter(e=>!e.positional).map(G)}let g=n?.globalExtracted?.fields.length?n.globalExtracted.fields.filter(e=>!e.positional).map(G):void 0,_;if(e.subCommands){let i=z(e.subCommands);i.length>0&&(_=i.map(([i,a])=>{let o=b(a);if(!o)return{name:i,unresolved:!0};let s={commandPath:[...r,i],rootName:n?.rootName??e.name,rootVersion:n?.rootVersion,globalExtracted:n?.globalExtracted};return{name:i,aliases:o.aliases,data:K(o,{descriptions:t.descriptions,context:s})}}))}return{name:e.name??`command`,commandPath:r,rootName:n?.rootName,version:n?.rootVersion,aliasFor:n?.aliasFor,description:e.description,aliases:e.aliases,usage:ze(e,n),builtinOptions:i,schemaType:s,positionals:c,options:l,discriminator:d,variants:p,unionOptions:h,globalOptions:g,subcommands:_,examples:e.examples,notes:e.notes,agentHelp:t.agentHelp}}function Be(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(` ${T.dim(t.desc).split(`
|
|
25
|
+
`).join(`
|
|
26
|
+
`)}`),n.push(` ${T.dim(`$`)} ${a}${t.cmd}`),t.output)for(let e of t.output.split(`
|
|
27
|
+
`))n.push(` ${e}`);n.push(``)}return n.length>0&&n[n.length-1]===``&&n.pop(),n.join(`
|
|
28
|
+
`)}var Ve=class extends Error{constructor(e){super(e),this.name=`PositionalConfigError`}},He=class extends Error{constructor(e){super(e),this.name=`ReservedAliasError`}},Ue=class extends Error{constructor(e){super(e),this.name=`DuplicateFieldError`}},We=class extends Error{constructor(e){super(e),this.name=`DuplicateAliasError`}},q=class extends Error{constructor(e){super(e),this.name=`CaseVariantCollisionError`}},Ge=class extends Error{constructor(e){super(e),this.name=`DuplicateNegationError`}},Ke=class extends Error{constructor(e){super(e),this.name=`ReservedFieldNameError`}},qe=class extends Error{constructor(e){super(e),this.name=`DefaultSubCommandError`}},Je=class extends Error{constructor(e){super(e),this.name=`FieldTypeConflictError`}};function Ye(e,t){let n=[],r=/* @__PURE__ */ 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 Xe(e,n){let r=[],i=/* @__PURE__ */ new Map;for(let a of e.fields){let e=t(a.name),o=i.get(e);o&&o!==a.name&&r.push({commandPath:n,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 Ze(e,r){let i=[],a=/* @__PURE__ */ new Map,o=new Set(e.fields.map(e=>e.name)),s=new Set(e.fields.map(e=>e.cliName)),c=(e,t,n)=>{(o.has(e)||s.has(e))&&i.push({commandPath:r,type:`duplicate_alias`,message:`Alias "${e}" for field "${t}" conflicts with existing field name or CLI name "${e}".`,field:t});let c=a.get(e);if(c&&c!==t){let a=n?` (derived camelCase variant)`:``;i.push({commandPath:r,type:`duplicate_alias`,message:`Duplicate alias "${e}"${a} detected. Both "${c}" and "${t}" use the same alias.`,field:t})}a.set(e,t)};for(let r of e.fields){let e=n(r);if(e.length!==0){for(let n of e)if(c(n,r.name,!1),n.length>1&&n.includes(`-`)){let e=t(n);e!==n&&!o.has(e)&&c(e,r.name,!0)}}}return i}function Qe(e,r){let i=[],a=/* @__PURE__ */ new Map,o=(e,t,n)=>{a.has(e)||a.set(e,{field:t,kind:n})};for(let r of e.fields){if(o(r.name,r.name,`field name`),r.name.includes(`-`)){let e=t(r.name);e!==r.name&&o(e,r.name,`field name`)}if(r.cliName!==r.name&&o(r.cliName,r.name,`CLI name`),r.cliName.includes(`-`)){let e=t(r.cliName);e!==r.cliName&&o(e,r.name,`CLI name`)}for(let e of n(r))if(o(e,r.name,`alias`),e.length>1&&e.includes(`-`)){let n=t(e);n!==e&&o(n,r.name,`alias`)}if(r.type===`boolean`&&r.negation===!0){let e=`no-${r.cliName}`;o(e,r.name,`default negation`);let n=t(r.cliName),i=`no${n[0]?.toUpperCase()??``}${n.slice(1)}`;i!==e&&o(i,r.name,`default negation`)}}let s=/* @__PURE__ */ new Map,c=(e,t,n)=>{let o=a.get(e);if(o){let a=n?` (derived camelCase variant)`:``,s=o.field===t?`the same field's own ${o.kind} "${e}"`:`${o.kind} "${e}" of field "${o.field}"`;i.push({commandPath:r,type:`duplicate_negation`,message:`Negation "${e}"${a} for field "${t}" conflicts with ${s}.`,field:t})}let c=s.get(e);if(c&&c!==t){let a=n?` (derived camelCase variant)`:``;i.push({commandPath:r,type:`duplicate_negation`,message:`Duplicate negation "${e}"${a} detected. Both "${c}" and "${t}" use the same negation name.`,field:t})}s.set(e,t)};for(let n of e.fields)if(typeof n.negation==`string`&&(c(n.negation,n.name,!1),n.negation.includes(`-`))){let e=t(n.negation);e!==n.negation&&c(e,n.name,!0)}return i}function $e(e,t){let n=[e,...e.variants??[],...e.unionOptions??[]],r=/* @__PURE__ */ new Set;return n.flatMap(e=>et(e.fields,t)).filter(e=>!r.has(e.message)&&r.add(e.message))}function et(e,t){let n=[],r=e.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 tt(e,t){let r=[];for(let a of e.fields){if(a.overrideBuiltinAlias!==!0)for(let e of n(a))(e===`h`||e===`H`)&&r.push({commandPath:t,type:`reserved_alias`,message:`Alias "${e}" is reserved for --${e===`h`?`help`:`help-all`}. To override this, set { overrideBuiltinAlias: true } for "${a.name}" and keep the alias where it is currently defined (in alias or hiddenAlias).`,field:a.name});let e=/* @__PURE__ */ new Set([a.cliName,...n(a)]);for(let n of e){if(!i.has(n))continue;let e=n===a.cliName;r.push({commandPath:t,type:`reserved_alias`,message:`${e?`Field "${a.name}"`:`Alias "${n}" for field "${a.name}"`} collides with the built-in --${n} option, which always takes precedence. Rename the field or its alias; this collision cannot be overridden.`,field:a.name})}}return r}function nt(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 J(e){let t=Ye(e,[]);if(t.length>0)throw new Ue(`Duplicate field name "${t[0]?.field??`unknown`}" detected. Each field must have a unique name.`)}function Y(e){let t=Ze(e,[]);if(t.length>0){let e=t[0];throw new We(e.message)}}function rt(e){let t=$e(e,[]);if(t.length>0){let e=t[0];throw new Ve(e.message)}}function it(e,t){let n=tt(e,[]);if(n.length>0)throw new He(n[0].message)}function at(e){let t=nt(e,[]);if(t.length>0){let e=t[0];throw new Ke(e.message)}}function ot(e){let t=Qe(e,[]);if(t.length>0){let e=t[0];throw new Ge(e.message)}}function X(e){let t=Xe(e,[]);if(t.length>0){let e=t[0];throw new q(e.message)}}function st(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 ct(e,n,r){let i=[],a=/* @__PURE__ */ new Map;for(let n of e.fields)a.set(t(n.name),n);for(let e of n.fields){let n=t(e.name),o=a.get(n);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}st(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 lt(e,t){let n=ct(e,t,[])[0];if(n)throw n.type===`case_variant_collision`?new q(n.message):new Je(n.message)}function ut(e,t,n){return[...Ye(e,n),...Xe(e,n),...Ze(e,n),...Qe(e,n),...$e(e,n),...tt(e,n),...nt(e,n)]}function dt(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 ft(e){let t=dt(e,[]);if(t.length>0)throw new qe(t[0].message)}function pt(e,t){let n=[];if(!e.subCommands)return n;let r=/* @__PURE__ */ 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=x(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 mt(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 ht(e,t={}){let n=t.commandPath??[e.name],r=[],i=e.subCommands?Object.keys(e.subCommands).length>0:!1,a=t.globalArgs?l(t.globalArgs):void 0;if(e.args){let t=l(e.args);r.push(...ut(t,i,n)),a&&r.push(...ct(a,t,n))}if(r.push(...pt(e,n)),r.push(...dt(e,n)),e.subCommands)for(let[i,a]of Object.entries(e.subCommands)){let e=await S(a);r.push(...mt(i,e.name,n));let o=await ht(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 gt(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(`
|
|
29
|
+
`)}function _t(e){let{aliasMap:t=/* @__PURE__ */ new Map,booleanFlags:r=/* @__PURE__ */ new Set,definedNames:i=/* @__PURE__ */ new Set,negationMap:a=/* @__PURE__ */ new Map,defaultNegationDisabledFields:o=/* @__PURE__ */ new Set}=M(e),s=/* @__PURE__ */ new Set;for(let t of e.fields)for(let e of n(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:r,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 vt(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=k(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 yt(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),yt(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function bt(e,t,n){let r=_t(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||xt.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}=vt(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 xt=/* @__PURE__ */ new Set([`--help`,`-h`,`--help-all`,`-H`,`--help-json`,`--version`]);function St(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?_t(t):{aliasMap:/* @__PURE__ */ new Map,booleanFlags:/* @__PURE__ */ new Set,definedNames:/* @__PURE__ */ new Set,flagNames:/* @__PURE__ */ new Set,cliNames:/* @__PURE__ */ new Set,aliases:/* @__PURE__ */ new Set,negationMap:/* @__PURE__ */ new Map,defaultNegationDisabledFields:/* @__PURE__ */ new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||xt.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=vt(n,i);if(s){yt(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)){yt(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 wt(e,t,r={}){let i=C(t),o=[...i],s=o.length>0;if(s&&e.length>0){if(r.globalExtracted){let t=bt(e,o,r.globalExtracted);if(t.subCommandIndex>=0){let n=Ot(t.globalTokensBefore,r.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:n}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=l(t.args),r.skipValidation||(J(c),X(c),Y(c),ot(c),rt(c),it(c,s),at(c),r.globalExtracted&<(r.globalExtracted,c)));let u=e,d,f=[];if(r.globalExtracted){let t=c?a(c):[],n=new Set(t.map(e=>e.name)),{separated:i,globalParsed:o,suppressedTokens:s}=kt(e,r.globalExtracted,c&&{...c,fields:[...t,...c.fields.filter(e=>!n.has(e.name))]});u=i,d=o,f=s}let p=e.indexOf(`--`),m=p>=0?e.slice(0,p):e,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`H`))??!1,g=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`h`))??!1,_=m.includes(`--help-all`)||!h&&m.includes(`-H`),v=m.includes(`--help-json`),y=!_&&!v&&(m.includes(`--help`)||!g&&m.includes(`-h`)),ee=m.includes(`--version`);if(y||_||v||ee)return{helpRequested:y,helpAllRequested:_,helpJsonRequested:v,versionRequested:ee,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:f,rawGlobalArgs:d};if(!c){let e=u.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?u.slice(0,e):u,rest:e>=0?u.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:f,rawGlobalArgs:d}}let b=Tt(c,u,{promptAvailable:r.promptAvailable===!0,inheritedNames:r.inheritedNames??/* @__PURE__ */ new Set});if(!b)return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:f,extractedFields:c,matchesNoUnionOption:!0,rawGlobalArgs:d};let te=M(b),x=A(u,te),S=O(x,b),w=Et(S,b),T=b.fields.filter(e=>e.named),E=new Set(T.map(e=>e.name)),k=new Set(T.map(e=>e.cliName)),j=/* @__PURE__ */ new Set;for(let e of T)for(let t of n(e))j.add(t);if(r.globalExtracted)for(let e of r.globalExtracted.fields){E.add(e.name),k.add(e.cliName);for(let t of n(e))j.add(t)}let N=[];for(let e of Object.keys(x.options))!E.has(e)&&!k.has(e)&&!j.has(e)&&N.push(e);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:S,positionals:x.positionals,rest:x.rest,unknownFlags:N,unknownGlobalFlags:f,extractedFields:c,optionFields:T,positionalSlotFields:D(b,x.options),rawGlobalArgs:d,envFallbackFields:w}}function Tt(e,t,n){let{discriminator:r,variants:i,unionOptions:a}=e;if(r&&i){let n=e=>{let n=O(A(t,M(e)),e);return Et(n,e),n},a=c(e,n);if(a!==e)return a;let o=new Set(i.map(e=>e.discriminatorValue));return i.some(t=>o.has(n({...e,fields:t.fields})[r]))?void 0:e}if(a){let r=n.promptAvailable?a.filter(e=>Dt(e,t,void 0)):[],i=a.find(e=>Dt(e,t,n.inheritedNames))??(r.length===1?r[0]:void 0);return i&&{...e,fields:i.fields}}return e}function Et(e,t){let n=/* @__PURE__ */ new Set;for(let r of t.fields)if(r.env&&e[r.name]===void 0)for(let t of[r.env].flat()){let i=process.env[t];if(i!==void 0){e[r.name]=j(i,r.type),n.add(r.name);break}}return n}function Dt(e,t,r){let i=A(t,M(e)),a=e.fields.filter(e=>e.named),o=new Set(a.flatMap(e=>[e.name,e.cliName,...n(e)]));if(Object.keys(i.options).some(e=>!o.has(e)))return!1;let s=D(e,i.options),c=i.positionals.length+i.rest.length;if(!s.some(e=>e.type===`array`)&&c>s.length)return!1;let l=O(i,e);return e.fields.some(e=>e.type!==`boolean`&&[l[e.name]].flat().includes(!0))?!1:r===void 0||(Et(l,e),e.fields.every(e=>!e.required||l[e.name]!==void 0||r.has(e.name)))}function Ot(e,t){if(e.length===0)return{};let n=M(t),r=A(e,n);return O(r,t)}function kt(e,r,i){let a=_t(r),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?M(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=/* @__PURE__ */ new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let r of[e.cliName,...n(e)]){let e=`no-${r}`;d.add(e),d.add(t(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}=vt(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:Ot(f,r),suppressedTokens:m}}function At(e,t){return s(t)?d(e,t):r().validate(e,t)}function jt(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
|
|
30
|
+
`)}function Mt(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 Nt(e,t){let n=Math.max(2,Math.floor(e.length/2));return t.map(t=>({candidate:t,distance:Mt(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function Pt(e,t){let n=Nt(e.replace(/^-{1,2}/,``),t),r=`${T.warning(`Warning: Unknown option:`)} ${T.bold(e)}`;if(n.length>0){r+=`\n\n${T.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${w.arrow} ${T.option(`--${e}`)}`}return r}function Ft(e,t){return t&&e.stack?`${T.error(`Error:`)} ${e.message}\n\n${T.dim(e.stack)}`:`${T.error(`Error:`)} ${e.message}`}function Q(n){return new Proxy(n,{get(n,r,i){if(typeof r==`string`){if(r in n)return Reflect.get(n,r,i);let a=t(r);if(a!==r&&a in n)return Reflect.get(n,a,i);let o=e(r);if(o!==r&&o in n)return Reflect.get(n,o,i)}return Reflect.get(n,r,i)},has(n,r){if(typeof r==`string`){if(r in n)return!0;let i=t(r);if(i!==r&&i in n)return!0;let a=e(r);if(a!==r&&a in n)return!0}return Reflect.has(n,r)}})}async function It(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 Lt={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function Rt(n,r){Object.defineProperty(n,"$source",{value:n=>r.get(n)??r.get(t(n))??r.get(e(n))??`default`,enumerable:!1})}function zt(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function Bt(e,t){Object.defineProperty(e,"$agent",{value:t,enumerable:!1})}function Vt(e,t){return e&&(n=>e({...n,agent:t}))}function Ht(e,t){let{agentHelp:n,_agent:r}=e;if(n&&r)return typeof n==`string`?n:n({agent:r,commandPath:t.commandPath??[]})}function Ut(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function Wt(e,t,n={}){let r=Jt(n),i=h(),a=Vt(n.cleanup,i),o=n.captureLogs??!1,s=o?y():null;if(n.setup){s?.start();try{await n.setup({agent:i})}catch(e){let t=e instanceof Error?e:Error(String(e));if(a)try{await a({error:t})}catch{}return s?.stop(),{success:!1,error:t,exitCode:1,logs:s?.getLogs()??_()}}s?.stop()}let c=await $(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:a,_existingLogs:s?.getLogs(),_agent:i});if(a){let e=o?y():null;e?.start();let t={error:c.success?void 0:c.error};try{await a(t)}catch(t){if(c.success){let n=t instanceof Error?t:Error(String(t));return e?.stop(),{success:!1,error:n,exitCode:1,logs:v(c.logs,e?.getLogs()??_())}}}e?.stop();let n=e?.getLogs()??_();if(n.entries.length>0)return{...c,logs:v(c.logs,n)}}return c}function Gt(e,t,n){let r=Ct(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function Kt(e,t={}){if(t.compileCache!==!1&&g(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=l(t.globalArgs)}catch{}let i=t;if(Gt(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=Jt(i),o=h(),s=Vt(i.cleanup,o);if(i.skipValidation||ft(e),i.onUnknownSubcommand&&!e.run&&!Gt(e,n,r)){let t=C(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 qt(),process.exit(a)}}}if(i.setup)try{await i.setup({agent:o})}catch(e){let t=e instanceof Error?e:Error(String(e));if(s)try{await s({error:t})}catch{}process.exit(1)}let c=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,agentHelp:i.agentHelp,_globalExtracted:a,_globalCleanup:s,_agent:o,_context:{commandPath:[],rootName:e.name,rootVersion:i.version,globalExtracted:a}});if((i.displayErrors??!0)&&!c.success&&c.error&&(i.logger??Lt).error(Ft(c.error,i.debug??!1)),s){let e={error:c.success?void 0:c.error};try{await s(e)}catch{}}await qt(),process.exit(c.exitCode)}async function qt(){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??Lt,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?y():null;a?.start();let o=()=>{let e=n._existingLogs??_(),t=a?.getLogs()??_();return v(e,t)};try{n.skipValidation||ft(e);let s=wt(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted,promptAvailable:n.prompt!==void 0,inheritedNames:new Set(Object.keys(n._parsedGlobalArgs??{}))}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=C(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 qt(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:/* @__PURE__ */ Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested||s.helpJsonRequested){let c=!1,l=te(e),u=C(e);if(l.length>0){let e=Ct(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}let d=Ht(n,i);if(s.helpJsonRequested){let t=K(e,{context:i,agentHelp:d});r.log(JSON.stringify(t))}else{let t=W(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i,agentHelp:d});r.log(t)}if(a?.stop(),c){let e=Ct(t,i.globalExtracted)??``,n=Nt(e,[...u]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return{success:!1,error:/* @__PURE__ */ 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:/* @__PURE__ */ 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(Pt(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 ee(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(E(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.positionalSlotFields??[],d=u.some(e=>e.type===`array`),f=[...s.positionals,...s.rest],p=d?[]:f.slice(u.length),m=d?[]:s.positionals.slice(u.length);if(s.matchesNoUnionOption)return a?.stop(),{success:!1,error:/* @__PURE__ */ Error(`Arguments match none of the accepted forms. See --help for the accepted forms.`),exitCode:1,logs:o()};if(te(e).length>0&&!s.subCommand&&!e.run&&p.length===0){if(e.defaultSubCommand&&s.unknownFlags.length===0){let r=e.subCommands?.[e.defaultSubCommand];if(r){let l=await S(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(E(e)),p=t.filter(e=>!f(e));return $(l,[],{...n,_context:u,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...p]})}}let l=W(e,{showSubcommands:n.showSubcommands??!0,context:i,agentHelp:Ht(n,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.optionFields?.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:/* @__PURE__ */ Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(Pt(e,t))}if(p.length>0){let t=C(e);if(t.size>0){let e=m.find(e=>!e.startsWith(`-`)&&!t.has(e));if(e){let n=Nt(e,[...t]),r=n.length>0?` Did you mean: ${n.join(`, `)}?`:``;return a?.stop(),{success:!1,error:/* @__PURE__ */ 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:/* @__PURE__ */ Error(`Unexpected positional argument${p.length>1?`s`:``}: ${p.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of p)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let h={},g=e.name===`__complete`,_=new Set(Object.keys(c)),v=/* @__PURE__ */ new Set;if(n.globalArgs&&n._globalExtracted&&!g){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]=j(t,e.type),v.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=At(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(jt(e.errors)),exitCode:1,logs:o()};h=e.data}if(!e.args){let t=/* @__PURE__ */ new Map;for(let e of _)t.set(e,`cli`);for(let e of v)t.set(e,`env`);Rt(h,t),zt(h,Ut(e,i)),Bt(h,n._agent);let r=Q(h);return n._globalExtracted&&!g&&await It(r,n._globalExtracted,r),a?.stop(),await ne(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let y=s.rawArgs,b=/* @__PURE__ */ new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(y,s.extractedFields),t={...y};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,b.add(n));y=t}let x=/* @__PURE__ */ new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||b.has(e.name))&&_.has(e.name)&&Object.hasOwn(h,e.name)&&(y={...y,[e.name]:h[e.name]},x.add(e.name));let w=At(y,e.args);if(!w.success)return a?.stop(),{success:!1,error:Error(jt(w.errors)),exitCode:1,logs:o()};let T=Q(w.data),D=/* @__PURE__ */ new Map;for(let e of _)D.set(e,`cli`);for(let e of v)D.set(e,`env`);Rt(h,D),zt(h,Ut(e,i)),Bt(h,n._agent);let O=Q(h);n._globalExtracted&&!g&&await It(O,n._globalExtracted,O),s.extractedFields&&!g&&await It(T,s.extractedFields,O);let k={...O,...T},A=new Map(D),M=s.envFallbackFields??/* @__PURE__ */ new Set;for(let e of s.extractedFields?.fields??[]){if(x.has(e.name)){A.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||M.has(e.name);A.set(e.name,t?M.has(e.name)?`env`:`cli`:`default`)}Rt(k,A),zt(k,Ut(e,i)),Bt(k,n._agent);let N=Q(k);return a?.stop(),await ne(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 Jt(e){if(!e.globalArgs)return;let t=l(e.globalArgs);if(!e.skipValidation){J(t),X(t),Y(t),ot(t),it(t,!0),at(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{He as C,P as D,K as E,F as O,Ve as S,W as T,qe as _,gt as a,Ge as b,lt as c,J as d,ot as f,q as g,at as h,jt as i,ft as l,it as m,Kt as n,X as o,rt as p,Q as r,ht as s,Wt as t,Y as u,We as v,Ke as w,Je as x,Ue as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./runner-CqslNxyn.js";export{e as runCommand};
|
package/dist/skill.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as ArgsSchema, b as AnyCommand, et as UnknownKeysMode } from "./arg-registry-vcm6uTB1.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region ../core/src/skill/types.d.ts
|
|
4
4
|
/**
|
package/dist/{with-completion-command-BKHwbzEc.d.ts → with-completion-command-DR98pkpR.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as ArgsSchema, b as AnyCommand, et as UnknownKeysMode, f as ResolvedExpandCandidate, g as DynamicCompletionResolver, n as ArgMeta } from "./arg-registry-vcm6uTB1.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.4.
|
|
3
|
+
"version": "0.4.2",
|
|
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",
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
"types": "./dist/compile-cache.d.ts",
|
|
42
42
|
"default": "./dist/compile-cache.js"
|
|
43
43
|
},
|
|
44
|
+
"./agent": {
|
|
45
|
+
"types": "./dist/agent.d.ts",
|
|
46
|
+
"default": "./dist/agent.js"
|
|
47
|
+
},
|
|
44
48
|
"./docs": {
|
|
45
49
|
"types": "./dist/docs.d.ts",
|
|
46
50
|
"default": "./dist/docs.js"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./cli-main-C7vClSAF.js";export{e as runPolittyCli};
|
package/dist/runner-BKyUtmoD.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./runner-CBG2DbVY.js";export{e as runCommand};
|
package/dist/runner-CBG2DbVY.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import{a as e,i as t,n,o as r,t as i}from"./field-meta-D9ySul7J.js";import{a,c as o,f as s,l as c,n as l,o as u,p as d,r as f,s as p,t as m}from"./schema-extractor-fZZ2_WAZ.js";import{n as h}from"./compile-cache-6u9hgeWu.js";import{n as g,r as _,t as v}from"./log-collector-uhRWYT-z.js";import{a as ee,c as y,n as b,o as x,r as S,t as C}from"./subcommand-router-DR2KBQAt.js";import{a as w,i as T}from"./logger-CoeDrmRr.js";import{a as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./argv-parser-CawJSYjw.js";import{stripVTControlCharacters as N}from"node:util";async function P(e,t,n={}){let r,i,a=n.captureLogs??!1?v():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=/* @__PURE__ */ 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 l=n.existingLogs??g(),u=a?.getLogs()??g(),d=_(l,u);return r?{success:!1,error:r,exitCode:1,logs:d}:{success:!0,result:i,exitCode:0,logs:d}}function te(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 ne(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 re(e){let t=!1,n=!1,r=!1;for(let i of e){let e=i.codePointAt(0);if(e===65039){r=!0;continue}te(e)||(t=!0,ne(e)&&(n=!0))}return t?n||r?2:1:0}const ie=(()=>{try{return new Intl.Segmenter(`en`,{granularity:`grapheme`})}catch{return}})();function F(e){if(e.length===0)return 0;let t=e.includes(`\x1B`)||e.includes(``)?N(e):e,n=0;if(ie)for(let{segment:e}of ie.segment(t))n+=re(e);else for(let e of t)n+=re(e);return n}function I(e){let t=[],n=e.replace(/`([^`]+)`/g,(e,n)=>{let r=t.length;return t.push(T.cyan(n)),`\x00CODE${r}\x00`});return n=n.replace(/\*\*(.+?)\*\*/g,(e,t)=>T.bold(t)),n=n.replace(/__(.+?)__/g,(e,t)=>T.bold(t)),n=n.replace(/\*(.+?)\*/g,(e,t)=>T.italic(t)),n=n.replace(/(?<!\w)_(.+?)_(?!\w)/g,(e,t)=>T.italic(t)),n=n.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`${T.underline(t)} ${T.dim(`(${n})`)}`),n=n.replace(/\x00CODE(\d+)\x00/g,(e,n)=>t[Number(n)]),n}function ae(e){return he(e.split(`
|
|
2
|
-
`)).map(be).join(`
|
|
3
|
-
|
|
4
|
-
`)}const oe=/^(#{1,6})\s+(.+)$/,se=/^(?:---+|\*\*\*+|___+)\s*$/,ce=/^>\s?(.*)$/,le=/^-\s+(.+)$/,ue=/^(\d+)[.)]\s+(.+)$/,de=/^(`{3,}|~{3,})(\S*)\s*$/,fe=/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*$/,pe=/^\|(.+)\|$/,me=/^\|(\s*:?-+:?\s*\|)+$/;function he(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r.trim()===``){n++;continue}let i=r.match(de);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(oe);if(a){t.push({type:`heading`,level:a[1].length,content:a[2]}),n++;continue}if(se.test(r)){t.push({type:`hr`}),n++;continue}if(ce.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(ce);if(t)r.push(t[1]),n++;else break}if(r.length>0){let e=r[0].match(fe);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(le.test(r)){let r=[];for(;n<e.length;){let t=e[n].match(le);if(t)r.push(t[1]),n++;else break}t.push({type:`ul`,items:r});continue}let o=r.match(ue);if(o){let r=Number(o[1]),i=[];for(;n<e.length;){let t=e[n].match(ue);if(t)i.push(t[2]),n++;else break}t.push({type:`ol`,items:i,start:r});continue}if(pe.test(r)&&n+1<e.length&&me.test(e[n+1])){let i=ge(r),a=_e(e[n+1]);n+=2;let o=[];for(;n<e.length&&pe.test(e[n]);)o.push(ge(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()===``||oe.test(t)||se.test(t)||ce.test(t)||le.test(t)||ue.test(t)||de.test(t)||pe.test(t)&&n+1<e.length&&me.test(e[n+1]))break;s.push(t),n++}s.length>0&&t.push({type:`paragraph`,lines:s})}return t}function ge(e){return e.slice(1,-1).split(`|`).map(e=>e.trim())}function _e(e){return e.slice(1,-1).split(`|`).map(e=>{let t=e.trim();return t.startsWith(`:`)&&t.endsWith(`:`)?`center`:t.endsWith(`:`)?`right`:`left`})}function ve(e,t,n){let r=F(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 ye={NOTE:{icon:`ℹ`,label:`Note`,styleFn:T.cyan},TIP:{icon:`💡`,label:`Tip`,styleFn:T.green},IMPORTANT:{icon:`❗`,label:`Important`,styleFn:T.magenta},WARNING:{icon:`⚠`,label:`Warning`,styleFn:T.yellow},CAUTION:{icon:`🔴`,label:`Caution`,styleFn:T.red}};function be(e){switch(e.type){case`heading`:return T.green(T.bold(I(e.content)));case`hr`:return T.dim(`─`.repeat(40));case`blockquote`:{let t=T.dim(`│ `);return e.lines.map(e=>`${t}${I(e)}`).join(`
|
|
5
|
-
`)}case`alert`:{let{icon:t,label:n,styleFn:r}=ye[e.alertType],i=r(T.bold(`│`))+` `,a=`${i}${r(t)} ${r(n)}`;return e.lines.length===0?a:`${a}\n${e.lines.map(e=>`${i}${I(e)}`).join(`
|
|
6
|
-
`)}`}case`ul`:return e.items.map(e=>`${T.dim(`•`)} ${I(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`${T.dim(`${i}.`)} ${I(t)}`}).join(`
|
|
8
|
-
`)}case`table`:{let t=e.headers.length,n=e.headers.map(e=>I(e)),r=e.rows.map(e=>Array.from({length:t},(t,n)=>I(e[n]??``))),i=n.map((e,t)=>{let n=F(e),i=r.map(e=>F(e[t]));return Math.max(n,...i)}),a=T.dim(`│`),o=T.dim(`┌─${i.map(e=>`─`.repeat(e)).join(`─┬─`)}─┐`),s=T.dim(`├─${i.map(e=>`─`.repeat(e)).join(`─┼─`)}─┤`),c=T.dim(`└─${i.map(e=>`─`.repeat(e)).join(`─┴─`)}─┘`);return[o,`${a} ${n.map((t,n)=>T.bold(ve(t,i[n],e.alignments[n]??`left`))).join(` ${a} `)} ${a}`,s,...r.map(t=>{let n=t.map((t,n)=>ve(t,i[n],e.alignments[n]??`left`));return`${a} ${n.join(` ${a} `)} ${a}`}),c].join(`
|
|
9
|
-
`)}case`code`:return e.lines.map(e=>` ${T.yellow(e)}`).join(`
|
|
10
|
-
`);case`paragraph`:return I(e.lines.join(` `))}}const L={help:`Show help`,helpAll:`Show help with all subcommand options`,helpJson:`Show help as JSON`,version:`Show version`};function xe(e){return!e.startsWith(`__`)}function R(e){return Object.entries(e).filter(([e])=>xe(e))}function Se(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?t.commandPath.join(` `):e.name??`command`}function Ce(e,t){return t?.rootName&&t.commandPath&&t.commandPath.length>0?`${t.rootName} ${t.commandPath.join(` `)}`:e.name??`command`}function we(e,t){let n=[],r=Ce(e,t);n.push(T.commandName(r)),t?.globalExtracted?.fields.length&&n.push(T.placeholder(`[global options]`));let i=f(e);if(i){let t=o(i);p(i).length>0&&n.push(T.placeholder(`[options]`)),e.subCommands&&R(e.subCommands).length>0&&(e.run||e.defaultSubCommand?n.push(T.placeholder(`[command]`)):n.push(T.option(`<command>`)));for(let e of t)e.required?n.push(T.option(`<${e.name}>`)):n.push(T.placeholder(`[${e.name}]`))}else e.subCommands&&R(e.subCommands).length>0&&(e.run||e.defaultSubCommand?n.push(T.placeholder(`[command]`)):n.push(T.option(`<command>`)));return n.join(` `)}function Te(e,t){let n=`${T.dim(`When`)} ${T.option(e)}=${T.bold(t.discriminatorValue)}:`;return t.description?`${n} ${t.description}`:n}function Ee(e,t){return` ${T.bold(`${e.description??`Variant ${t+1}`}:`)}`}function De(e,t=0){let n=e.required?T.option(`<${e.name}>`):T.placeholder(`[${e.name}]`),r=e.named?`${n}, ${B(e)}`:n,i=[e.description,e.defaultValue===void 0?void 0:T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)].filter(Boolean).join(` `);return i?H(r,i,t):`${` `.repeat(t)} ${r}`}function Oe(e){let t=f(e);if(!t)return``;let n=[];if(t.schemaType===`discriminatedUnion`&&t.discriminator){let e=t.discriminator;n=(t.variants??[]).map(t=>({label:Te(e,t),fields:t.fields}))}else(t.schemaType===`union`||t.schemaType===`xor`)&&t.unionOptions&&(n=t.unionOptions.map((e,t)=>({label:Ee(e,t),fields:e.fields})));let r=n.length>0?m(n):void 0,i=t.fields.filter(e=>e.positional&&(r===void 0||r.has(e.name))).map(e=>De(e));for(let e of n){let t=e.fields.filter(e=>e.positional&&!r?.has(e.name));t.length!==0&&i.push(``,e.label,...t.map(e=>De(e,1)))}return i.join(`
|
|
11
|
-
`)}function ke(e,t={},r){let i=[],a={help:t.help??L.help,helpAll:t.helpAll??L.helpAll,helpJson:t.helpJson??L.helpJson,version:t.version??L.version},o=f(e),s=o?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`h`))??!1,c=o?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`H`))??!1;if(s?i.push(H(T.option(`--help`),a.help)):i.push(H(`${T.option(`-h`)}, ${T.option(`--help`)}`,a.help)),c?i.push(H(T.option(`--help-all`),a.helpAll)):i.push(H(`${T.option(`-H`)}, ${T.option(`--help-all`)}`,a.helpAll)),i.push(H(T.option(`--help-json`),a.helpJson)),r?.rootVersion&&i.push(H(T.option(`--version`),a.version)),!o)return i.join(`
|
|
12
|
-
`);if(o.schemaType===`discriminatedUnion`&&o.discriminator)return Ae(o,e,i);if(o.schemaType===`union`&&o.unionOptions||o.schemaType===`xor`&&o.unionOptions)return je(o,e,i);let l=[],u=o.fields.filter(e=>!e.positional);for(let e of u){let t=B(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let r=V(e.env);r&&(n+=` ${r}`),l.push(H(t,n));let i=z(e);i&&l.push(i)}return l.push(...i),l.join(`
|
|
13
|
-
`)}function z(e,t=0,n=0){return!e.negationDisplay||!e.negationDescription?null:H(T.option(`--${e.negationDisplay}`),`${e.negationDescription} ${T.dim(`(↔ --${e.cliName})`)}`,t,n)}function Ae(e,t,n){let r=[],i=e.discriminator,a=e.variants??[],o=u(e,i);if(o){let t=a.map(e=>e.discriminatorValue).join(`|`),n=`${T.option(`--${i}`)} ${T.placeholder(`<${t}>`)}`,s=e.description??o.description??`Action to perform`;r.push(H(n,s))}let s=m(a,i);for(let t of s){let n=e.fields.find(e=>e.name===t);if(n&&!n.positional){let e=B(n),t=n.description??``;n.defaultValue!==void 0&&(t+=` ${T.defaultValue(`(default: ${JSON.stringify(n.defaultValue)})`)}`);let i=V(n.env);i&&(t+=` ${i}`),r.push(H(e,t));let a=z(n);a&&r.push(a)}}r.push(...n);for(let e of a){let t=e.fields.filter(e=>e.name!==i&&!s.has(e.name)&&!e.positional);if(t.length>0){r.push(``),r.push(Te(i,e));for(let e of t){let t=B(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let i=V(e.env);i&&(n+=` ${i}`),r.push(H(t,n,1));let a=z(e,1);a&&r.push(a)}}}return r.join(`
|
|
14
|
-
`)}function je(e,t,n){let r=[],i=e.unionOptions??[],a=m(i);for(let t of a){let n=e.fields.find(e=>e.name===t);if(n&&!n.positional){let e=B(n),t=n.description??``;n.defaultValue!==void 0&&(t+=` ${T.defaultValue(`(default: ${JSON.stringify(n.defaultValue)})`)}`);let i=V(n.env);i&&(t+=` ${i}`),r.push(H(e,t));let a=z(n);a&&r.push(a)}}r.push(...n);for(let e=0;e<i.length;e++){let t=i[e];if(!t)continue;let n=t.fields.filter(e=>!a.has(e.name)&&!e.positional),o=Ee(t,e);if(n.length>0){r.push(``),r.push(o);for(let e of n){let t=B(e),n=e.description??``;e.defaultValue!==void 0&&(n+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(n+=` ${T.required(`(required)`)}`);let i=V(e.env);i&&(n+=` ${i}`),r.push(H(t,n,1));let a=z(e,1);a&&r.push(a)}}else r.push(``),r.push(o),r.push(` ${T.dim(T.italic(`no options`))}`)}return r.join(`
|
|
15
|
-
`)}function B(e){let t=[];if(e.alias)for(let n of e.alias)n.length===1&&t.push(T.option(`-${n}`));let n=T.option(`--${e.cliName}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();n+=` ${T.placeholder(`<${t}>`)}`}if(t.push(n),e.alias){for(let n of e.alias)if(n.length>1){let r=T.option(`--${n}`);if(e.type!==`boolean`){let t=e.placeholder??e.cliName.toUpperCase();r+=` ${T.placeholder(`<${t}>`)}`}t.push(r)}}let r=t.join(`, `);return e.type===`boolean`&&e.negationDisplay&&!e.negationDescription?`${r} / ${T.option(`--${e.negationDisplay}`)}`:r}function V(e){if(!e)return``;let t=Array.isArray(e)?e:[e];return T.dim(`[env: ${t.join(`, `)}]`)}function Me(e){return e.replace(/\x1B\[[0-9;]*m/g,``)}function Ne(e,t){let n=Me(e).length,r=Math.max(0,t-n);return e+` `.repeat(r)}function Pe(e,t){if(!e.includes(`
|
|
16
|
-
`))return e;let n=` `.repeat(t);return e.split(`
|
|
17
|
-
`).join(`\n${n}`)}function H(e,t,n=0,r=0){let i=` `.repeat(n),a=Me(e).length,o=32-n*2+r,s=o+2+n*2,c=Pe(t,s);return a>=o?`${i} ${e}\n${` `.repeat(s)}${c}`:`${i} ${Ne(e,o)}${c}`}function Fe(e,t=0,n=0){let r=B(e),i=e.description??``;e.defaultValue!==void 0&&(i+=` ${T.defaultValue(`(default: ${JSON.stringify(e.defaultValue)})`)}`),e.required&&(i+=` ${T.required(`(required)`)}`);let a=V(e.env);return a&&(i+=` ${a}`),H(r,i,t,n)}function Ie(e){let t=[];for(let n of e.fields){if(n.positional)continue;t.push(Fe(n));let e=z(n);e&&t.push(e)}return t.join(`
|
|
18
|
-
`)}function Le(e,t){let n=[],r=f(e);if(r){let e=r.fields.filter(e=>!e.positional);for(let r of e){let e=B(r),i=r.description??``;r.defaultValue!==void 0&&(i+=` ${T.defaultValue(`(default: ${JSON.stringify(r.defaultValue)})`)}`);let a=V(r.env);a&&(i+=` ${a}`),n.push(H(e,i,t,2));let o=z(r,t,2);o&&n.push(o)}}return n}function Re(e,t,n){let r=[];for(let[i,a]of R(e)){let e=y(a),o=t?`${t} ${i}`:i,s=e?.description??``,c=e?.aliases,l=c&&c.length>0?`${o}, ${c.join(`, `)}`:o;if(r.push(H(T.command(l),s,n)),e){let t=Le(e,n+1);r.push(...t);let i=e.subCommands?Object.fromEntries(R(e.subCommands)):void 0;if(i&&Object.keys(i).length>0){let e=Re(i,o,n);r.push(...e)}}}return r}function U(e,t){let n=[],r=t.context,i=Se(e,r);if(i){let e=T.commandName(i);r?.rootName&&r.commandPath&&r.commandPath.length>0?r.rootVersion?e+=` ${T.version(`(${r.rootName} v${r.rootVersion})`)}`:e+=` ${T.version(`(${r.rootName})`)}`:r?.rootVersion&&(e+=` ${T.version(`v${r.rootVersion}`)}`),n.push(e)}r?.aliasFor&&n.push(T.dim(`Alias for ${T.commandName(r.aliasFor)}`)),e.description&&n.push(e.description),!r?.aliasFor&&e.aliases&&e.aliases.length>0&&n.push(`${T.sectionHeader(`Aliases:`)} ${e.aliases.map(e=>T.command(e)).join(`, `)}`),n.push(`${T.sectionHeader(`Usage:`)} ${we(e,r)}`);let a=Oe(e);a&&n.push(`${T.sectionHeader(`Arguments:`)}\n${a}`);let o=ke(e,t.descriptions,r);if(o&&n.push(`${T.sectionHeader(`Options:`)}\n${o}`),r?.globalExtracted?.fields.length&&n.push(`${T.sectionHeader(`Global Options:`)}\n${Ie(r.globalExtracted)}`),t.showSubcommands!==!1&&e.subCommands&&R(e.subCommands).length>0){let i=r?.commandPath?.join(` `)??``,a=Object.fromEntries(R(e.subCommands));if(t.showSubcommandOptions){let e=Re(a,i,0);n.push(`${T.sectionHeader(`Commands:`)}\n${e.join(`
|
|
19
|
-
`)}`)}else{let e=[];for(let[t,n]of Object.entries(a)){let r=y(n),a=r?.description??``,o=i?`${i} ${t}`:t,s=r?.aliases,c=s&&s.length>0?`${o}, ${s.join(`, `)}`:o;e.push(H(T.command(c),a))}n.push(`${T.sectionHeader(`Commands:`)}\n${e.join(`
|
|
20
|
-
`)}`)}}if(e.examples&&e.examples.length>0){let t=Be(e.examples,r);n.push(`${T.sectionHeader(`Examples:`)}\n${t}`)}if(e.notes){let t=ae(e.notes).split(`
|
|
21
|
-
`).map(e=>e===``?``:` ${e}`).join(`
|
|
22
|
-
`);n.push(`${T.sectionHeader(`Notes:`)}\n${t}`)}return`\n${n.join(`
|
|
23
|
-
|
|
24
|
-
`)}\n`}function W(e){let t={name:e.name,cliName:e.cliName,positional:e.positional,named:e.named,required:e.required,type:e.type};return e.alias&&(t.alias=e.alias),e.description!==void 0&&(t.description=e.description),e.placeholder!==void 0&&(t.placeholder=e.placeholder),e.env!==void 0&&(t.env=e.env),e.defaultValue!==void 0&&(t.defaultValue=e.defaultValue),e.enumValues!==void 0&&(t.enumValues=e.enumValues),e.negation!==void 0&&(t.negation=e.negation),e.negationDisplay!==void 0&&(t.negationDisplay=e.negationDisplay),e.negationDescription!==void 0&&(t.negationDescription=e.negationDescription),t}function ze(e,t){let n=Ce(e,t),r=!!t?.globalExtracted?.fields.length,i=e.subCommands&&R(e.subCommands).length>0?e.run?`optional`:`required`:void 0,a=f(e);return{commandName:n,hasGlobalOptions:r,hasOptions:a?p(a).length>0:!1,subcommand:i,positionals:a?o(a).map(e=>({name:e.name,required:e.required})):[]}}function G(e,t={}){let n=t.context,r=n?.commandPath??[],i={help:t.descriptions?.help??L.help,helpAll:t.descriptions?.helpAll??L.helpAll,helpJson:t.descriptions?.helpJson??L.helpJson,...n?.rootVersion?{version:t.descriptions?.version??L.version}:{}},a=f(e),s,c=[],l=[],d,p,h;if(a){if(s=a.schemaType,c=o(a).map(W),a.schemaType===`discriminatedUnion`&&a.discriminator&&a.variants){let e=a.discriminator;d=e;let t=a.variants,n=m(t,e),r=u(a,e),i=a.fields.filter(e=>!e.positional&&n.has(e.name));l=[...r?[{...W(r),description:a.description??r.description??`Action to perform`}]:[],...i.map(W)],p=t.map(t=>({discriminatorValue:t.discriminatorValue,description:t.description,fields:t.fields.filter(t=>t.name!==e&&!n.has(t.name)).map(W)}))}else if((a.schemaType===`union`||a.schemaType===`xor`)&&a.unionOptions){let e=a.unionOptions,t=m(e);l=a.fields.filter(e=>!e.positional&&t.has(e.name)).map(W),h=e.map(e=>({description:e.description,fields:e.fields.filter(e=>!t.has(e.name)).map(W)}))}else l=a.fields.filter(e=>!e.positional).map(W)}let g=n?.globalExtracted?.fields.length?n.globalExtracted.fields.filter(e=>!e.positional).map(W):void 0,_;if(e.subCommands){let i=R(e.subCommands);i.length>0&&(_=i.map(([i,a])=>{let o=y(a);if(!o)return{name:i,unresolved:!0};let s={commandPath:[...r,i],rootName:n?.rootName??e.name,rootVersion:n?.rootVersion,globalExtracted:n?.globalExtracted};return{name:i,aliases:o.aliases,data:G(o,{descriptions:t.descriptions,context:s})}}))}return{name:e.name??`command`,commandPath:r,rootName:n?.rootName,version:n?.rootVersion,aliasFor:n?.aliasFor,description:e.description,aliases:e.aliases,usage:ze(e,n),builtinOptions:i,schemaType:s,positionals:c,options:l,discriminator:d,variants:p,unionOptions:h,globalOptions:g,subcommands:_,examples:e.examples,notes:e.notes}}function Be(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(` ${T.dim(t.desc).split(`
|
|
25
|
-
`).join(`
|
|
26
|
-
`)}`),n.push(` ${T.dim(`$`)} ${a}${t.cmd}`),t.output)for(let e of t.output.split(`
|
|
27
|
-
`))n.push(` ${e}`);n.push(``)}return n.length>0&&n[n.length-1]===``&&n.pop(),n.join(`
|
|
28
|
-
`)}var Ve=class extends Error{constructor(e){super(e),this.name=`PositionalConfigError`}},He=class extends Error{constructor(e){super(e),this.name=`ReservedAliasError`}},Ue=class extends Error{constructor(e){super(e),this.name=`DuplicateFieldError`}},We=class extends Error{constructor(e){super(e),this.name=`DuplicateAliasError`}},K=class extends Error{constructor(e){super(e),this.name=`CaseVariantCollisionError`}},Ge=class extends Error{constructor(e){super(e),this.name=`DuplicateNegationError`}},Ke=class extends Error{constructor(e){super(e),this.name=`ReservedFieldNameError`}},qe=class extends Error{constructor(e){super(e),this.name=`DefaultSubCommandError`}},Je=class extends Error{constructor(e){super(e),this.name=`FieldTypeConflictError`}};function Ye(e,t){let n=[],r=/* @__PURE__ */ 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 Xe(e,n){let r=[],i=/* @__PURE__ */ new Map;for(let a of e.fields){let e=t(a.name),o=i.get(e);o&&o!==a.name&&r.push({commandPath:n,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 Ze(e,r){let i=[],a=/* @__PURE__ */ new Map,o=new Set(e.fields.map(e=>e.name)),s=new Set(e.fields.map(e=>e.cliName)),c=(e,t,n)=>{(o.has(e)||s.has(e))&&i.push({commandPath:r,type:`duplicate_alias`,message:`Alias "${e}" for field "${t}" conflicts with existing field name or CLI name "${e}".`,field:t});let c=a.get(e);if(c&&c!==t){let a=n?` (derived camelCase variant)`:``;i.push({commandPath:r,type:`duplicate_alias`,message:`Duplicate alias "${e}"${a} detected. Both "${c}" and "${t}" use the same alias.`,field:t})}a.set(e,t)};for(let r of e.fields){let e=n(r);if(e.length!==0){for(let n of e)if(c(n,r.name,!1),n.length>1&&n.includes(`-`)){let e=t(n);e!==n&&!o.has(e)&&c(e,r.name,!0)}}}return i}function Qe(e,r){let i=[],a=/* @__PURE__ */ new Map,o=(e,t,n)=>{a.has(e)||a.set(e,{field:t,kind:n})};for(let r of e.fields){if(o(r.name,r.name,`field name`),r.name.includes(`-`)){let e=t(r.name);e!==r.name&&o(e,r.name,`field name`)}if(r.cliName!==r.name&&o(r.cliName,r.name,`CLI name`),r.cliName.includes(`-`)){let e=t(r.cliName);e!==r.cliName&&o(e,r.name,`CLI name`)}for(let e of n(r))if(o(e,r.name,`alias`),e.length>1&&e.includes(`-`)){let n=t(e);n!==e&&o(n,r.name,`alias`)}if(r.type===`boolean`&&r.negation===!0){let e=`no-${r.cliName}`;o(e,r.name,`default negation`);let n=t(r.cliName),i=`no${n[0]?.toUpperCase()??``}${n.slice(1)}`;i!==e&&o(i,r.name,`default negation`)}}let s=/* @__PURE__ */ new Map,c=(e,t,n)=>{let o=a.get(e);if(o){let a=n?` (derived camelCase variant)`:``,s=o.field===t?`the same field's own ${o.kind} "${e}"`:`${o.kind} "${e}" of field "${o.field}"`;i.push({commandPath:r,type:`duplicate_negation`,message:`Negation "${e}"${a} for field "${t}" conflicts with ${s}.`,field:t})}let c=s.get(e);if(c&&c!==t){let a=n?` (derived camelCase variant)`:``;i.push({commandPath:r,type:`duplicate_negation`,message:`Duplicate negation "${e}"${a} detected. Both "${c}" and "${t}" use the same negation name.`,field:t})}s.set(e,t)};for(let n of e.fields)if(typeof n.negation==`string`&&(c(n.negation,n.name,!1),n.negation.includes(`-`))){let e=t(n.negation);e!==n.negation&&c(e,n.name,!0)}return i}function $e(e,t){let n=[e,...e.variants??[],...e.unionOptions??[]],r=/* @__PURE__ */ new Set;return n.flatMap(e=>et(e.fields,t)).filter(e=>!r.has(e.message)&&r.add(e.message))}function et(e,t){let n=[],r=e.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 tt(e,t){let r=[];for(let a of e.fields){if(a.overrideBuiltinAlias!==!0)for(let e of n(a))(e===`h`||e===`H`)&&r.push({commandPath:t,type:`reserved_alias`,message:`Alias "${e}" is reserved for --${e===`h`?`help`:`help-all`}. To override this, set { overrideBuiltinAlias: true } for "${a.name}" and keep the alias where it is currently defined (in alias or hiddenAlias).`,field:a.name});let e=/* @__PURE__ */ new Set([a.cliName,...n(a)]);for(let n of e){if(!i.has(n))continue;let e=n===a.cliName;r.push({commandPath:t,type:`reserved_alias`,message:`${e?`Field "${a.name}"`:`Alias "${n}" for field "${a.name}"`} collides with the built-in --${n} option, which always takes precedence. Rename the field or its alias; this collision cannot be overridden.`,field:a.name})}}return r}function nt(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 q(e){let t=Ye(e,[]);if(t.length>0)throw new Ue(`Duplicate field name "${t[0]?.field??`unknown`}" detected. Each field must have a unique name.`)}function J(e){let t=Ze(e,[]);if(t.length>0){let e=t[0];throw new We(e.message)}}function rt(e){let t=$e(e,[]);if(t.length>0){let e=t[0];throw new Ve(e.message)}}function Y(e,t){let n=tt(e,[]);if(n.length>0)throw new He(n[0].message)}function it(e){let t=nt(e,[]);if(t.length>0){let e=t[0];throw new Ke(e.message)}}function at(e){let t=Qe(e,[]);if(t.length>0){let e=t[0];throw new Ge(e.message)}}function ot(e){let t=Xe(e,[]);if(t.length>0){let e=t[0];throw new K(e.message)}}function st(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 ct(e,n,r){let i=[],a=/* @__PURE__ */ new Map;for(let n of e.fields)a.set(t(n.name),n);for(let e of n.fields){let n=t(e.name),o=a.get(n);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}st(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 lt(e,t){let n=ct(e,t,[])[0];if(n)throw n.type===`case_variant_collision`?new K(n.message):new Je(n.message)}function ut(e,t,n){return[...Ye(e,n),...Xe(e,n),...Ze(e,n),...Qe(e,n),...$e(e,n),...tt(e,n),...nt(e,n)]}function dt(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 ft(e){let t=dt(e,[]);if(t.length>0)throw new qe(t[0].message)}function pt(e,t){let n=[];if(!e.subCommands)return n;let r=/* @__PURE__ */ 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=x(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 mt(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 ht(e,t={}){let n=t.commandPath??[e.name],r=[],i=e.subCommands?Object.keys(e.subCommands).length>0:!1,a=t.globalArgs?l(t.globalArgs):void 0;if(e.args){let t=l(e.args);r.push(...ut(t,i,n)),a&&r.push(...ct(a,t,n))}if(r.push(...pt(e,n)),r.push(...dt(e,n)),e.subCommands)for(let[i,a]of Object.entries(e.subCommands)){let e=await S(a);r.push(...mt(i,e.name,n));let o=await ht(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 gt(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(`
|
|
29
|
-
`)}function _t(e){let{aliasMap:t=/* @__PURE__ */ new Map,booleanFlags:r=/* @__PURE__ */ new Set,definedNames:i=/* @__PURE__ */ new Set,negationMap:a=/* @__PURE__ */ new Map,defaultNegationDisabledFields:o=/* @__PURE__ */ new Set}=M(e),s=/* @__PURE__ */ new Set;for(let t of e.fields)for(let e of n(t))e.length===1&&s.add(e);return{aliasMap:t,booleanFlags:r,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 vt(e,t){let{resolvedName:n,withoutDashes:r,isNegated:i,isCustomNegation:a,isSuppressedNegation:o}=k(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 yt(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),yt(o,n,r,e[t+1],i)?(a.push(e[t+1]),2):1}function bt(e,t,n){let r=_t(n),i=new Set(t),a=[],o=[],s=0;for(;s<e.length;){let t=e[s];if(t===`--`||xt.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}=vt(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 xt=/* @__PURE__ */ new Set([`--help`,`-h`,`--help-all`,`-H`,`--help-json`,`--version`]);function St(e,t,n={}){let r=n.stopOnSuppressedNegation===!0||t?.unknownKeysMode===`strict`,i=t?_t(t):{aliasMap:/* @__PURE__ */ new Map,booleanFlags:/* @__PURE__ */ new Set,definedNames:/* @__PURE__ */ new Set,flagNames:/* @__PURE__ */ new Set,cliNames:/* @__PURE__ */ new Set,aliases:/* @__PURE__ */ new Set,negationMap:/* @__PURE__ */ new Map,defaultNegationDisabledFields:/* @__PURE__ */ new Set};for(let t=0;t<e.length;t++){let n=e[t];if(!n.startsWith(`-`))return t;if(n===`--`||xt.has(n))return-1;if(n.startsWith(`--`)){let{resolvedName:a,isNegated:o,isGlobal:s,isSuppressedNegation:c}=vt(n,i);if(s){yt(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)){yt(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 wt(e,t,r={}){let i=C(t),o=[...i],s=o.length>0;if(s&&e.length>0){if(r.globalExtracted){let t=bt(e,o,r.globalExtracted);if(t.subCommandIndex>=0){let n=Ot(t.globalTokensBefore,r.globalExtracted);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:e[t.subCommandIndex],remainingArgs:t.tokensAfterSubcommand,rawArgs:{},positionals:[],rest:[],unknownFlags:t.suppressedTokens,unknownGlobalFlags:t.suppressedTokens,rawGlobalArgs:n}}}else{let t=e[0];if(t&&!t.startsWith(`-`)&&i.has(t))return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:t,remainingArgs:e.slice(1),rawArgs:{},positionals:[],rest:[],unknownFlags:[]}}}let c;t.args&&(c=l(t.args),r.skipValidation||(q(c),ot(c),J(c),at(c),rt(c),Y(c,s),it(c),r.globalExtracted&<(r.globalExtracted,c)));let u=e,d,f=[];if(r.globalExtracted){let t=c?a(c):[],n=new Set(t.map(e=>e.name)),{separated:i,globalParsed:o,suppressedTokens:s}=kt(e,r.globalExtracted,c&&{...c,fields:[...t,...c.fields.filter(e=>!n.has(e.name))]});u=i,d=o,f=s}let p=e.indexOf(`--`),m=p>=0?e.slice(0,p):e,h=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`H`))??!1,g=c?.fields.some(e=>e.overrideBuiltinAlias===!0&&n(e).includes(`h`))??!1,_=m.includes(`--help-all`)||!h&&m.includes(`-H`),v=m.includes(`--help-json`),ee=!_&&!v&&(m.includes(`--help`)||!g&&m.includes(`-h`)),y=m.includes(`--version`);if(ee||_||v||y)return{helpRequested:ee,helpAllRequested:_,helpJsonRequested:v,versionRequested:y,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:f,rawGlobalArgs:d};if(!c){let e=u.indexOf(`--`);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:e>=0?u.slice(0,e):u,rest:e>=0?u.slice(e+1):[],unknownFlags:[],unknownGlobalFlags:f,rawGlobalArgs:d}}let b=Tt(c,u,{promptAvailable:r.promptAvailable===!0,inheritedNames:r.inheritedNames??/* @__PURE__ */ new Set});if(!b)return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:{},positionals:[],rest:[],unknownFlags:[],unknownGlobalFlags:f,extractedFields:c,matchesNoUnionOption:!0,rawGlobalArgs:d};let x=M(b),S=A(u,x),w=O(S,b),T=Et(w,b),E=b.fields.filter(e=>e.named),k=new Set(E.map(e=>e.name)),j=new Set(E.map(e=>e.cliName)),N=/* @__PURE__ */ new Set;for(let e of E)for(let t of n(e))N.add(t);if(r.globalExtracted)for(let e of r.globalExtracted.fields){k.add(e.name),j.add(e.cliName);for(let t of n(e))N.add(t)}let P=[];for(let e of Object.keys(S.options))!k.has(e)&&!j.has(e)&&!N.has(e)&&P.push(e);return{helpRequested:!1,helpAllRequested:!1,helpJsonRequested:!1,versionRequested:!1,subCommand:void 0,remainingArgs:[],rawArgs:w,positionals:S.positionals,rest:S.rest,unknownFlags:P,unknownGlobalFlags:f,extractedFields:c,optionFields:E,positionalSlotFields:D(b,S.options),rawGlobalArgs:d,envFallbackFields:T}}function Tt(e,t,n){let{discriminator:r,variants:i,unionOptions:a}=e;if(r&&i){let n=e=>{let n=O(A(t,M(e)),e);return Et(n,e),n},a=c(e,n);if(a!==e)return a;let o=new Set(i.map(e=>e.discriminatorValue));return i.some(t=>o.has(n({...e,fields:t.fields})[r]))?void 0:e}if(a){let r=n.promptAvailable?a.filter(e=>Dt(e,t,void 0)):[],i=a.find(e=>Dt(e,t,n.inheritedNames))??(r.length===1?r[0]:void 0);return i&&{...e,fields:i.fields}}return e}function Et(e,t){let n=/* @__PURE__ */ new Set;for(let r of t.fields)if(r.env&&e[r.name]===void 0)for(let t of[r.env].flat()){let i=process.env[t];if(i!==void 0){e[r.name]=j(i,r.type),n.add(r.name);break}}return n}function Dt(e,t,r){let i=A(t,M(e)),a=e.fields.filter(e=>e.named),o=new Set(a.flatMap(e=>[e.name,e.cliName,...n(e)]));if(Object.keys(i.options).some(e=>!o.has(e)))return!1;let s=D(e,i.options),c=i.positionals.length+i.rest.length;if(!s.some(e=>e.type===`array`)&&c>s.length)return!1;let l=O(i,e);return e.fields.some(e=>e.type!==`boolean`&&[l[e.name]].flat().includes(!0))?!1:r===void 0||(Et(l,e),e.fields.every(e=>!e.required||l[e.name]!==void 0||r.has(e.name)))}function Ot(e,t){if(e.length===0)return{};let n=M(t),r=A(e,n);return O(r,t)}function kt(e,r,i){let a=_t(r),o=new Set(i?.fields.map(e=>e.name)??[]),s=new Set(i?.fields.map(e=>e.cliName)??[]),c=i?M(i):void 0,l=new Set(c?.aliasMap?.keys()??[]),u=new Set(c?.negationMap?.keys()??[]),d=/* @__PURE__ */ new Set;for(let e of i?.fields??[])if(e.type===`boolean`&&e.negation===!0)for(let r of[e.cliName,...n(e)]){let e=`no-${r}`;d.add(e),d.add(t(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}=vt(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:Ot(f,r),suppressedTokens:m}}function At(e,t){return s(t)?d(e,t):r().validate(e,t)}function Z(e){return e.map(e=>`${e.path.length>0?`${e.path.join(`.`)}: `:``}${e.message}`).join(`
|
|
30
|
-
`)}function jt(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:jt(e.toLowerCase(),t.toLowerCase())})).filter(({distance:e})=>e<=n).sort((e,t)=>e.distance-t.distance).map(({candidate:e})=>e).slice(0,3)}function Nt(e,t){let n=Mt(e.replace(/^-{1,2}/,``),t),r=`${T.warning(`Warning: Unknown option:`)} ${T.bold(e)}`;if(n.length>0){r+=`\n\n${T.info(`Did you mean?`)}`;for(let e of n)r+=`\n ${w.arrow} ${T.option(`--${e}`)}`}return r}function Pt(e,t){return t&&e.stack?`${T.error(`Error:`)} ${e.message}\n\n${T.dim(e.stack)}`:`${T.error(`Error:`)} ${e.message}`}function Q(n){return new Proxy(n,{get(n,r,i){if(typeof r==`string`){if(r in n)return Reflect.get(n,r,i);let a=t(r);if(a!==r&&a in n)return Reflect.get(n,a,i);let o=e(r);if(o!==r&&o in n)return Reflect.get(n,o,i)}return Reflect.get(n,r,i)},has(n,r){if(typeof r==`string`){if(r in n)return!0;let i=t(r);if(i!==r&&i in n)return!0;let a=e(r);if(a!==r&&a in n)return!0}return Reflect.has(n,r)}})}async function Ft(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 It={log:e=>console.log(e),error:e=>console.error(e),warn:e=>console.warn(e)};function Lt(n,r){Object.defineProperty(n,"$source",{value:n=>r.get(n)??r.get(t(n))??r.get(e(n))??`default`,enumerable:!1})}function Rt(e,t){Object.defineProperty(e,"$invocation",{value:t,enumerable:!1})}function zt(e,t){let n=t.commandPath?.at(-1)??e.name;return t.aliasFor?{name:n,aliasFor:t.aliasFor}:{name:n}}async function Bt(e,t,n={}){let r=Wt(n),i=n.captureLogs??!1,a=i?v():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()??g()}}a?.stop()}let o=await $(e,t,{...n,handleSignals:!1,_globalExtracted:r,_globalCleanup:n.cleanup,_existingLogs:a?.getLogs()});if(n.cleanup){let e=i?v():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:_(o.logs,e?.getLogs()??g())}}}e?.stop();let r=e?.getLogs()??g();if(r.entries.length>0)return{...o,logs:_(o.logs,r)}}return o}function Vt(e,t,n){let r=Ct(t,n);return!r||!r.startsWith(`__`)?!1:Object.hasOwn(e.subCommands??{},r)}async function Ht(e,t={}){if(t.compileCache!==!1&&h(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=l(t.globalArgs)}catch{}let i=t;if(Vt(e,n,r)){let{setup:e,cleanup:n,prompt:r,globalArgs:a,...o}=t;i=o}let a=Wt(i);if(i.skipValidation||ft(e),i.onUnknownSubcommand&&!e.run&&!Vt(e,n,r)){let t=C(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 Ut(),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??It).error(Pt(o.error,i.debug??!1)),i.cleanup){let e={error:o.success?void 0:o.error};try{await i.cleanup(e)}catch{}}await Ut(),process.exit(o.exitCode)}async function Ut(){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??It,i=n._context??{commandPath:[],rootName:e.name,globalExtracted:n._globalExtracted},a=n.captureLogs??!1?v():null;a?.start();let o=()=>{let e=n._existingLogs??g(),t=a?.getLogs()??g();return _(e,t)};try{n.skipValidation||ft(e);let s=wt(t,e,{skipValidation:n.skipValidation,globalExtracted:n._globalExtracted,promptAvailable:n.prompt!==void 0,inheritedNames:new Set(Object.keys(n._parsedGlobalArgs??{}))}),c={...n._parsedGlobalArgs,...s.rawGlobalArgs},l=i.commandPath??[];if(n.onUnknownSubcommand&&!e.run&&l.length>0){let r=C(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 Ut(),process.exit(s)}return s===0?{success:!0,result:void 0,exitCode:0,logs:o()}:{success:!1,error:/* @__PURE__ */ Error(`Plugin "${[...l,i].join(` `)}" exited with code ${s}`),exitCode:s,logs:o()}}}}}if(s.helpRequested||s.helpAllRequested||s.helpJsonRequested){let c=!1,l=b(e),u=C(e);if(l.length>0){let e=Ct(t,i.globalExtracted);e&&!u.has(e)&&(c=!0)}if(s.helpJsonRequested){let t=G(e,{context:i});r.log(JSON.stringify(t))}else{let t=U(e,{showSubcommands:n.showSubcommands??!0,showSubcommandOptions:s.helpAllRequested||n.showSubcommandOptions,context:i});r.log(t)}if(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:/* @__PURE__ */ 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:/* @__PURE__ */ 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(Nt(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 ee(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(E(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.positionalSlotFields??[],d=u.some(e=>e.type===`array`),f=[...s.positionals,...s.rest],p=d?[]:f.slice(u.length),m=d?[]:s.positionals.slice(u.length);if(s.matchesNoUnionOption)return a?.stop(),{success:!1,error:/* @__PURE__ */ Error(`Arguments match none of the accepted forms. See --help for the accepted forms.`),exitCode:1,logs:o()};if(b(e).length>0&&!s.subCommand&&!e.run&&p.length===0){if(e.defaultSubCommand&&s.unknownFlags.length===0){let r=e.subCommands?.[e.defaultSubCommand];if(r){let l=await S(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(E(e)),p=t.filter(e=>!f(e));return $(l,[],{...n,_context:u,_existingLogs:o(),_parsedGlobalArgs:c,_precedingArgs:[...n._precedingArgs??[],...p]})}}let l=U(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.optionFields?.map(e=>e.name)??[];if(e===`strict`)return a?.stop(),{success:!1,error:/* @__PURE__ */ Error(`Unknown flags: ${s.unknownFlags.join(`, `)}`),exitCode:1,logs:o()};if(e===`strip`)for(let e of s.unknownFlags)r.error(Nt(e,t))}if(p.length>0){let t=C(e);if(t.size>0){let e=m.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:/* @__PURE__ */ 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:/* @__PURE__ */ Error(`Unexpected positional argument${p.length>1?`s`:``}: ${p.join(`, `)}`),exitCode:1,logs:o()};if(n===`strip`)for(let e of p)(r.warn??r.error)(`Warning: Unexpected positional argument: ${e}`)}let h={},g=e.name===`__complete`,_=new Set(Object.keys(c)),v=/* @__PURE__ */ new Set;if(n.globalArgs&&n._globalExtracted&&!g){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]=j(t,e.type),v.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=At(c,n.globalArgs);if(!e.success)return a?.stop(),{success:!1,error:Error(Z(e.errors)),exitCode:1,logs:o()};h=e.data}if(!e.args){let t=/* @__PURE__ */ new Map;for(let e of _)t.set(e,`cli`);for(let e of v)t.set(e,`env`);Lt(h,t),Rt(h,zt(e,i));let r=Q(h);return n._globalExtracted&&!g&&await Ft(r,n._globalExtracted,r),a?.stop(),await P(e,r,{handleSignals:n.handleSignals,captureLogs:n.captureLogs,existingLogs:o(),globalCleanup:n._globalCleanup})}let y=s.rawArgs,x=/* @__PURE__ */ new Set;if(n.prompt&&s.extractedFields){let e=await n.prompt(y,s.extractedFields),t={...y};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r,x.add(n));y=t}let w=/* @__PURE__ */ new Set;if(s.extractedFields)for(let e of s.extractedFields.fields)!(Object.hasOwn(s.rawArgs,e.name)||x.has(e.name))&&_.has(e.name)&&Object.hasOwn(h,e.name)&&(y={...y,[e.name]:h[e.name]},w.add(e.name));let T=At(y,e.args);if(!T.success)return a?.stop(),{success:!1,error:Error(Z(T.errors)),exitCode:1,logs:o()};let D=Q(T.data),O=/* @__PURE__ */ new Map;for(let e of _)O.set(e,`cli`);for(let e of v)O.set(e,`env`);Lt(h,O),Rt(h,zt(e,i));let k=Q(h);n._globalExtracted&&!g&&await Ft(k,n._globalExtracted,k),s.extractedFields&&!g&&await Ft(D,s.extractedFields,k);let A={...k,...D},M=new Map(O),N=s.envFallbackFields??/* @__PURE__ */ new Set;for(let e of s.extractedFields?.fields??[]){if(w.has(e.name)){M.set(e.name,`cli`);continue}let t=Object.hasOwn(s.rawArgs,e.name)||N.has(e.name);M.set(e.name,t?N.has(e.name)?`env`:`cli`:`default`)}Lt(A,M),Rt(A,zt(e,i));let te=Q(A);return a?.stop(),await P(e,te,{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 Wt(e){if(!e.globalArgs)return;let t=l(e.globalArgs);if(!e.skipValidation){q(t),ot(t),J(t),at(t),Y(t,!0),it(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{He as C,I as D,G as E,ae as O,Ve as S,U as T,qe as _,gt as a,Ge as b,lt as c,q as d,at as f,K as g,it as h,Z as i,ft as l,Y as m,Ht as n,ot as o,rt as p,Q as r,ht as s,Bt as t,J as u,We as v,Ke as w,Je as x,Ue as y};
|