@global-packages/mcp-kit 1.0.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/commands/add.d.ts.map +1 -1
  2. package/dist/commands/add.js +117 -71
  3. package/dist/commands/add.js.map +1 -1
  4. package/dist/commands/backup.d.ts.map +1 -1
  5. package/dist/commands/backup.js +27 -27
  6. package/dist/commands/backup.js.map +1 -1
  7. package/dist/commands/completion.d.ts.map +1 -1
  8. package/dist/commands/completion.js +50 -35
  9. package/dist/commands/completion.js.map +1 -1
  10. package/dist/commands/doctor.d.ts +5 -1
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +128 -104
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/env-check.d.ts.map +1 -1
  15. package/dist/commands/env-check.js +63 -40
  16. package/dist/commands/env-check.js.map +1 -1
  17. package/dist/commands/export.d.ts +6 -4
  18. package/dist/commands/export.d.ts.map +1 -1
  19. package/dist/commands/export.js +52 -41
  20. package/dist/commands/export.js.map +1 -1
  21. package/dist/commands/import.d.ts.map +1 -1
  22. package/dist/commands/import.js +109 -74
  23. package/dist/commands/import.js.map +1 -1
  24. package/dist/commands/info.d.ts.map +1 -1
  25. package/dist/commands/info.js +60 -56
  26. package/dist/commands/info.js.map +1 -1
  27. package/dist/commands/init.d.ts +5 -2
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +189 -87
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/install.d.ts.map +1 -1
  32. package/dist/commands/install.js +56 -48
  33. package/dist/commands/install.js.map +1 -1
  34. package/dist/commands/list.d.ts +5 -2
  35. package/dist/commands/list.d.ts.map +1 -1
  36. package/dist/commands/list.js +103 -45
  37. package/dist/commands/list.js.map +1 -1
  38. package/dist/commands/open.d.ts.map +1 -1
  39. package/dist/commands/open.js +31 -23
  40. package/dist/commands/open.js.map +1 -1
  41. package/dist/commands/remove.d.ts.map +1 -1
  42. package/dist/commands/remove.js +60 -43
  43. package/dist/commands/remove.js.map +1 -1
  44. package/dist/commands/reset.d.ts.map +1 -1
  45. package/dist/commands/reset.js +52 -48
  46. package/dist/commands/reset.js.map +1 -1
  47. package/dist/commands/search.d.ts.map +1 -1
  48. package/dist/commands/search.js +52 -20
  49. package/dist/commands/search.js.map +1 -1
  50. package/dist/commands/status.d.ts.map +1 -1
  51. package/dist/commands/status.js +94 -76
  52. package/dist/commands/status.js.map +1 -1
  53. package/dist/commands/toggle.d.ts.map +1 -1
  54. package/dist/commands/toggle.js +22 -24
  55. package/dist/commands/toggle.js.map +1 -1
  56. package/dist/commands/update.d.ts.map +1 -1
  57. package/dist/commands/update.js +86 -62
  58. package/dist/commands/update.js.map +1 -1
  59. package/dist/commands/validate.d.ts.map +1 -1
  60. package/dist/commands/validate.js +43 -37
  61. package/dist/commands/validate.js.map +1 -1
  62. package/dist/constants.d.ts +3 -1
  63. package/dist/constants.d.ts.map +1 -1
  64. package/dist/constants.js +377 -78
  65. package/dist/constants.js.map +1 -1
  66. package/dist/core/credentials.d.ts +15 -2
  67. package/dist/core/credentials.d.ts.map +1 -1
  68. package/dist/core/credentials.js +205 -116
  69. package/dist/core/credentials.js.map +1 -1
  70. package/dist/core/detector.d.ts +28 -2
  71. package/dist/core/detector.d.ts.map +1 -1
  72. package/dist/core/detector.js +101 -60
  73. package/dist/core/detector.js.map +1 -1
  74. package/dist/core/registry.d.ts +25 -1
  75. package/dist/core/registry.d.ts.map +1 -1
  76. package/dist/core/registry.js +45 -33
  77. package/dist/core/registry.js.map +1 -1
  78. package/dist/core/validator.d.ts +18 -2
  79. package/dist/core/validator.d.ts.map +1 -1
  80. package/dist/core/validator.js +53 -30
  81. package/dist/core/validator.js.map +1 -1
  82. package/dist/core/writer.d.ts +19 -1
  83. package/dist/core/writer.d.ts.map +1 -1
  84. package/dist/core/writer.js +41 -35
  85. package/dist/core/writer.js.map +1 -1
  86. package/dist/index.js +233 -122
  87. package/dist/index.js.map +1 -1
  88. package/dist/postinstall.js +25 -30
  89. package/dist/postinstall.js.map +1 -1
  90. package/dist/prompts/dev-prompts.d.ts +10 -2
  91. package/dist/prompts/dev-prompts.d.ts.map +1 -1
  92. package/dist/prompts/dev-prompts.js +87 -31
  93. package/dist/prompts/dev-prompts.js.map +1 -1
  94. package/dist/prompts/non-dev-prompts.d.ts +16 -2
  95. package/dist/prompts/non-dev-prompts.d.ts.map +1 -1
  96. package/dist/prompts/non-dev-prompts.js +90 -35
  97. package/dist/prompts/non-dev-prompts.js.map +1 -1
  98. package/dist/prompts/shared-prompts.d.ts +10 -1
  99. package/dist/prompts/shared-prompts.d.ts.map +1 -1
  100. package/dist/prompts/shared-prompts.js +66 -43
  101. package/dist/prompts/shared-prompts.js.map +1 -1
  102. package/dist/types.d.ts +22 -6
  103. package/dist/types.d.ts.map +1 -1
  104. package/dist/types.js +4 -2
  105. package/dist/types.js.map +1 -1
  106. package/dist/utils/fs.d.ts +36 -4
  107. package/dist/utils/fs.d.ts.map +1 -1
  108. package/dist/utils/fs.js +92 -28
  109. package/dist/utils/fs.js.map +1 -1
  110. package/dist/utils/logger.d.ts.map +1 -1
  111. package/dist/utils/logger.js +18 -24
  112. package/dist/utils/logger.js.map +1 -1
  113. package/dist/utils/network.d.ts +12 -1
  114. package/dist/utils/network.d.ts.map +1 -1
  115. package/dist/utils/network.js +37 -9
  116. package/dist/utils/network.js.map +1 -1
  117. package/dist/utils/spinner.js +10 -19
  118. package/dist/utils/spinner.js.map +1 -1
  119. package/package.json +62 -27
  120. package/src/postinstall.ts +121 -0
@@ -1,40 +1,96 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.collectDevAnswers = collectDevAnswers;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const inquirer_1 = __importDefault(require("inquirer"));
9
- async function collectDevAnswers(mcps, _storage) {
10
- const allAnswers = new Map();
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import { checkAndReportEnvVar, printEnvProfileInstructions, } from '../core/credentials.js';
4
+ /**
5
+ * Collect all env var answers for the given set of MCPs in developer mode.
6
+ *
7
+ * Returns:
8
+ * Map<mcpId, Record<envKey, value>>
9
+ *
10
+ * MCPs with no env vars are still included with an empty record.
11
+ */
12
+ export async function collectDevAnswers(mcps, storage) {
13
+ const results = new Map();
11
14
  for (const mcp of mcps) {
12
- console.log(chalk_1.default.bold.cyan(`\n⚙️ Setting up: ${mcp.name}`));
13
- console.log(chalk_1.default.gray(mcp.description));
15
+ console.log('');
16
+ console.log(chalk.bold.cyan(`🔧 Setting up: ${mcp.name}`));
17
+ console.log(chalk.gray(mcp.description));
18
+ console.log(chalk.gray(`Docs: ${mcp.docsUrl}`));
19
+ //
20
+ // No env vars
21
+ //
14
22
  if (mcp.envVars.length === 0) {
15
- console.log(chalk_1.default.green("✅ No configuration needed"));
16
- allAnswers.set(mcp.id, {});
23
+ console.log(chalk.green('✓ No configuration needed'));
24
+ results.set(mcp.id, {});
17
25
  continue;
18
26
  }
19
- const mcpAnswers = {};
20
- for (const envVar of mcp.envVars) {
21
- if (envVar.hint) {
22
- console.log(chalk_1.default.gray(` ${envVar.hint}`));
23
- }
24
- const response = await inquirer_1.default.prompt([
25
- {
26
- type: envVar.secret ? "password" : "input",
27
- name: "value",
28
- message: envVar.label + (envVar.required ? " *" : " (optional)"),
29
- default: envVar.defaultValue || "",
30
- mask: envVar.secret ? "*" : undefined,
31
- validate: (input) => !envVar.required || input.length > 0 || "This field is required"
27
+ //
28
+ // env-profile mode
29
+ //
30
+ if (storage === 'env-profile') {
31
+ const record = {};
32
+ let allSet = true;
33
+ for (const envVar of mcp.envVars) {
34
+ const alreadySet = checkAndReportEnvVar(envVar.key, envVar.secret);
35
+ if (!alreadySet) {
36
+ allSet = false;
37
+ if (envVar.required) {
38
+ printEnvProfileInstructions(envVar.key);
39
+ }
32
40
  }
33
- ]);
34
- mcpAnswers[envVar.key] = response.value;
41
+ // store runtime env value or empty string
42
+ record[envVar.key] =
43
+ process.env[envVar.key] ?? '';
44
+ }
45
+ if (!allSet) {
46
+ console.log(chalk.yellow('\n⚠ Set missing environment variables and re-run mcp-kit init\n'));
47
+ }
48
+ results.set(mcp.id, record);
49
+ continue;
35
50
  }
36
- allAnswers.set(mcp.id, mcpAnswers);
51
+ //
52
+ // interactive mode
53
+ //
54
+ const questions = mcp.envVars.map((envVar) => {
55
+ if (envVar.hint) {
56
+ console.log(chalk.gray(` ${envVar.hint}`));
57
+ }
58
+ return {
59
+ type: envVar.secret
60
+ ? 'password'
61
+ : 'input',
62
+ name: envVar.key,
63
+ message: `${envVar.label}${envVar.required
64
+ ? ' *'
65
+ : ' (optional)'}`,
66
+ default: envVar.defaultValue ?? '',
67
+ validate: (input) => {
68
+ if (!envVar.required &&
69
+ input.trim().length === 0) {
70
+ return true;
71
+ }
72
+ if (envVar.required &&
73
+ input.trim().length === 0) {
74
+ return 'This field is required';
75
+ }
76
+ if (envVar.validationRegex) {
77
+ try {
78
+ const regex = new RegExp(envVar.validationRegex);
79
+ if (!regex.test(input)) {
80
+ return 'Value does not match expected format';
81
+ }
82
+ }
83
+ catch {
84
+ // ignore invalid regex
85
+ }
86
+ }
87
+ return true;
88
+ },
89
+ };
90
+ });
91
+ const answers = await inquirer.prompt(questions);
92
+ results.set(mcp.id, answers);
37
93
  }
38
- return allAnswers;
94
+ return results;
39
95
  }
40
96
  //# sourceMappingURL=dev-prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/dev-prompts.ts"],"names":[],"mappings":";;;;;AAIA,8CAyCC;AA7CD,kDAA0B;AAC1B,wDAAgC;AAGzB,KAAK,UAAU,iBAAiB,CACrC,IAAqB,EACrB,QAA2B;IAE3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;gBACxD;oBACE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;oBAC1C,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;oBAChE,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;oBAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB;iBAC9F;aACF,CAAC,CAAC;YAEH,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/dev-prompts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
- import { CredentialStorage, McpDefinition } from "../types";
2
- export declare function collectNonDevAnswers(mcps: McpDefinition[], _storage: CredentialStorage): Promise<Map<string, Record<string, string>>>;
1
+ import type { McpDefinition, CredentialStorage } from '../types.js';
2
+ /**
3
+ * Collect all env var answers for the given set of MCPs in non-developer mode.
4
+ *
5
+ * Uses simpler, friendlier labels and reminds non-technical users
6
+ * to ask their IT/DevOps team for values they don't know.
7
+ *
8
+ * Returns:
9
+ * Map<mcpId, Record<envKey, value>>
10
+ */
11
+ export declare function collectNonDevAnswers(mcps: McpDefinition[], storage: CredentialStorage): Promise<Map<string, Record<string, string>>>;
12
+ declare module '../types.js' {
13
+ interface McpEnvVar {
14
+ devOnly?: boolean;
15
+ }
16
+ }
3
17
  //# sourceMappingURL=non-dev-prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"non-dev-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAyC9C"}
1
+ {"version":3,"file":"non-dev-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAWrB;;;;;;;;GAQG;AAEH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CACR,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACpC,CAuJA;AAMD,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,SAAS;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;CACF"}
@@ -1,43 +1,98 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.collectNonDevAnswers = collectNonDevAnswers;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const inquirer_1 = __importDefault(require("inquirer"));
9
- const constants_1 = require("../constants");
10
- async function collectNonDevAnswers(mcps, _storage) {
11
- console.log(chalk_1.default.yellow("ℹ Ask your IT/DevOps team for these values if unsure"));
12
- const allAnswers = new Map();
13
- const allowed = new Set(constants_1.NON_DEV_MCP_IDS);
14
- for (const mcp of mcps.filter((item) => allowed.has(item.id))) {
15
- console.log(chalk_1.default.bold.cyan(`\n⚙️ Setting up: ${mcp.name}`));
16
- console.log(chalk_1.default.gray(mcp.description));
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import { checkAndReportEnvVar, printEnvProfileInstructions, } from '../core/credentials.js';
4
+ //
5
+ // Non-developer interactive prompts
6
+ //
7
+ /**
8
+ * Collect all env var answers for the given set of MCPs in non-developer mode.
9
+ *
10
+ * Uses simpler, friendlier labels and reminds non-technical users
11
+ * to ask their IT/DevOps team for values they don't know.
12
+ *
13
+ * Returns:
14
+ * Map<mcpId, Record<envKey, value>>
15
+ */
16
+ export async function collectNonDevAnswers(mcps, storage) {
17
+ console.log('');
18
+ console.log(chalk.yellow('ℹ Ask your IT/DevOps team for these values if you are unsure.\n' +
19
+ 'They will know what to provide for each field.\n'));
20
+ const results = new Map();
21
+ for (const mcp of mcps) {
22
+ //
23
+ // Skip dev-only MCPs in non-dev mode
24
+ //
25
+ if (mcp.devOnly)
26
+ continue;
27
+ console.log('');
28
+ console.log(chalk.bold.cyan(`🔧 Setting up: ${mcp.name}`));
29
+ console.log(chalk.gray(mcp.description));
30
+ //
31
+ // No configuration needed
32
+ //
17
33
  if (mcp.envVars.length === 0) {
18
- console.log(chalk_1.default.green("✅ No configuration needed"));
19
- allAnswers.set(mcp.id, {});
34
+ console.log(chalk.green('✓ No configuration needed'));
35
+ results.set(mcp.id, {});
20
36
  continue;
21
37
  }
22
- const mcpAnswers = {};
23
- for (const envVar of mcp.envVars) {
24
- if (envVar.hint) {
25
- console.log(chalk_1.default.gray(` ${envVar.hint}`));
26
- }
27
- const response = await inquirer_1.default.prompt([
28
- {
29
- type: envVar.secret ? "password" : "input",
30
- name: "value",
31
- message: `${envVar.label} (ask your IT admin)` + (envVar.required ? " *" : " (optional)"),
32
- default: envVar.defaultValue || "",
33
- mask: envVar.secret ? "*" : undefined,
34
- validate: (input) => !envVar.required || input.length > 0 || "This field is required"
38
+ //
39
+ // env-profile mode
40
+ //
41
+ if (storage === 'env-profile') {
42
+ const record = {};
43
+ let allSet = true;
44
+ for (const envVar of mcp.envVars.filter((ev) => !ev.devOnly)) {
45
+ const alreadySet = checkAndReportEnvVar(envVar.key, envVar.secret);
46
+ if (!alreadySet) {
47
+ allSet = false;
48
+ if (envVar.required) {
49
+ printEnvProfileInstructions(envVar.key);
50
+ }
35
51
  }
36
- ]);
37
- mcpAnswers[envVar.key] = response.value;
52
+ record[envVar.key] =
53
+ process.env[envVar.key] ?? '';
54
+ }
55
+ if (!allSet) {
56
+ console.log(chalk.yellow('\n⚠ Ask your IT/DevOps team to set the missing variables above, then re-run.\n'));
57
+ }
58
+ results.set(mcp.id, record);
59
+ continue;
38
60
  }
39
- allAnswers.set(mcp.id, mcpAnswers);
61
+ //
62
+ // Interactive mode
63
+ //
64
+ const questions = mcp.envVars
65
+ .filter((ev) => !ev.devOnly)
66
+ .map((envVar) => {
67
+ if (envVar.hint) {
68
+ console.log(chalk.gray(` ${envVar.hint}`));
69
+ }
70
+ const label = `${envVar.label} (ask your IT admin if unsure)`;
71
+ return {
72
+ type: envVar.secret
73
+ ? 'password'
74
+ : 'input',
75
+ name: envVar.key,
76
+ message: `${label}${envVar.required
77
+ ? ' *'
78
+ : ' (optional)'}`,
79
+ default: envVar.defaultValue ?? '',
80
+ validate: (input) => {
81
+ if (!envVar.required &&
82
+ input.trim().length === 0) {
83
+ return true;
84
+ }
85
+ if (envVar.required &&
86
+ input.trim().length === 0) {
87
+ return 'This field is required';
88
+ }
89
+ return true;
90
+ },
91
+ };
92
+ });
93
+ const answers = await inquirer.prompt(questions);
94
+ results.set(mcp.id, answers);
40
95
  }
41
- return allAnswers;
96
+ return results;
42
97
  }
43
98
  //# sourceMappingURL=non-dev-prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"non-dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":";;;;;AAKA,oDA4CC;AAjDD,kDAA0B;AAC1B,wDAAgC;AAChC,4CAA+C;AAGxC,KAAK,UAAU,oBAAoB,CACxC,IAAqB,EACrB,QAA2B;IAE3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,2BAAe,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;gBACxD;oBACE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;oBAC1C,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;oBACzF,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;oBAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB;iBAC9F;aACF,CAAC,CAAC;YAEH,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"non-dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
- import { CredentialStorage, McpDefinition } from "../types";
1
+ import type { CredentialStorage, McpDefinition } from '../types.js';
2
+ /**
3
+ * Ask the user how they want credentials stored.
4
+ */
2
5
  export declare function askCredentialStorage(): Promise<CredentialStorage>;
6
+ /**
7
+ * Ask the user to select which MCPs to configure.
8
+ */
3
9
  export declare function askMcpSelection(mcps: McpDefinition[], alreadyInstalled: string[]): Promise<string[]>;
10
+ /**
11
+ * Ask a yes/no confirmation question.
12
+ */
4
13
  export declare function askConfirm(message: string): Promise<boolean>;
5
14
  //# sourceMappingURL=shared-prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/shared-prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAwBvE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAe1G;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlE"}
1
+ {"version":3,"file":"shared-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/shared-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACd,MAAM,aAAa,CAAC;AAMrB;;GAEG;AAEH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAmCvE;AAED;;GAEG;AAEH,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EAAE,EACrB,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED;;GAEG;AAEH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAclB"}
@@ -1,59 +1,82 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.askCredentialStorage = askCredentialStorage;
7
- exports.askMcpSelection = askMcpSelection;
8
- exports.askConfirm = askConfirm;
9
- const inquirer_1 = __importDefault(require("inquirer"));
10
- async function askCredentialStorage() {
11
- const answer = await inquirer_1.default.prompt([
1
+ import inquirer from 'inquirer';
2
+ //
3
+ // Shared interactive prompts
4
+ //
5
+ /**
6
+ * Ask the user how they want credentials stored.
7
+ */
8
+ export async function askCredentialStorage() {
9
+ const { storage } = await inquirer.prompt([
12
10
  {
13
- type: "list",
14
- name: "storage",
15
- message: "How should credentials be stored?",
11
+ type: 'list',
12
+ name: 'storage',
13
+ message: 'How should credentials be stored?',
16
14
  choices: [
17
15
  {
18
- name: "System keychain (recommended Mac Keychain / Windows Credential Store)",
19
- value: "keychain"
16
+ name: 'Environment variable (~/.zshrc / ~/.bash_profile / Windows System Env) - recommended',
17
+ value: 'env-profile',
20
18
  },
21
19
  {
22
- name: ".env file in project root (auto-added to .gitignore)",
23
- value: "dotenv"
20
+ name: 'System keychain (Mac Keychain / Windows Credential Store)',
21
+ value: 'keychain',
24
22
  },
25
23
  {
26
- name: "Inline in mcp.json (not recommended for shared/committed repos)",
27
- value: "inline"
28
- }
29
- ]
30
- }
24
+ name: 'dotenv file in project root (auto-added to .gitignore)',
25
+ value: 'dotenv',
26
+ },
27
+ {
28
+ name: 'Inline in mcp.json (not recommended for shared repos)',
29
+ value: 'inline',
30
+ },
31
+ ],
32
+ },
31
33
  ]);
32
- return answer.storage;
34
+ return storage;
33
35
  }
34
- async function askMcpSelection(mcps, alreadyInstalled) {
35
- const answer = await inquirer_1.default.prompt([
36
+ /**
37
+ * Ask the user to select which MCPs to configure.
38
+ */
39
+ export async function askMcpSelection(mcps, alreadyInstalled) {
40
+ const ALL_VALUE = '__ALL__';
41
+ const allIds = mcps.map((m) => m.id);
42
+ const allPreChecked = allIds.every((id) => alreadyInstalled.includes(id));
43
+ const { selected } = await inquirer.prompt([
36
44
  {
37
- type: "checkbox",
38
- name: "selected",
39
- message: "Select MCPs to configure (space to select, enter to confirm)",
40
- choices: mcps.map((mcp) => ({
41
- name: `${mcp.name} — ${mcp.description}`,
42
- value: mcp.id,
43
- checked: alreadyInstalled.includes(mcp.id)
44
- }))
45
- }
45
+ type: 'checkbox',
46
+ name: 'selected',
47
+ message: 'Select MCPs to configure (space to select, a to toggle all, enter to confirm):',
48
+ choices: [
49
+ {
50
+ name: 'Select ALL →',
51
+ value: ALL_VALUE,
52
+ checked: allPreChecked,
53
+ },
54
+ new inquirer.Separator(),
55
+ ...mcps.map((mcp) => ({
56
+ name: `${mcp.name} - ${mcp.description}`,
57
+ value: mcp.id,
58
+ checked: alreadyInstalled.includes(mcp.id),
59
+ })),
60
+ ],
61
+ },
46
62
  ]);
47
- return answer.selected;
63
+ if (selected.includes(ALL_VALUE)) {
64
+ return allIds;
65
+ }
66
+ return selected.filter((v) => v !== ALL_VALUE);
48
67
  }
49
- async function askConfirm(message) {
50
- const answer = await inquirer_1.default.prompt([
68
+ /**
69
+ * Ask a yes/no confirmation question.
70
+ */
71
+ export async function askConfirm(message) {
72
+ const { confirmed } = await inquirer.prompt([
51
73
  {
52
- type: "confirm",
53
- name: "confirmed",
54
- message
55
- }
74
+ type: 'confirm',
75
+ name: 'confirmed',
76
+ message,
77
+ default: false,
78
+ },
56
79
  ]);
57
- return answer.confirmed;
80
+ return confirmed;
58
81
  }
59
82
  //# sourceMappingURL=shared-prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-prompts.js","sourceRoot":"","sources":["../../src/prompts/shared-prompts.ts"],"names":[],"mappings":";;;;;AAGA,oDAwBC;AAED,0CAeC;AAED,gCAUC;AAxDD,wDAAgC;AAGzB,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAiC;QACnE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,yEAAyE;oBAC/E,KAAK,EAAE,UAAU;iBAClB;gBACD;oBACE,IAAI,EAAE,sDAAsD;oBAC5D,KAAK,EAAE,QAAQ;iBAChB;gBACD;oBACE,IAAI,EAAE,iEAAiE;oBACvE,KAAK,EAAE,QAAQ;iBAChB;aACF;SACF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,IAAqB,EAAE,gBAA0B;IACrF,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAyB;QAC3D;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,8DAA8D;YACvE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,WAAW,EAAE;gBACxC,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;aAC3C,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAyB;QAC3D;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO;SACR;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"shared-prompts.js","sourceRoot":"","sources":["../../src/prompts/shared-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAOhC,EAAE;AACF,6BAA6B;AAC7B,EAAE;AAEF;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAEtC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EACL,mCAAmC;YACrC,OAAO,EAAE;gBACP;oBACE,IAAI,EACF,sFAAsF;oBACxF,KAAK,EAAE,aAAa;iBACrB;gBACD;oBACE,IAAI,EACF,2DAA2D;oBAC7D,KAAK,EAAE,UAAU;iBAClB;gBACD;oBACE,IAAI,EACF,wDAAwD;oBAC1D,KAAK,EAAE,QAAQ;iBAChB;gBACD;oBACE,IAAI,EACF,uDAAuD;oBACzD,KAAK,EAAE,QAAQ;iBAChB;aACF;SACF;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAqB,EACrB,gBAA0B;IAE1B,MAAM,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,aAAa,GACjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAClB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC9B,CAAC;IAEJ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAEvC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EACL,gFAAgF;YAElF,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,aAAa;iBACvB;gBAED,IAAI,QAAQ,CAAC,SAAS,EAAE;gBAExB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACpB,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,WAAW,EAAE;oBACxC,KAAK,EAAE,GAAG,CAAC,EAAE;oBACb,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAChC,GAAG,CAAC,EAAE,CACP;iBACF,CAAC,CAAC;aACJ;SACF;KACF,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe;IAEf,MAAM,EAAE,SAAS,EAAE,GACjB,MAAM,QAAQ,CAAC,MAAM,CAElB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEL,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export type SupportedOS = "windows" | "mac" | "linux";
2
- export type ProfileMode = "dev" | "non-dev";
3
- export type CredentialStorage = "keychain" | "dotenv" | "inline";
4
- export type McpCategory = "database" | "devops" | "testing" | "documentation" | "cloud" | "filesystem" | "incident" | "versioncontrol" | "productivity";
1
+ export type SupportedOS = 'windows' | 'mac' | 'linux';
2
+ export type ProfileMode = 'dev' | 'non-dev';
3
+ export type CredentialStorage = 'env-profile' | 'keychain' | 'dotenv' | 'inline';
4
+ export type McpCategory = 'database' | 'devops' | 'testing' | 'documentation' | 'cloud' | 'filesystem' | 'incident' | 'versioncontrol' | 'productivity' | 'codeanalysis' | 'design';
5
5
  export interface McpEnvVar {
6
6
  key: string;
7
7
  label: string;
@@ -28,18 +28,26 @@ export interface McpDefinition {
28
28
  version?: string;
29
29
  }
30
30
  export interface McpServerEntry {
31
+ type?: string;
31
32
  command: string;
32
33
  args: string[];
33
34
  env?: Record<string, string>;
34
35
  disabled?: boolean;
35
36
  }
37
+ export interface McpInputPrompt {
38
+ id: string;
39
+ type: string;
40
+ description: string;
41
+ password?: boolean;
42
+ }
36
43
  export interface McpJsonConfig {
44
+ inputs?: McpInputPrompt[];
37
45
  servers: Record<string, McpServerEntry>;
38
46
  }
39
47
  export interface VsCodePaths {
40
48
  mcpJsonPath: string;
41
49
  vscodeFolderPath: string;
42
- source: "project" | "global" | "created";
50
+ source: 'project' | 'global' | 'created';
43
51
  }
44
52
  export interface DoctorResult {
45
53
  mcpId: string;
@@ -50,7 +58,7 @@ export interface DoctorResult {
50
58
  packageInstallable: boolean;
51
59
  issues: string[];
52
60
  suggestions: string[];
53
- status: "healthy" | "warning" | "error";
61
+ status: 'healthy' | 'warning' | 'error';
54
62
  }
55
63
  export interface McpStatus {
56
64
  id: string;
@@ -76,4 +84,12 @@ export interface McpKitMeta {
76
84
  installedMcps: string[];
77
85
  mcpKitVersion: string;
78
86
  }
87
+ export interface McpKitExport {
88
+ exportedAt: string;
89
+ mcpKitVersion: string;
90
+ profileMode: string;
91
+ servers: Record<string, McpServerEntry>;
92
+ mcpIds: string[];
93
+ instructions: string;
94
+ }
79
95
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,3 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ //
2
+ // Operating system enum
3
+ //
4
+ export {};
3
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,wBAAwB;AACxB,EAAE"}
@@ -1,5 +1,37 @@
1
- export declare function ensureDirForFile(filePath: string): Promise<void>;
2
- export declare function pathExists(filePath: string): Promise<boolean>;
3
- export declare function readJsonSafe<T>(filePath: string, fallback: T): Promise<T>;
4
- export declare function writeJsonAtomic(filePath: string, data: unknown): Promise<void>;
1
+ /**
2
+ * Read and parse a JSON file. Returns null if the file doesn't exist or is invalid.
3
+ */
4
+ export declare function safeReadJSON<T>(filePath: string): Promise<T | null>;
5
+ /**
6
+ * Write an object to a JSON file, creating directories as needed.
7
+ */
8
+ export declare function safeWriteJSON(filePath: string, data: any): Promise<void>;
9
+ /**
10
+ * Check if a file exists.
11
+ */
12
+ export declare function fileExists(filePath: string): Promise<boolean>;
13
+ /**
14
+ * Check whether path is writable.
15
+ */
16
+ export declare function isWritable(filePath: string): Promise<boolean>;
17
+ /**
18
+ * Ensure a directory exists, creating it if necessary.
19
+ */
20
+ export declare function ensureDir(dirPath: string): Promise<void>;
21
+ /**
22
+ * Read a text file, returning null if it doesn't exist.
23
+ */
24
+ export declare function readText(filePath: string): Promise<string | null>;
25
+ /**
26
+ * Write text to a file, creating directories as needed.
27
+ */
28
+ export declare function writeText(filePath: string, content: string): Promise<void>;
29
+ /**
30
+ * Append text to a file, creating it if it doesn't exist.
31
+ */
32
+ export declare function appendText(filePath: string, content: string): Promise<void>;
33
+ /**
34
+ * Delete a file if it exists.
35
+ */
36
+ export declare function deleteFile(filePath: string): Promise<void>;
5
37
  //# sourceMappingURL=fs.d.ts.map