@radkode/neo 1.1.2 → 1.3.0

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.
Files changed (117) hide show
  1. package/README.md +81 -9
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +46 -8
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agent/context/index.d.ts.map +1 -1
  6. package/dist/commands/agent/context/index.js +84 -78
  7. package/dist/commands/agent/context/index.js.map +1 -1
  8. package/dist/commands/agent/index.d.ts.map +1 -1
  9. package/dist/commands/agent/index.js +7 -1
  10. package/dist/commands/agent/index.js.map +1 -1
  11. package/dist/commands/agent/init/index.d.ts.map +1 -1
  12. package/dist/commands/agent/init/index.js +36 -33
  13. package/dist/commands/agent/init/index.js.map +1 -1
  14. package/dist/commands/alias/setup/index.d.ts.map +1 -1
  15. package/dist/commands/alias/setup/index.js +57 -52
  16. package/dist/commands/alias/setup/index.js.map +1 -1
  17. package/dist/commands/completions/index.d.ts.map +1 -1
  18. package/dist/commands/completions/index.js +20 -12
  19. package/dist/commands/completions/index.js.map +1 -1
  20. package/dist/commands/config/index.d.ts.map +1 -1
  21. package/dist/commands/config/index.js +173 -158
  22. package/dist/commands/config/index.js.map +1 -1
  23. package/dist/commands/config/profile/index.d.ts.map +1 -1
  24. package/dist/commands/config/profile/index.js +169 -232
  25. package/dist/commands/config/profile/index.js.map +1 -1
  26. package/dist/commands/gh/pr/create/index.d.ts.map +1 -1
  27. package/dist/commands/gh/pr/create/index.js +86 -56
  28. package/dist/commands/gh/pr/create/index.js.map +1 -1
  29. package/dist/commands/git/branch/index.d.ts.map +1 -1
  30. package/dist/commands/git/branch/index.js +56 -43
  31. package/dist/commands/git/branch/index.js.map +1 -1
  32. package/dist/commands/git/commit/index.d.ts.map +1 -1
  33. package/dist/commands/git/commit/index.js +67 -45
  34. package/dist/commands/git/commit/index.js.map +1 -1
  35. package/dist/commands/git/pull/index.d.ts +7 -1
  36. package/dist/commands/git/pull/index.d.ts.map +1 -1
  37. package/dist/commands/git/pull/index.js +62 -70
  38. package/dist/commands/git/pull/index.js.map +1 -1
  39. package/dist/commands/git/push/index.d.ts +2 -0
  40. package/dist/commands/git/push/index.d.ts.map +1 -1
  41. package/dist/commands/git/push/index.js +61 -39
  42. package/dist/commands/git/push/index.js.map +1 -1
  43. package/dist/commands/git/stash/index.d.ts.map +1 -1
  44. package/dist/commands/git/stash/index.js +42 -11
  45. package/dist/commands/git/stash/index.js.map +1 -1
  46. package/dist/commands/git/worktree/add.d.ts.map +1 -1
  47. package/dist/commands/git/worktree/add.js +21 -15
  48. package/dist/commands/git/worktree/add.js.map +1 -1
  49. package/dist/commands/git/worktree/list.d.ts.map +1 -1
  50. package/dist/commands/git/worktree/list.js +32 -20
  51. package/dist/commands/git/worktree/list.js.map +1 -1
  52. package/dist/commands/git/worktree/remove.d.ts.map +1 -1
  53. package/dist/commands/git/worktree/remove.js +17 -8
  54. package/dist/commands/git/worktree/remove.js.map +1 -1
  55. package/dist/commands/git/worktree/switch.d.ts.map +1 -1
  56. package/dist/commands/git/worktree/switch.js +23 -9
  57. package/dist/commands/git/worktree/switch.js.map +1 -1
  58. package/dist/commands/index.d.ts +1 -0
  59. package/dist/commands/index.d.ts.map +1 -1
  60. package/dist/commands/index.js +3 -0
  61. package/dist/commands/index.js.map +1 -1
  62. package/dist/commands/init/index.d.ts.map +1 -1
  63. package/dist/commands/init/index.js +53 -28
  64. package/dist/commands/init/index.js.map +1 -1
  65. package/dist/commands/pr/index.d.ts.map +1 -1
  66. package/dist/commands/pr/index.js +6 -20
  67. package/dist/commands/pr/index.js.map +1 -1
  68. package/dist/commands/schema/index.d.ts +44 -0
  69. package/dist/commands/schema/index.d.ts.map +1 -0
  70. package/dist/commands/schema/index.js +214 -0
  71. package/dist/commands/schema/index.js.map +1 -0
  72. package/dist/commands/update/index.d.ts.map +1 -1
  73. package/dist/commands/update/index.js +103 -91
  74. package/dist/commands/update/index.js.map +1 -1
  75. package/dist/services/ai/index.d.ts.map +1 -1
  76. package/dist/services/ai/index.js +9 -2
  77. package/dist/services/ai/index.js.map +1 -1
  78. package/dist/services/ai/prompts.d.ts +6 -1
  79. package/dist/services/ai/prompts.d.ts.map +1 -1
  80. package/dist/services/ai/prompts.js +10 -4
  81. package/dist/services/ai/prompts.js.map +1 -1
  82. package/dist/types/schemas.d.ts +3 -7
  83. package/dist/types/schemas.d.ts.map +1 -1
  84. package/dist/types/schemas.js +3 -3
  85. package/dist/types/schemas.js.map +1 -1
  86. package/dist/utils/agent.d.ts.map +1 -1
  87. package/dist/utils/agent.js +5 -11
  88. package/dist/utils/agent.js.map +1 -1
  89. package/dist/utils/config.js +1 -1
  90. package/dist/utils/config.js.map +1 -1
  91. package/dist/utils/logger.d.ts +1 -0
  92. package/dist/utils/logger.d.ts.map +1 -1
  93. package/dist/utils/logger.js +52 -11
  94. package/dist/utils/logger.js.map +1 -1
  95. package/dist/utils/output.d.ts +15 -0
  96. package/dist/utils/output.d.ts.map +1 -0
  97. package/dist/utils/output.js +50 -0
  98. package/dist/utils/output.js.map +1 -0
  99. package/dist/utils/prompt.d.ts +17 -2
  100. package/dist/utils/prompt.d.ts.map +1 -1
  101. package/dist/utils/prompt.js +66 -11
  102. package/dist/utils/prompt.js.map +1 -1
  103. package/dist/utils/run-action.d.ts +3 -0
  104. package/dist/utils/run-action.d.ts.map +1 -0
  105. package/dist/utils/run-action.js +19 -0
  106. package/dist/utils/run-action.js.map +1 -0
  107. package/dist/utils/runtime-context.d.ts +27 -0
  108. package/dist/utils/runtime-context.d.ts.map +1 -0
  109. package/dist/utils/runtime-context.js +74 -0
  110. package/dist/utils/runtime-context.js.map +1 -0
  111. package/dist/utils/ui-types.d.ts +2 -0
  112. package/dist/utils/ui-types.d.ts.map +1 -1
  113. package/dist/utils/ui.d.ts +2 -0
  114. package/dist/utils/ui.d.ts.map +1 -1
  115. package/dist/utils/ui.js +96 -22
  116. package/dist/utils/ui.js.map +1 -1
  117. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  import { Command } from '@commander-js/extra-typings';
2
2
  import { ContextDB } from '../../../storage/db.js';
3
3
  import { ui } from '../../../utils/ui.js';
4
- import { validate, isValidationError } from '../../../utils/validation.js';
4
+ import { validate } from '../../../utils/validation.js';
5
+ import { emitJson } from '../../../utils/output.js';
6
+ import { runAction } from '../../../utils/run-action.js';
5
7
  import { agentInitOptionsSchema } from '../../../types/schemas.js';
6
8
  import { createAgentDir, getAgentDbPath, saveAgentConfig, updateGitignore, getDefaultProjectName, isAgentInitialized, } from '../../../utils/agent.js';
7
9
  export function createAgentInitCommand() {
@@ -10,19 +12,10 @@ export function createAgentInitCommand() {
10
12
  .description('Initialize agent context management in the current project')
11
13
  .option('--project <name>', 'project name')
12
14
  .option('--force', 'force initialization even if already initialized')
13
- .action(async (options) => {
14
- let validatedOptions;
15
- try {
16
- validatedOptions = validate(agentInitOptionsSchema, options, 'agent init options');
17
- }
18
- catch (error) {
19
- if (isValidationError(error)) {
20
- process.exit(1);
21
- }
22
- throw error;
23
- }
15
+ .action(runAction(async (options) => {
16
+ const validatedOptions = validate(agentInitOptionsSchema, options, 'agent init options');
24
17
  await initializeAgent(validatedOptions);
25
- });
18
+ }));
26
19
  return command;
27
20
  }
28
21
  async function initializeAgent(options) {
@@ -32,8 +25,7 @@ async function initializeAgent(options) {
32
25
  const alreadyInitialized = await isAgentInitialized();
33
26
  if (alreadyInitialized && !options.force) {
34
27
  spinner.fail('Agent already initialized in this project');
35
- ui.warn('Use --force to reinitialize');
36
- process.exit(1);
28
+ throw new Error('Agent already initialized. Use --force to reinitialize.');
37
29
  }
38
30
  if (alreadyInitialized && options.force) {
39
31
  ui.warn('Reinitializing agent (existing data will be preserved)');
@@ -43,7 +35,7 @@ async function initializeAgent(options) {
43
35
  const dbPath = await getAgentDbPath();
44
36
  if (!dbPath) {
45
37
  spinner.fail('Failed to get database path');
46
- process.exit(1);
38
+ throw new Error('Failed to get database path');
47
39
  }
48
40
  spinner.text = 'Initializing context database';
49
41
  const db = await ContextDB.create(dbPath);
@@ -62,25 +54,36 @@ async function initializeAgent(options) {
62
54
  spinner.text = 'Updating .gitignore';
63
55
  await updateGitignore();
64
56
  spinner.succeed('Agent initialized successfully');
65
- ui.section('Agent Context Management');
66
- ui.keyValue([
67
- ['Project', projectName],
68
- ['Location', agentDir],
69
- ['Database', 'context.db'],
70
- ['Contexts', stats.total.toString()],
71
- ]);
72
- ui.divider();
73
- ui.step('Next steps:');
74
- ui.list([
75
- 'Add context: neo agent context add "Your context here" --tag api --priority high',
76
- 'List contexts: neo agent context list',
77
- 'Remove context: neo agent context remove <id>',
78
- ]);
57
+ emitJson({
58
+ ok: true,
59
+ command: 'agent.init',
60
+ project: projectName,
61
+ location: agentDir,
62
+ database: 'context.db',
63
+ contexts: stats.total,
64
+ }, {
65
+ text: () => {
66
+ ui.section('Agent Context Management');
67
+ ui.keyValue([
68
+ ['Project', projectName],
69
+ ['Location', agentDir],
70
+ ['Database', 'context.db'],
71
+ ['Contexts', stats.total.toString()],
72
+ ]);
73
+ ui.divider();
74
+ ui.step('Next steps:');
75
+ ui.list([
76
+ 'Add context: neo agent context add "Your context here" --tag api --priority high',
77
+ 'List contexts: neo agent context list',
78
+ 'Remove context: neo agent context remove <id>',
79
+ ]);
80
+ },
81
+ });
79
82
  }
80
83
  catch (error) {
81
- spinner.fail('Failed to initialize agent');
82
- ui.error(error instanceof Error ? error.message : String(error));
83
- process.exit(1);
84
+ if (spinner.isSpinning)
85
+ spinner.fail('Failed to initialize agent');
86
+ throw error instanceof Error ? error : new Error(String(error));
84
87
  }
85
88
  }
86
89
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/agent/init/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/agent/init/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAiDtD,wBAAgB,kBAAkB,IAAI,OAAO,CAqF5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAqDtD,wBAAgB,kBAAkB,IAAI,OAAO,CA2F5C"}
@@ -2,8 +2,12 @@ import { Command } from '@commander-js/extra-typings';
2
2
  import inquirer from 'inquirer';
3
3
  import { ZshIntegration } from '../../../utils/shell.js';
4
4
  import { ui } from '../../../utils/ui.js';
5
- import { validate, isValidationError } from '../../../utils/validation.js';
5
+ import { validate } from '../../../utils/validation.js';
6
6
  import { aliasSetupOptionsSchema } from '../../../types/schemas.js';
7
+ import { getRuntimeContext } from '../../../utils/runtime-context.js';
8
+ import { NonInteractiveError } from '../../../utils/prompt.js';
9
+ import { emitJson } from '../../../utils/output.js';
10
+ import { runAction } from '../../../utils/run-action.js';
7
11
  const ALIASES = Object.freeze({
8
12
  gp: 'neo git pull',
9
13
  gpu: 'neo git push',
@@ -26,36 +30,35 @@ export function createSetupCommand() {
26
30
  command
27
31
  .description('Setup ZSH aliases for Neo CLI. Backs up ~/.zshrc before modifying.')
28
32
  .option('-f, --force', 'skip confirmation and overwrite conflicting aliases')
29
- .action(async (options) => {
30
- let validatedOptions;
31
- try {
32
- validatedOptions = validate(aliasSetupOptionsSchema, options, 'alias setup options');
33
- }
34
- catch (error) {
35
- if (isValidationError(error)) {
36
- process.exit(1);
37
- }
38
- throw error;
39
- }
33
+ .action(runAction(async (options) => {
34
+ const validatedOptions = validate(aliasSetupOptionsSchema, options, 'alias setup options');
40
35
  const shell = new ZshIntegration();
41
- try {
42
- const rcFile = shell.getRcFile();
43
- const rcContent = await (async () => {
44
- try {
45
- const { readFile } = await import('fs/promises');
46
- return await readFile(rcFile, 'utf-8');
47
- }
48
- catch {
49
- return '';
50
- }
51
- })();
52
- const conflicts = findConflictingAliases(rcContent, ALIASES);
53
- if (conflicts.length > 0 && !validatedOptions.force) {
54
- ui.warn('The following aliases already exist and will be overwritten:');
55
- for (const c of conflicts) {
56
- ui.log(` ${c.alias}: currently ${c.current} -> new ${ALIASES[c.alias]}`);
57
- }
58
- const { confirm } = await inquirer.prompt([
36
+ const rcFile = shell.getRcFile();
37
+ const rcContent = await (async () => {
38
+ try {
39
+ const { readFile } = await import('fs/promises');
40
+ return await readFile(rcFile, 'utf-8');
41
+ }
42
+ catch {
43
+ return '';
44
+ }
45
+ })();
46
+ const conflicts = findConflictingAliases(rcContent, ALIASES);
47
+ if (conflicts.length > 0 && !validatedOptions.force) {
48
+ ui.warn('The following aliases already exist and will be overwritten:');
49
+ for (const c of conflicts) {
50
+ ui.plain(` ${c.alias}: currently ${c.current} -> new ${ALIASES[c.alias]}`);
51
+ }
52
+ const rtCtx = getRuntimeContext();
53
+ let confirm;
54
+ if (rtCtx.yes) {
55
+ confirm = true;
56
+ }
57
+ else if (rtCtx.nonInteractive) {
58
+ throw new NonInteractiveError('Existing aliases would be overwritten', '--force or --yes');
59
+ }
60
+ else {
61
+ const answer = await inquirer.prompt([
59
62
  {
60
63
  type: 'confirm',
61
64
  name: 'confirm',
@@ -63,32 +66,34 @@ export function createSetupCommand() {
63
66
  default: false,
64
67
  },
65
68
  ]);
66
- if (!confirm) {
67
- ui.info('Aborted. No changes were made');
68
- return;
69
- }
69
+ confirm = Boolean(answer.confirm);
70
70
  }
71
- const backupPath = await shell.backup();
72
- if (backupPath) {
73
- ui.info(`Backed up ${rcFile} to ${backupPath}`);
74
- }
75
- else {
76
- ui.warn('No existing ~/.zshrc found to back up, proceeding to create/update it');
71
+ if (!confirm) {
72
+ ui.info('Aborted. No changes were made');
73
+ return;
77
74
  }
78
- for (const [alias, value] of Object.entries(ALIASES)) {
79
- await shell.addAlias(alias, value);
80
- }
81
- ui.success('Aliases configured successfully');
82
- ui.info('Added/updated aliases:');
83
- ui.list(Object.entries(ALIASES).map(([alias, value]) => `${alias}="${value}"`));
84
- ui.info('Restart your shell or run: source ~/.zshrc');
85
75
  }
86
- catch (error) {
87
- const message = error instanceof Error ? error.message : String(error);
88
- ui.error(`Failed to setup aliases: ${message}`);
89
- process.exitCode = 1;
76
+ const backupPath = await shell.backup();
77
+ if (backupPath) {
78
+ ui.info(`Backed up ${rcFile} to ${backupPath}`);
79
+ }
80
+ else {
81
+ ui.warn('No existing ~/.zshrc found to back up, proceeding to create/update it');
82
+ }
83
+ for (const [alias, value] of Object.entries(ALIASES)) {
84
+ await shell.addAlias(alias, value);
90
85
  }
91
- });
86
+ ui.success('Aliases configured successfully');
87
+ ui.info('Added/updated aliases:');
88
+ ui.list(Object.entries(ALIASES).map(([alias, value]) => `${alias}="${value}"`));
89
+ ui.info('Restart your shell or run: source ~/.zshrc');
90
+ emitJson({
91
+ ok: true,
92
+ command: 'alias.setup',
93
+ aliases: ALIASES,
94
+ rcFile,
95
+ });
96
+ }));
92
97
  return command;
93
98
  }
94
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/completions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AA2BtD,wBAAgB,wBAAwB,IAAI,OAAO,CAmElD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/completions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AA4BtD,wBAAgB,wBAAwB,IAAI,OAAO,CA+ElD"}
@@ -1,9 +1,10 @@
1
1
  import { Command } from '@commander-js/extra-typings';
2
- import { logger } from '../../utils/logger.js';
3
2
  import { ui } from '../../utils/ui.js';
4
3
  import { CompletionGenerator } from '../../utils/completions.js';
5
4
  import { configManager } from '../../utils/config.js';
6
5
  import { ZshIntegration, BashIntegration, FishIntegration } from '../../utils/shell.js';
6
+ import { emitJson } from '../../utils/output.js';
7
+ import { runAction } from '../../utils/run-action.js';
7
8
  import { join } from 'path';
8
9
  const SUPPORTED_SHELLS = ['zsh', 'bash', 'fish'];
9
10
  function detectShell() {
@@ -28,20 +29,19 @@ export function createCompletionsCommand() {
28
29
  command
29
30
  .description('Generate or install shell completions')
30
31
  .argument('[shell]', 'shell type (zsh, bash, fish)')
31
- .action(async (shell) => {
32
+ .action(runAction(async (shell) => {
32
33
  const shellType = (shell ?? detectShell());
33
34
  if (!SUPPORTED_SHELLS.includes(shellType)) {
34
- ui.error(`Unsupported shell: ${shellType}. Supported: ${SUPPORTED_SHELLS.join(', ')}`);
35
- process.exit(1);
35
+ throw new Error(`Unsupported shell: ${shellType}. Supported: ${SUPPORTED_SHELLS.join(', ')}`);
36
36
  }
37
37
  const rootProgram = getRootProgram(command);
38
38
  const output = CompletionGenerator.generateCompletions(rootProgram, shellType);
39
39
  process.stdout.write(output);
40
- });
40
+ }));
41
41
  command
42
42
  .command('install')
43
43
  .description('Install completions for the current shell')
44
- .action(async () => {
44
+ .action(runAction(async () => {
45
45
  const shellType = detectShell();
46
46
  const rootProgram = getRootProgram(command);
47
47
  const completionsPath = join(configManager.getConfigDir(), 'completions');
@@ -49,36 +49,44 @@ export function createCompletionsCommand() {
49
49
  spinner.start();
50
50
  try {
51
51
  await CompletionGenerator.createCompletionFiles(completionsPath, rootProgram);
52
+ let reload;
52
53
  switch (shellType) {
53
54
  case 'zsh': {
54
55
  const zsh = new ZshIntegration();
55
56
  await zsh.addCompletions(completionsPath);
56
57
  spinner.succeed('ZSH completions installed');
57
- ui.info('Restart your terminal or run: source ~/.zshrc');
58
+ reload = 'source ~/.zshrc';
58
59
  break;
59
60
  }
60
61
  case 'bash': {
61
62
  const bash = new BashIntegration();
62
63
  await bash.addCompletions(join(completionsPath, 'neo.bash'));
63
64
  spinner.succeed('Bash completions installed');
64
- ui.info('Restart your terminal or run: source ~/.bashrc');
65
+ reload = 'source ~/.bashrc';
65
66
  break;
66
67
  }
67
68
  case 'fish': {
68
69
  const fish = new FishIntegration();
69
70
  await fish.addCompletions(join(completionsPath, 'neo.fish'));
70
71
  spinner.succeed('Fish completions installed');
71
- ui.info('Completions are available immediately in new Fish sessions');
72
+ reload = '(auto-loaded in new Fish sessions)';
72
73
  break;
73
74
  }
74
75
  }
76
+ emitJson({
77
+ ok: true,
78
+ command: 'completions.install',
79
+ shell: shellType,
80
+ completionsPath,
81
+ }, {
82
+ text: () => ui.info(`Restart your terminal or run: ${reload}`),
83
+ });
75
84
  }
76
85
  catch (error) {
77
86
  spinner.fail('Failed to install completions');
78
- logger.error(`${error}`);
79
- process.exit(1);
87
+ throw error instanceof Error ? error : new Error(String(error));
80
88
  }
81
- });
89
+ }));
82
90
  return command;
83
91
  }
84
92
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/completions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/completions/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAetD,wBAAgB,mBAAmB,IAAI,OAAO,CAW7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAiBtD,wBAAgB,mBAAmB,IAAI,OAAO,CAW7C"}