@unstoppabledomains/ud-cli 0.1.17 → 0.1.18

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 CHANGED
@@ -51,7 +51,7 @@ API keys have the format `ud_mcp_` followed by 64 hex characters. Generate one f
51
51
  ### Managing credentials
52
52
 
53
53
  ```bash
54
- ud auth whoami # Check current auth status
54
+ ud auth status # Check current auth status
55
55
  ud auth logout # Clear stored credentials
56
56
  ```
57
57
 
@@ -59,7 +59,7 @@ ud auth logout # Clear stored credentials
59
59
 
60
60
  | Option | Description |
61
61
  |--------|-------------|
62
- | `--env <environment>` | Override active environment (`production` or `staging`) |
62
+ | `--env <environment>` | Override active environment (`production` or `sandbox`) |
63
63
  | `--format <format>` | Output format: `table` (default), `json`, or `csv` |
64
64
  | `--fields [columns]` | Show available fields, or specify columns to display |
65
65
  | `--quiet` | Suppress output except errors |
@@ -105,7 +105,7 @@ ud
105
105
  ├── auth
106
106
  │ ├── login Authenticate (OAuth or API key)
107
107
  │ ├── logout Clear stored credentials
108
- │ └── whoami Check current auth status
108
+ │ └── status Check current auth status
109
109
  ├── domains
110
110
  │ ├── list List portfolio domains
111
111
  │ ├── get <domains...> Get detailed domain info
@@ -171,6 +171,8 @@ ud
171
171
  │ ├── set <command> <key> <value> Save a default option
172
172
  │ ├── get [command] Show saved defaults
173
173
  │ └── reset <command> [key] Remove saved defaults
174
+ ├── skill
175
+ │ └── install Install Claude Code skill
174
176
  ├── env
175
177
  │ ├── show Show current environment
176
178
  │ └── set <environment> Switch default environment
@@ -376,17 +378,41 @@ ud domains dns records add example.com --file records.json
376
378
  ud domains list --format json | jq '.domains[].name'
377
379
  ```
378
380
 
381
+ ## Agent Skills
382
+
383
+ ud-cli ships a skill that teaches coding agents (Claude Code, Cursor, GitHub Copilot, etc.) how to use domain management commands.
384
+
385
+ ### Install via npx skills (recommended)
386
+
387
+ Works with 40+ agents, no prior install needed:
388
+
389
+ ```bash
390
+ npx skills add unstoppabledomains/ud-cli
391
+ ```
392
+
393
+ ### Install via ud-cli
394
+
395
+ If you already have the CLI installed:
396
+
397
+ ```bash
398
+ ud skill install
399
+ ```
400
+
401
+ Both methods copy the skill to `.claude/skills/ud-cli/` (or the equivalent for your agent). The skill covers search, DNS, cart, marketplace, and all other ud-cli workflows.
402
+
403
+ For skills-less operation, agents can also read `ud --help` directly.
404
+
379
405
  ## Environments
380
406
 
381
407
  | Environment | Base URL |
382
408
  |-------------|----------|
383
409
  | `production` (default) | `https://api.unstoppabledomains.com` |
384
- | `staging` | `https://api.ud-staging.com` |
410
+ | `sandbox` | `https://api.ud-sandbox.com` |
385
411
 
386
412
  ```bash
387
413
  ud env show # Show current environment
388
- ud env set staging # Switch default environment
389
- ud --env staging <cmd> # Override environment for a single command
414
+ ud env set sandbox # Switch default environment
415
+ ud --env sandbox <cmd> # Override environment for a single command
390
416
  ```
391
417
 
392
418
  Credentials are stored per-environment, so you can be authenticated to both simultaneously.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D3D"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D3D"}
@@ -47,7 +47,7 @@ export function registerAuthCommands(program) {
47
47
  console.log(chalk.green(`Logged out of ${env}.`));
48
48
  });
49
49
  auth
50
- .command('whoami')
50
+ .command('status')
51
51
  .description('Show current authentication status')
52
52
  .action(async () => {
53
53
  const status = await verifyAuth();
@@ -76,6 +76,7 @@ async function loginApiKey(env, key) {
76
76
  const status = await verifyAuth();
77
77
  if (status.authenticated) {
78
78
  console.log(chalk.green(`✓ API key saved and verified for ${env}.`));
79
+ console.log(chalk.dim('Tip: Run "ud install" to enable shell tab completion.'));
79
80
  }
80
81
  else {
81
82
  console.log(chalk.yellow(`API key saved for ${env}, but verification failed: ${status.message}`));
@@ -88,6 +89,7 @@ async function loginOAuth(env) {
88
89
  await performOAuthLogin();
89
90
  setEnvConfig({ authMethod: 'oauth' }, env);
90
91
  console.log(chalk.green(`✓ OAuth login successful for ${env}.`));
92
+ console.log(chalk.dim('Tip: Run "ud install" to enable shell tab completion.'));
91
93
  }
92
94
  catch (err) {
93
95
  console.error(chalk.red(`OAuth login failed: ${err instanceof Error ? err.message : String(err)}`));
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAE1E,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,EAAE,OAAO,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;QAC1D,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;QAE3B,8DAA8D;QAC9D,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;QAE3B,yCAAyC;QACzC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;wBACjC,MAAM,WAAW,CACf,QAAQ,CAAC,mBAAmB,EAC5B,MAAM,CAAC,YAAY,EACnB,SAAS,CAAC,KAAK,CAAC,QAAQ,CACzB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,GAAY;IAClD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,GAAG,EAAE,GAAkB,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,GAAkB,CAAC,CAAC;IAE5D,gCAAgC;IAChC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,8BAA8B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,iBAAiB,EAAE,CAAC;QAC1B,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,GAAkB,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,GAAG,GAAG,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerCompletionCommand(program: Command): void;
3
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsChE"}
@@ -0,0 +1,35 @@
1
+ import { generateCompletion, SUPPORTED_SHELLS } from '../lib/completion.js';
2
+ export function registerCompletionCommand(program) {
3
+ program
4
+ .command('completion')
5
+ .description('Generate shell completion scripts')
6
+ .requiredOption('-s, --shell <shell>', `Shell type (${SUPPORTED_SHELLS.join(', ')})`)
7
+ .addHelpText('after', [
8
+ '',
9
+ 'Examples:',
10
+ ' # Bash — add to ~/.bashrc',
11
+ ' eval "$(ud completion -s bash)"',
12
+ '',
13
+ ' # Zsh — save to a directory in your $fpath',
14
+ ' ud completion -s zsh > "${fpath[1]}/_ud"',
15
+ '',
16
+ ' # Fish',
17
+ ' ud completion -s fish > ~/.config/fish/completions/ud.fish',
18
+ '',
19
+ ' # PowerShell — add to $PROFILE',
20
+ ' ud completion -s powershell >> $PROFILE',
21
+ '',
22
+ 'Tip: Run "ud install" to auto-detect your shell and set this up for you.',
23
+ ].join('\n'))
24
+ .action((opts) => {
25
+ const shell = opts.shell.toLowerCase();
26
+ if (!SUPPORTED_SHELLS.includes(shell)) {
27
+ console.error(`Unsupported shell: ${shell}. Must be one of: ${SUPPORTED_SHELLS.join(', ')}`);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const output = generateCompletion(program, shell);
32
+ process.stdout.write(output);
33
+ });
34
+ }
35
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,mCAAmC,CAAC;SAChD,cAAc,CAAC,qBAAqB,EAAE,eAAe,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACpF,WAAW,CACV,OAAO,EACP;QACE,EAAE;QACF,WAAW;QACX,6BAA6B;QAC7B,mCAAmC;QACnC,EAAE;QACF,8CAA8C;QAC9C,4CAA4C;QAC5C,EAAE;QACF,UAAU;QACV,8DAA8D;QAC9D,EAAE;QACF,kCAAkC;QAClC,2CAA2C;QAC3C,EAAE;QACF,0EAA0E;KAC3E,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;SACA,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAc,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CACX,sBAAsB,KAAK,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { getDefaultEnv, setDefaultEnv, apiBaseUrl } from '../lib/config.js';
3
- const VALID_ENVS = ['production', 'staging'];
3
+ const VALID_ENVS = ['production', 'sandbox', 'staging'];
4
4
  export function registerEnvCommands(program) {
5
5
  const env = program.command('env').description('Manage environment settings');
6
6
  env
@@ -14,7 +14,7 @@ export function registerEnvCommands(program) {
14
14
  });
15
15
  env
16
16
  .command('set <environment>')
17
- .description('Set the default environment (production or staging)')
17
+ .description('Set the default environment (production or sandbox)')
18
18
  .action((environment) => {
19
19
  if (!VALID_ENVS.includes(environment)) {
20
20
  console.error(chalk.red(`Invalid environment: ${environment}. Must be one of: ${VALID_ENVS.join(', ')}`));
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,UAAU,GAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE9E,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,CAAC,WAAmB,EAAE,EAAE;QAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAA0B,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,WAAW,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,aAAa,CAAC,WAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAA0B,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,UAAU,GAAkB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAEvE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE9E,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,CAAC,WAAmB,EAAE,EAAE;QAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAA0B,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,WAAW,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,aAAa,CAAC,WAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAA0B,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInstallCommand(program: Command): void;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6LpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC7D"}
@@ -0,0 +1,185 @@
1
+ import { mkdir, readFile, writeFile, access, cp } from 'node:fs/promises';
2
+ import { homedir, platform } from 'node:os';
3
+ import { fileURLToPath } from 'node:url';
4
+ import path from 'node:path';
5
+ import chalk from 'chalk';
6
+ import { generateCompletion } from '../lib/completion.js';
7
+ // ---------------------------------------------------------------------------
8
+ // Shell detection
9
+ // ---------------------------------------------------------------------------
10
+ function detectShell() {
11
+ const shell = process.env.SHELL ?? '';
12
+ if (shell.endsWith('/zsh'))
13
+ return 'zsh';
14
+ if (shell.endsWith('/bash'))
15
+ return 'bash';
16
+ if (shell.endsWith('/fish'))
17
+ return 'fish';
18
+ // PowerShell doesn't set $SHELL — check PSModulePath as a heuristic
19
+ if (process.env.PSModulePath)
20
+ return 'powershell';
21
+ return null;
22
+ }
23
+ // ---------------------------------------------------------------------------
24
+ // Completion installers (per-shell)
25
+ // ---------------------------------------------------------------------------
26
+ const COMPLETION_MARKER = '# ud-cli shell completion';
27
+ async function fileContains(filePath, marker) {
28
+ try {
29
+ const content = await readFile(filePath, 'utf-8');
30
+ return content.includes(marker);
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ async function appendToFile(filePath, content) {
37
+ const dir = path.dirname(filePath);
38
+ await mkdir(dir, { recursive: true });
39
+ try {
40
+ const existing = await readFile(filePath, 'utf-8');
41
+ const separator = existing.endsWith('\n') ? '' : '\n';
42
+ await writeFile(filePath, existing + separator + content + '\n');
43
+ }
44
+ catch {
45
+ // File doesn't exist — create it
46
+ await writeFile(filePath, content + '\n');
47
+ }
48
+ }
49
+ async function installBash() {
50
+ // macOS bash login shells read ~/.bash_profile, not ~/.bashrc
51
+ const rcName = platform() === 'darwin' ? '.bash_profile' : '.bashrc';
52
+ const rcFile = path.join(homedir(), rcName);
53
+ if (await fileContains(rcFile, COMPLETION_MARKER)) {
54
+ return { message: `Shell completions already installed in ${rcFile}` };
55
+ }
56
+ const snippet = `\n${COMPLETION_MARKER}\neval "$(ud completion -s bash)"\n`;
57
+ await appendToFile(rcFile, snippet);
58
+ return { message: `Shell completions added to ${rcFile}`, activateHint: `source ~/${rcName}` };
59
+ }
60
+ async function installZsh(program) {
61
+ const completionDir = path.join(homedir(), '.zsh', 'completions');
62
+ const completionFile = path.join(completionDir, '_ud');
63
+ // Write the completion script
64
+ await mkdir(completionDir, { recursive: true });
65
+ const script = generateCompletion(program, 'zsh');
66
+ await writeFile(completionFile, script);
67
+ // Ensure fpath includes the completions directory.
68
+ // The fpath line must appear BEFORE any framework (oh-my-zsh, prezto, etc.)
69
+ // that calls compinit, so we prepend it near the top of .zshrc rather than
70
+ // appending at the end.
71
+ const rcFile = path.join(homedir(), '.zshrc');
72
+ const alreadyHasFpath = await fileContains(rcFile, '~/.zsh/completions');
73
+ if (!alreadyHasFpath) {
74
+ const fpathSnippet = `${COMPLETION_MARKER}\nfpath=(~/.zsh/completions $fpath)\n\n`;
75
+ try {
76
+ const existing = await readFile(rcFile, 'utf-8');
77
+ await writeFile(rcFile, fpathSnippet + existing);
78
+ }
79
+ catch {
80
+ // No .zshrc — create one with fpath + compinit (no framework to rely on)
81
+ await writeFile(rcFile, `${fpathSnippet}autoload -Uz compinit && compinit\n`);
82
+ }
83
+ }
84
+ return { message: `Shell completions written to ${completionFile}`, activateHint: 'source ~/.zshrc' };
85
+ }
86
+ async function installFish(program) {
87
+ const completionDir = path.join(homedir(), '.config', 'fish', 'completions');
88
+ const completionFile = path.join(completionDir, 'ud.fish');
89
+ await mkdir(completionDir, { recursive: true });
90
+ const script = generateCompletion(program, 'fish');
91
+ await writeFile(completionFile, script);
92
+ // Fish auto-loads completions from ~/.config/fish/completions/ — no source needed
93
+ return { message: `Shell completions written to ${completionFile}` };
94
+ }
95
+ async function installPowershell(program) {
96
+ // $PROFILE is not available in Node — use platform-appropriate default
97
+ const profileDir = platform() === 'win32'
98
+ ? path.join(homedir(), 'Documents', 'PowerShell')
99
+ : path.join(homedir(), '.config', 'powershell');
100
+ const profileFile = path.join(profileDir, 'Microsoft.PowerShell_profile.ps1');
101
+ if (await fileContains(profileFile, COMPLETION_MARKER)) {
102
+ return { message: `Shell completions already installed in ${profileFile}` };
103
+ }
104
+ const script = generateCompletion(program, 'powershell');
105
+ const snippet = `\n${COMPLETION_MARKER}\n${script}`;
106
+ await appendToFile(profileFile, snippet);
107
+ return { message: `Shell completions added to ${profileFile}`, activateHint: `. $PROFILE` };
108
+ }
109
+ async function installCompletions(program, shell) {
110
+ switch (shell) {
111
+ case 'bash':
112
+ return installBash();
113
+ case 'zsh':
114
+ return installZsh(program);
115
+ case 'fish':
116
+ return installFish(program);
117
+ case 'powershell':
118
+ return installPowershell(program);
119
+ }
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // Skills installer (moved from skill.ts)
123
+ // ---------------------------------------------------------------------------
124
+ function getSkillsSource() {
125
+ if (typeof __dirname === 'string') {
126
+ // CJS bundle: dist/ud-cli.cjs → package root
127
+ return path.resolve(__dirname, '..', 'skills', 'ud-cli');
128
+ }
129
+ // ESM: dist/commands/install.js → package root
130
+ const thisFile = fileURLToPath(import.meta.url);
131
+ return path.resolve(path.dirname(thisFile), '..', '..', 'skills', 'ud-cli');
132
+ }
133
+ async function installSkills(target) {
134
+ const cwd = target ?? process.cwd();
135
+ const sourceDir = getSkillsSource();
136
+ try {
137
+ await access(sourceDir);
138
+ }
139
+ catch {
140
+ console.error(chalk.red('Skill files not found. If using a standalone binary, download from:\n' +
141
+ ' https://github.com/unstoppabledomains/ud-cli/tree/main/skills/ud-cli'));
142
+ process.exitCode = 1;
143
+ return;
144
+ }
145
+ const destDir = path.join(cwd, '.claude', 'skills', 'ud-cli');
146
+ await cp(sourceDir, destDir, { recursive: true });
147
+ const relDest = path.relative(cwd, destDir);
148
+ console.log(chalk.green(`Skill installed to ${relDest}/`));
149
+ console.log(chalk.dim('Claude Code will now discover ud-cli commands automatically.'));
150
+ }
151
+ // ---------------------------------------------------------------------------
152
+ // Command registration
153
+ // ---------------------------------------------------------------------------
154
+ export function registerInstallCommand(program) {
155
+ program
156
+ .command('install')
157
+ .description('Install shell completions and optional integrations')
158
+ .option('--skills', 'Install coding agent skill to current directory')
159
+ .option('--skills-target <dir>', 'Target directory for skill install')
160
+ .action(async (opts) => {
161
+ // Always install shell completions
162
+ const shell = detectShell();
163
+ if (shell) {
164
+ try {
165
+ const result = await installCompletions(program, shell);
166
+ console.log(chalk.green(`\u2713 ${result.message}`));
167
+ if (result.activateHint) {
168
+ console.log(chalk.dim(` To activate now, run: ${result.activateHint}`));
169
+ }
170
+ }
171
+ catch (err) {
172
+ console.error(chalk.red(`Failed to install shell completions: ${err instanceof Error ? err.message : String(err)}`));
173
+ process.exitCode = 1;
174
+ }
175
+ }
176
+ else {
177
+ console.log(chalk.yellow('Could not detect your shell. Use "ud completion -s <shell>" to generate a script manually.'));
178
+ }
179
+ // Optionally install skills
180
+ if (opts.skills || opts.skillsTarget) {
181
+ await installSkills(opts.skillsTarget);
182
+ }
183
+ });
184
+ }
185
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,oEAAoE;IACpE,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,YAAY,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAEtD,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAe;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;QACjC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAQD,KAAK,UAAU,WAAW;IACxB,8DAA8D;IAC9D,MAAM,MAAM,GAAG,QAAQ,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,0CAA0C,MAAM,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,iBAAiB,qCAAqC,CAAC;IAC5E,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,8BAA8B,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,MAAM,EAAE,EAAE,CAAC;AACjG,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAgB;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAEvD,8BAA8B;IAC9B,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAExC,mDAAmD;IACnD,4EAA4E;IAC5E,2EAA2E;IAC3E,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEzE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,GAAG,iBAAiB,yCAAyC,CAAC;QACnF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,MAAM,SAAS,CAAC,MAAM,EAAE,GAAG,YAAY,qCAAqC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,gCAAgC,cAAc,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AACxG,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAgB;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE3D,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAExC,kFAAkF;IAClF,OAAO,EAAE,OAAO,EAAE,gCAAgC,cAAc,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAgB;IAC/C,uEAAuE;IACvE,MAAM,UAAU,GAAG,QAAQ,EAAE,KAAK,OAAO;QACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;IAE9E,IAAI,MAAM,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,0CAA0C,WAAW,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,iBAAiB,KAAK,MAAM,EAAE,CAAC;IACpD,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEzC,OAAO,EAAE,OAAO,EAAE,8BAA8B,WAAW,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAgB,EAAE,KAAY;IAC9D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,WAAW,EAAE,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,SAAS,eAAe;IACtB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,6CAA6C;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IACD,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAe;IAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,uEAAuE;YACrE,wEAAwE,CAC3E,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,UAAU,EAAE,iDAAiD,CAAC;SACrE,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAAiD,EAAE,EAAE;QAClE,mCAAmC;QACnC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACrD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CACtG,CAAC;gBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,4FAA4F,CAC7F,CACF,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shell completion script generators.
3
+ *
4
+ * Walks the Commander command tree at runtime and produces self-contained
5
+ * completion scripts for bash, zsh, fish, and powershell.
6
+ */
7
+ import type { Command } from 'commander';
8
+ export type Shell = 'bash' | 'zsh' | 'fish' | 'powershell';
9
+ export declare const SUPPORTED_SHELLS: readonly Shell[];
10
+ export declare function generateCompletion(program: Command, shell: Shell): string;
11
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAMjD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;AAE3D,eAAO,MAAM,gBAAgB,EAAE,SAAS,KAAK,EAAmD,CAAC;AA0WjG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAazE"}