@x-code-cli/core 0.2.10 → 0.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 (251) hide show
  1. package/dist/agent/compression.d.ts +12 -2
  2. package/dist/agent/compression.d.ts.map +1 -1
  3. package/dist/agent/compression.js +51 -2
  4. package/dist/agent/compression.js.map +1 -1
  5. package/dist/agent/file-ingest.js +2 -2
  6. package/dist/agent/file-ingest.js.map +1 -1
  7. package/dist/agent/loop-state.d.ts +3 -2
  8. package/dist/agent/loop-state.d.ts.map +1 -1
  9. package/dist/agent/loop-state.js.map +1 -1
  10. package/dist/agent/loop.d.ts.map +1 -1
  11. package/dist/agent/loop.js +134 -5
  12. package/dist/agent/loop.js.map +1 -1
  13. package/dist/agent/memory-extractor.js +5 -5
  14. package/dist/agent/memory-extractor.js.map +1 -1
  15. package/dist/agent/plan-storage.js +1 -1
  16. package/dist/agent/plan-storage.js.map +1 -1
  17. package/dist/agent/sub-agents/index.d.ts +2 -1
  18. package/dist/agent/sub-agents/index.d.ts.map +1 -1
  19. package/dist/agent/sub-agents/index.js +1 -1
  20. package/dist/agent/sub-agents/index.js.map +1 -1
  21. package/dist/agent/sub-agents/loader.d.ts +13 -3
  22. package/dist/agent/sub-agents/loader.d.ts.map +1 -1
  23. package/dist/agent/sub-agents/loader.js +36 -9
  24. package/dist/agent/sub-agents/loader.js.map +1 -1
  25. package/dist/agent/sub-agents/registry.d.ts +18 -1
  26. package/dist/agent/sub-agents/registry.d.ts.map +1 -1
  27. package/dist/agent/sub-agents/registry.js +38 -5
  28. package/dist/agent/sub-agents/registry.js.map +1 -1
  29. package/dist/agent/sub-agents/runner.d.ts.map +1 -1
  30. package/dist/agent/sub-agents/runner.js +45 -1
  31. package/dist/agent/sub-agents/runner.js.map +1 -1
  32. package/dist/agent/sub-agents/types.d.ts +4 -1
  33. package/dist/agent/sub-agents/types.d.ts.map +1 -1
  34. package/dist/agent/system-prompt.d.ts +21 -0
  35. package/dist/agent/system-prompt.d.ts.map +1 -1
  36. package/dist/agent/system-prompt.js +68 -2
  37. package/dist/agent/system-prompt.js.map +1 -1
  38. package/dist/agent/tool-execution.d.ts.map +1 -1
  39. package/dist/agent/tool-execution.js +220 -1
  40. package/dist/agent/tool-execution.js.map +1 -1
  41. package/dist/commands/index.d.ts +6 -0
  42. package/dist/commands/index.d.ts.map +1 -0
  43. package/dist/commands/index.js +3 -0
  44. package/dist/commands/index.js.map +1 -0
  45. package/dist/commands/loader.d.ts +13 -0
  46. package/dist/commands/loader.d.ts.map +1 -0
  47. package/dist/commands/loader.js +93 -0
  48. package/dist/commands/loader.js.map +1 -0
  49. package/dist/commands/registry.d.ts +44 -0
  50. package/dist/commands/registry.d.ts.map +1 -0
  51. package/dist/commands/registry.js +102 -0
  52. package/dist/commands/registry.js.map +1 -0
  53. package/dist/commands/types.d.ts +23 -0
  54. package/dist/commands/types.d.ts.map +1 -0
  55. package/dist/commands/types.js +26 -0
  56. package/dist/commands/types.js.map +1 -0
  57. package/dist/config/index.d.ts +9 -0
  58. package/dist/config/index.d.ts.map +1 -1
  59. package/dist/config/index.js +12 -10
  60. package/dist/config/index.js.map +1 -1
  61. package/dist/hooks/bus.d.ts +54 -0
  62. package/dist/hooks/bus.d.ts.map +1 -0
  63. package/dist/hooks/bus.js +165 -0
  64. package/dist/hooks/bus.js.map +1 -0
  65. package/dist/hooks/config-schema.d.ts +854 -0
  66. package/dist/hooks/config-schema.d.ts.map +1 -0
  67. package/dist/hooks/config-schema.js +79 -0
  68. package/dist/hooks/config-schema.js.map +1 -0
  69. package/dist/hooks/executor.d.ts +16 -0
  70. package/dist/hooks/executor.d.ts.map +1 -0
  71. package/dist/hooks/executor.js +183 -0
  72. package/dist/hooks/executor.js.map +1 -0
  73. package/dist/hooks/index.d.ts +10 -0
  74. package/dist/hooks/index.d.ts.map +1 -0
  75. package/dist/hooks/index.js +6 -0
  76. package/dist/hooks/index.js.map +1 -0
  77. package/dist/hooks/registry.d.ts +23 -0
  78. package/dist/hooks/registry.d.ts.map +1 -0
  79. package/dist/hooks/registry.js +49 -0
  80. package/dist/hooks/registry.js.map +1 -0
  81. package/dist/hooks/types.d.ts +165 -0
  82. package/dist/hooks/types.d.ts.map +1 -0
  83. package/dist/hooks/types.js +25 -0
  84. package/dist/hooks/types.js.map +1 -0
  85. package/dist/hooks/variables.d.ts +22 -0
  86. package/dist/hooks/variables.d.ts.map +1 -0
  87. package/dist/hooks/variables.js +80 -0
  88. package/dist/hooks/variables.js.map +1 -0
  89. package/dist/index.d.ts +56 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +37 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/knowledge/auto-memory.d.ts +1 -1
  94. package/dist/knowledge/auto-memory.d.ts.map +1 -1
  95. package/dist/knowledge/auto-memory.js +10 -10
  96. package/dist/knowledge/auto-memory.js.map +1 -1
  97. package/dist/knowledge/loader.js +12 -12
  98. package/dist/knowledge/loader.js.map +1 -1
  99. package/dist/mcp/arg-parser.d.ts +49 -0
  100. package/dist/mcp/arg-parser.d.ts.map +1 -0
  101. package/dist/mcp/arg-parser.js +357 -0
  102. package/dist/mcp/arg-parser.js.map +1 -0
  103. package/dist/mcp/client.d.ts +73 -0
  104. package/dist/mcp/client.d.ts.map +1 -0
  105. package/dist/mcp/client.js +376 -0
  106. package/dist/mcp/client.js.map +1 -0
  107. package/dist/mcp/config-schema.d.ts +64 -0
  108. package/dist/mcp/config-schema.d.ts.map +1 -0
  109. package/dist/mcp/config-schema.js +86 -0
  110. package/dist/mcp/config-schema.js.map +1 -0
  111. package/dist/mcp/config-writer.d.ts +41 -0
  112. package/dist/mcp/config-writer.d.ts.map +1 -0
  113. package/dist/mcp/config-writer.js +138 -0
  114. package/dist/mcp/config-writer.js.map +1 -0
  115. package/dist/mcp/env-safety.d.ts +12 -0
  116. package/dist/mcp/env-safety.d.ts.map +1 -0
  117. package/dist/mcp/env-safety.js +80 -0
  118. package/dist/mcp/env-safety.js.map +1 -0
  119. package/dist/mcp/expand-env.d.ts +14 -0
  120. package/dist/mcp/expand-env.d.ts.map +1 -0
  121. package/dist/mcp/expand-env.js +52 -0
  122. package/dist/mcp/expand-env.js.map +1 -0
  123. package/dist/mcp/loader.d.ts +81 -0
  124. package/dist/mcp/loader.d.ts.map +1 -0
  125. package/dist/mcp/loader.js +223 -0
  126. package/dist/mcp/loader.js.map +1 -0
  127. package/dist/mcp/name-mangling.d.ts +11 -0
  128. package/dist/mcp/name-mangling.d.ts.map +1 -0
  129. package/dist/mcp/name-mangling.js +82 -0
  130. package/dist/mcp/name-mangling.js.map +1 -0
  131. package/dist/mcp/oauth/callback-server.d.ts +25 -0
  132. package/dist/mcp/oauth/callback-server.d.ts.map +1 -0
  133. package/dist/mcp/oauth/callback-server.js +118 -0
  134. package/dist/mcp/oauth/callback-server.js.map +1 -0
  135. package/dist/mcp/oauth/provider.d.ts +80 -0
  136. package/dist/mcp/oauth/provider.d.ts.map +1 -0
  137. package/dist/mcp/oauth/provider.js +292 -0
  138. package/dist/mcp/oauth/provider.js.map +1 -0
  139. package/dist/mcp/oauth/token-storage.d.ts +42 -0
  140. package/dist/mcp/oauth/token-storage.d.ts.map +1 -0
  141. package/dist/mcp/oauth/token-storage.js +121 -0
  142. package/dist/mcp/oauth/token-storage.js.map +1 -0
  143. package/dist/mcp/permissions.d.ts +28 -0
  144. package/dist/mcp/permissions.d.ts.map +1 -0
  145. package/dist/mcp/permissions.js +105 -0
  146. package/dist/mcp/permissions.js.map +1 -0
  147. package/dist/mcp/registry.d.ts +150 -0
  148. package/dist/mcp/registry.d.ts.map +1 -0
  149. package/dist/mcp/registry.js +334 -0
  150. package/dist/mcp/registry.js.map +1 -0
  151. package/dist/mcp/resources.d.ts +7 -0
  152. package/dist/mcp/resources.d.ts.map +1 -0
  153. package/dist/mcp/resources.js +40 -0
  154. package/dist/mcp/resources.js.map +1 -0
  155. package/dist/mcp/tool-bridge.d.ts +16 -0
  156. package/dist/mcp/tool-bridge.d.ts.map +1 -0
  157. package/dist/mcp/tool-bridge.js +56 -0
  158. package/dist/mcp/tool-bridge.js.map +1 -0
  159. package/dist/mcp/trust.d.ts +31 -0
  160. package/dist/mcp/trust.d.ts.map +1 -0
  161. package/dist/mcp/trust.js +103 -0
  162. package/dist/mcp/trust.js.map +1 -0
  163. package/dist/mcp/types.d.ts +73 -0
  164. package/dist/mcp/types.d.ts.map +1 -0
  165. package/dist/mcp/types.js +13 -0
  166. package/dist/mcp/types.js.map +1 -0
  167. package/dist/permissions/session-store.d.ts +4 -1
  168. package/dist/permissions/session-store.d.ts.map +1 -1
  169. package/dist/permissions/session-store.js +6 -1
  170. package/dist/permissions/session-store.js.map +1 -1
  171. package/dist/plugins/consent.d.ts +87 -0
  172. package/dist/plugins/consent.d.ts.map +1 -0
  173. package/dist/plugins/consent.js +181 -0
  174. package/dist/plugins/consent.js.map +1 -0
  175. package/dist/plugins/enable-state.d.ts +34 -0
  176. package/dist/plugins/enable-state.d.ts.map +1 -0
  177. package/dist/plugins/enable-state.js +159 -0
  178. package/dist/plugins/enable-state.js.map +1 -0
  179. package/dist/plugins/installer.d.ts +64 -0
  180. package/dist/plugins/installer.d.ts.map +1 -0
  181. package/dist/plugins/installer.js +416 -0
  182. package/dist/plugins/installer.js.map +1 -0
  183. package/dist/plugins/integration.d.ts +91 -0
  184. package/dist/plugins/integration.d.ts.map +1 -0
  185. package/dist/plugins/integration.js +233 -0
  186. package/dist/plugins/integration.js.map +1 -0
  187. package/dist/plugins/loader.d.ts +69 -0
  188. package/dist/plugins/loader.d.ts.map +1 -0
  189. package/dist/plugins/loader.js +243 -0
  190. package/dist/plugins/loader.js.map +1 -0
  191. package/dist/plugins/manifest.d.ts +23 -0
  192. package/dist/plugins/manifest.d.ts.map +1 -0
  193. package/dist/plugins/manifest.js +143 -0
  194. package/dist/plugins/manifest.js.map +1 -0
  195. package/dist/plugins/marketplace.d.ts +100 -0
  196. package/dist/plugins/marketplace.d.ts.map +1 -0
  197. package/dist/plugins/marketplace.js +529 -0
  198. package/dist/plugins/marketplace.js.map +1 -0
  199. package/dist/plugins/paths.d.ts +44 -0
  200. package/dist/plugins/paths.d.ts.map +1 -0
  201. package/dist/plugins/paths.js +89 -0
  202. package/dist/plugins/paths.js.map +1 -0
  203. package/dist/plugins/refresh.d.ts +61 -0
  204. package/dist/plugins/refresh.d.ts.map +1 -0
  205. package/dist/plugins/refresh.js +98 -0
  206. package/dist/plugins/refresh.js.map +1 -0
  207. package/dist/plugins/registry.d.ts +40 -0
  208. package/dist/plugins/registry.d.ts.map +1 -0
  209. package/dist/plugins/registry.js +80 -0
  210. package/dist/plugins/registry.js.map +1 -0
  211. package/dist/plugins/types.d.ts +225 -0
  212. package/dist/plugins/types.d.ts.map +1 -0
  213. package/dist/plugins/types.js +16 -0
  214. package/dist/plugins/types.js.map +1 -0
  215. package/dist/plugins/user-config.d.ts +22 -0
  216. package/dist/plugins/user-config.d.ts.map +1 -0
  217. package/dist/plugins/user-config.js +96 -0
  218. package/dist/plugins/user-config.js.map +1 -0
  219. package/dist/skills/loader.d.ts +19 -0
  220. package/dist/skills/loader.d.ts.map +1 -0
  221. package/dist/skills/loader.js +197 -0
  222. package/dist/skills/loader.js.map +1 -0
  223. package/dist/skills/registry.d.ts +74 -0
  224. package/dist/skills/registry.d.ts.map +1 -0
  225. package/dist/skills/registry.js +136 -0
  226. package/dist/skills/registry.js.map +1 -0
  227. package/dist/skills/settings.d.ts +13 -0
  228. package/dist/skills/settings.d.ts.map +1 -0
  229. package/dist/skills/settings.js +100 -0
  230. package/dist/skills/settings.js.map +1 -0
  231. package/dist/tools/activate-skill.d.ts +5 -0
  232. package/dist/tools/activate-skill.d.ts.map +1 -0
  233. package/dist/tools/activate-skill.js +33 -0
  234. package/dist/tools/activate-skill.js.map +1 -0
  235. package/dist/tools/index.d.ts +1 -1
  236. package/dist/tools/todo-write.d.ts +1 -1
  237. package/dist/tools/web-fetch.d.ts.map +1 -1
  238. package/dist/tools/web-fetch.js +2 -1
  239. package/dist/tools/web-fetch.js.map +1 -1
  240. package/dist/types/index.d.ts +46 -1
  241. package/dist/types/index.d.ts.map +1 -1
  242. package/dist/types/index.js.map +1 -1
  243. package/dist/utils.d.ts +23 -2
  244. package/dist/utils.d.ts.map +1 -1
  245. package/dist/utils.js +76 -20
  246. package/dist/utils.js.map +1 -1
  247. package/dist/version.d.ts +2 -0
  248. package/dist/version.d.ts.map +1 -0
  249. package/dist/version.js +47 -0
  250. package/dist/version.js.map +1 -0
  251. package/package.json +2 -1
@@ -0,0 +1,31 @@
1
+ export declare function isProjectTrusted(projectPath: string): Promise<boolean>;
2
+ export declare function trustProject(projectPath: string): Promise<void>;
3
+ export type TrustChoice = 'trust' | 'skip' | 'exit';
4
+ /** Ask the user whether to trust the project's MCP config.
5
+ *
6
+ * Caller passes a generic askUser callback (the same one the agent loop
7
+ * uses for askUser tool calls) so trust prompts render in the same dialog
8
+ * style as the rest of the UI. We show the actual command strings so the
9
+ * user can audit what would run.
10
+ *
11
+ * Returns:
12
+ * 'trust' — user accepted; caller should persist via trustProject(...)
13
+ * 'skip' — load only user-level mcpServers
14
+ * 'exit' — caller should terminate the CLI */
15
+ export declare function promptForTrust(projectPath: string, serverSummaries: Array<{
16
+ name: string;
17
+ preview: string;
18
+ }>, askUser: (question: string, options: Array<{
19
+ label: string;
20
+ description: string;
21
+ }>) => Promise<string>): Promise<TrustChoice>;
22
+ /** Build the one-line preview shown for each server in the trust dialog.
23
+ * Stdio servers expose their full command + args; HTTP servers show the
24
+ * URL. We intentionally don't truncate — the user needs to see the whole
25
+ * thing to make an informed call. */
26
+ export declare function buildServerPreview(config: {
27
+ command?: string;
28
+ args?: string[];
29
+ url?: string;
30
+ }): string;
31
+ //# sourceMappingURL=trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/mcp/trust.ts"],"names":[],"mappings":"AA8DA,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI5E;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEnD;;;;;;;;;;kDAUkD;AAClD,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GACrG,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED;;;sCAGsC;AACtC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAOtG"}
@@ -0,0 +1,103 @@
1
+ // @x-code-cli/core — MCP project-level trust gate
2
+ //
3
+ // A `.x-code/config.json` checked into a git repo can declare MCP servers
4
+ // with arbitrary `command` strings — i.e. cloning a hostile repo and
5
+ // launching the CLI would silently spawn whatever that command says.
6
+ // Before honouring any project-level mcpServers block, we therefore
7
+ // require an explicit consent step keyed to the absolute project path.
8
+ //
9
+ // Persistence file: ~/.x-code/trusted-projects.json (mode 0600).
10
+ // Format: { trusted: [{ path: <absolute>, trustedAt: <ISO> }, ...] }
11
+ //
12
+ // User config (~/.x-code/config.json) is NOT subject to this gate —
13
+ // the user wrote it themselves; trust is implicit.
14
+ import fs from 'node:fs/promises';
15
+ import path from 'node:path';
16
+ import { userXcodeDir } from '../utils.js';
17
+ function trustedFile() {
18
+ return path.join(userXcodeDir(), 'trusted-projects.json');
19
+ }
20
+ /** Normalise a path for stable comparison across platforms.
21
+ * Absolute + resolved + lowercased on Windows (case-insensitive FS),
22
+ * preserved case on macOS/Linux. */
23
+ function normalize(p) {
24
+ const resolved = path.resolve(p);
25
+ return process.platform === 'win32' ? resolved.toLowerCase() : resolved;
26
+ }
27
+ async function readStore() {
28
+ try {
29
+ const raw = await fs.readFile(trustedFile(), 'utf-8');
30
+ const parsed = JSON.parse(raw);
31
+ if (parsed && typeof parsed === 'object' && Array.isArray(parsed.trusted)) {
32
+ return parsed;
33
+ }
34
+ }
35
+ catch {
36
+ // missing file or malformed — start fresh
37
+ }
38
+ return { trusted: [] };
39
+ }
40
+ async function writeStore(store) {
41
+ await fs.mkdir(userXcodeDir(), { recursive: true });
42
+ // Atomic write: tmp + rename. Avoids a half-written file if the process
43
+ // is killed mid-write (the trust file is small but the principle holds —
44
+ // we never want a corrupted JSON to lock the user out of MCP).
45
+ const tmp = trustedFile() + '.tmp';
46
+ await fs.writeFile(tmp, JSON.stringify(store, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
47
+ await fs.rename(tmp, trustedFile());
48
+ }
49
+ export async function isProjectTrusted(projectPath) {
50
+ const normalized = normalize(projectPath);
51
+ const store = await readStore();
52
+ return store.trusted.some((e) => normalize(e.path) === normalized);
53
+ }
54
+ export async function trustProject(projectPath) {
55
+ const normalized = normalize(projectPath);
56
+ const store = await readStore();
57
+ if (store.trusted.some((e) => normalize(e.path) === normalized))
58
+ return;
59
+ store.trusted.push({ path: path.resolve(projectPath), trustedAt: new Date().toISOString() });
60
+ await writeStore(store);
61
+ }
62
+ /** Ask the user whether to trust the project's MCP config.
63
+ *
64
+ * Caller passes a generic askUser callback (the same one the agent loop
65
+ * uses for askUser tool calls) so trust prompts render in the same dialog
66
+ * style as the rest of the UI. We show the actual command strings so the
67
+ * user can audit what would run.
68
+ *
69
+ * Returns:
70
+ * 'trust' — user accepted; caller should persist via trustProject(...)
71
+ * 'skip' — load only user-level mcpServers
72
+ * 'exit' — caller should terminate the CLI */
73
+ export async function promptForTrust(projectPath, serverSummaries, askUser) {
74
+ const lines = serverSummaries.map((s) => ` • ${s.name}: ${s.preview}`).join('\n');
75
+ const question = `This project wants to load ${serverSummaries.length} MCP server(s):\n` +
76
+ lines +
77
+ `\n\nThese commands will run on your machine. Trust only if you trust this project.`;
78
+ const answer = await askUser(question, [
79
+ { label: 'Trust this project', description: 'Remember this choice. The project MCP servers will load.' },
80
+ { label: 'Skip project MCP', description: 'Use only user-level mcpServers for this session. No write to disk.' },
81
+ { label: 'Exit X-Code', description: 'Close the CLI without loading any MCP servers.' },
82
+ ]);
83
+ const lower = answer.toLowerCase();
84
+ if (lower.startsWith('trust'))
85
+ return 'trust';
86
+ if (lower.startsWith('exit'))
87
+ return 'exit';
88
+ return 'skip';
89
+ }
90
+ /** Build the one-line preview shown for each server in the trust dialog.
91
+ * Stdio servers expose their full command + args; HTTP servers show the
92
+ * URL. We intentionally don't truncate — the user needs to see the whole
93
+ * thing to make an informed call. */
94
+ export function buildServerPreview(config) {
95
+ if (config.url)
96
+ return config.url;
97
+ if (config.command) {
98
+ const parts = [config.command, ...(config.args ?? [])];
99
+ return parts.join(' ');
100
+ }
101
+ return '(invalid config)';
102
+ }
103
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/mcp/trust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /** stdio-based MCP server (local subprocess). */
2
+ export interface McpStdioServerConfig {
3
+ command: string;
4
+ args?: string[];
5
+ env?: Record<string, string>;
6
+ cwd?: string;
7
+ /** First-connect timeout in ms. Default 30_000. */
8
+ timeout?: number;
9
+ /** Default true. Setting to false skips the server entirely. */
10
+ enabled?: boolean;
11
+ }
12
+ /** Streamable HTTP MCP server (remote). */
13
+ export interface McpHttpServerConfig {
14
+ url: string;
15
+ /** Static headers attached to every request (e.g. `X-Custom: foo`).
16
+ * OAuth `Authorization: Bearer ...` is added automatically — do NOT put
17
+ * the access token here, store it via the OAuth flow instead. */
18
+ headers?: Record<string, string>;
19
+ timeout?: number;
20
+ enabled?: boolean;
21
+ }
22
+ export type McpServerConfig = McpStdioServerConfig | McpHttpServerConfig;
23
+ /** Discriminator: tells stdio vs http servers apart at runtime. */
24
+ export declare function isStdioConfig(c: McpServerConfig): c is McpStdioServerConfig;
25
+ export declare function isHttpConfig(c: McpServerConfig): c is McpHttpServerConfig;
26
+ /** Per-server runtime status. UI reads this via /mcp list. */
27
+ export type McpServerStatus = {
28
+ kind: 'disabled';
29
+ } | {
30
+ kind: 'connecting';
31
+ } | {
32
+ kind: 'connected';
33
+ toolCount: number;
34
+ resourceCount: number;
35
+ } | {
36
+ kind: 'needs_auth';
37
+ authUrl?: string;
38
+ } | {
39
+ kind: 'failed';
40
+ error: string;
41
+ };
42
+ /** One MCP tool, after name-mangling.
43
+ *
44
+ * callableName is the model-facing name (<server>__<tool>);
45
+ * rawName is what we pass back to client.callTool — MCP servers don't
46
+ * know about our prefix scheme. */
47
+ export interface McpToolEntry {
48
+ callableName: string;
49
+ rawName: string;
50
+ serverName: string;
51
+ description: string;
52
+ /** JSON Schema as received from the server. We pass it directly to the
53
+ * AI SDK via `jsonSchema(...)` — no zod conversion. */
54
+ inputSchema: Record<string, unknown>;
55
+ }
56
+ /** One MCP resource (data the server lets us pull). */
57
+ export interface McpResourceEntry {
58
+ uri: string;
59
+ name: string;
60
+ description?: string;
61
+ mimeType?: string;
62
+ serverName: string;
63
+ }
64
+ /** Result of calling an MCP tool — flattened from MCP's content-blocks
65
+ * into something we can shove into a tool_result message. The raw blocks
66
+ * are kept on the side in case a future UI wants images/audio. */
67
+ export interface McpCallResult {
68
+ /** Text representation suitable for tool_result. */
69
+ text: string;
70
+ /** True iff the server marked the call as an error (MCP `isError` flag). */
71
+ isError: boolean;
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAMA,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX;;sEAEkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,mBAAmB,CAAA;AAExE,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,IAAI,oBAAoB,CAE3E;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,IAAI,mBAAmB,CAEzE;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC;;;;oCAIoC;AACpC,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB;4DACwD;IACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;mEAEmE;AACnE,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAA;CACjB"}
@@ -0,0 +1,13 @@
1
+ // @x-code-cli/core — MCP public types
2
+ //
3
+ // Shared shapes used across the mcp/ subsystem. Kept dependency-free so the
4
+ // loader/registry/UI layers can import without circular hops back into the
5
+ // agent loop or CLI.
6
+ /** Discriminator: tells stdio vs http servers apart at runtime. */
7
+ export function isStdioConfig(c) {
8
+ return 'command' in c;
9
+ }
10
+ export function isHttpConfig(c) {
11
+ return 'url' in c;
12
+ }
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,qBAAqB;AA2BrB,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,CAAkB;IAC9C,OAAO,SAAS,IAAI,CAAC,CAAA;AACvB,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,KAAK,IAAI,CAAC,CAAA;AACnB,CAAC"}
@@ -40,8 +40,11 @@ export declare function extractCommandPrefix(command: string): string | null;
40
40
  * the prefix regex; without this fallback the user gets only Yes/No
41
41
  * forever for repeated identical commands).
42
42
  * Write tools (writeFile / edit): `all edits this session` (session-only)
43
+ * MCP tools (isMcp=true): `this MCP tool` (persisted to disk via
44
+ * McpPermissionStore — the label matches that posture, unlike write
45
+ * tools which fall back to session-only).
43
46
  */
44
- export declare function suggestRuleLabel(toolName: string, input: Record<string, unknown>): string | null;
47
+ export declare function suggestRuleLabel(toolName: string, input: Record<string, unknown>, isMcp?: boolean): string | null;
45
48
  /**
46
49
  * Build the AllowRule for a "don't ask again" approval.
47
50
  *
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/permissions/session-store.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;CAClC;AA4ID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+CnE;AAyED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAShG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAgB9C;AA8ED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE3F;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAoBpD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CA+B9D"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/permissions/session-store.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;CAClC;AA4ID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+CnE;AAyED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,UAAQ,GAAG,MAAM,GAAG,IAAI,CAU/G;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAgB9C;AA8ED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE3F;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAoBpD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CA+B9D"}
@@ -296,10 +296,15 @@ function extractPowershellPrefix(cmd) {
296
296
  * the prefix regex; without this fallback the user gets only Yes/No
297
297
  * forever for repeated identical commands).
298
298
  * Write tools (writeFile / edit): `all edits this session` (session-only)
299
+ * MCP tools (isMcp=true): `this MCP tool` (persisted to disk via
300
+ * McpPermissionStore — the label matches that posture, unlike write
301
+ * tools which fall back to session-only).
299
302
  */
300
- export function suggestRuleLabel(toolName, input) {
303
+ export function suggestRuleLabel(toolName, input, isMcp = false) {
301
304
  if (toolName === 'enterPlanMode')
302
305
  return null;
306
+ if (isMcp)
307
+ return 'this MCP tool';
303
308
  if (toolName === 'shell') {
304
309
  const cmd = input.command ?? '';
305
310
  const prefix = extractCommandPrefix(cmd);
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/permissions/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/permissions/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { HookEventName } from '../hooks/types.js';
2
+ import type { PluginManifest, PluginSource } from './types.js';
3
+ export interface ConsentPreview {
4
+ pluginId: string;
5
+ version: string;
6
+ description?: string;
7
+ source: PluginSource;
8
+ marketplace: string;
9
+ /** True when the install came from a marketplace flagged `verified`. */
10
+ verified: boolean;
11
+ /** True when the marketplace's name is one of `RESERVED_MARKETPLACE_NAMES`. */
12
+ fromReservedMarketplace: boolean;
13
+ /** Hook event names the plugin registers. Empty means no hooks. */
14
+ hookEvents: HookEventName[];
15
+ /** MCP server names contributed inline (path-form not previewed —
16
+ * requires reading another file before consent). */
17
+ inlineMcpServerNames: string[];
18
+ hasSkillsDir: boolean;
19
+ hasAgentsDir: boolean;
20
+ hasCommandsDir: boolean;
21
+ /** True when manifest declares `mcpServers` as a file path (not
22
+ * inline) — we don't have the names yet at consent time, but we can
23
+ * warn the user that the plugin DOES bring MCP servers. */
24
+ hasPathMcpServers: boolean;
25
+ /** Same as above for hooks declared via path rather than inline. */
26
+ hasPathHooks: boolean;
27
+ author?: string;
28
+ license?: string;
29
+ homepage?: string;
30
+ }
31
+ /** Filesystem-side info about a plugin's root directory — the things
32
+ * a manifest-only inspection can't see. Populated by [[probePluginRoot]]
33
+ * and passed to [[buildConsentPreview]] so the install-time "Will
34
+ * contribute" line reflects auto-discovered contributions (e.g.
35
+ * Claude Code's convention of dropping `.mcp.json` next to plugin.json
36
+ * instead of declaring `mcpServers` in the manifest). */
37
+ export interface RootProbe {
38
+ hasSkillsDir: boolean;
39
+ hasAgentsDir: boolean;
40
+ hasCommandsDir: boolean;
41
+ /** Server names parsed from a root-level `.mcp.json` / `mcp.json`
42
+ * (both flat and wrapped shapes accepted; see
43
+ * [[extractMcpServersBlock]]). Empty when neither file is present
44
+ * or the file failed to parse. */
45
+ rootMcpServerNames: string[];
46
+ /** True when a root-level mcp file exists, even if no names could
47
+ * be parsed from it. Lets the consent UI still warn "this plugin
48
+ * contributes MCP servers" when names are momentarily unknown. */
49
+ hasRootMcpFile: boolean;
50
+ /** Hook event names parsed from `hooks/hooks.json` at root, if present. */
51
+ rootHookEvents: HookEventName[];
52
+ /** True when `hooks/hooks.json` exists, regardless of parse result. */
53
+ hasRootHooksFile: boolean;
54
+ }
55
+ export interface BuildPreviewInput {
56
+ pluginId: string;
57
+ manifest: PluginManifest;
58
+ source: PluginSource;
59
+ marketplace: string;
60
+ verified?: boolean;
61
+ fromReservedMarketplace?: boolean;
62
+ /** Optional probe of the plugin's root directory. Without it,
63
+ * consent shows only what the manifest declares — which misses
64
+ * Claude Code-convention plugins that ship contributions as
65
+ * conventional files / dirs alongside `plugin.json`. */
66
+ rootProbe?: RootProbe;
67
+ }
68
+ /** Stat the plugin root for the conventional contribution files / dirs
69
+ * the loader's `resolveContributions` will pick up at runtime. The
70
+ * consent UI uses this so "Will contribute" doesn't lie when a plugin
71
+ * drops `skills/`, `.mcp.json`, etc. at root without naming them in
72
+ * the manifest. Safe to call on any directory — every probe is a
73
+ * best-effort stat / read and missing or unreadable files just count
74
+ * as "absent". */
75
+ export declare function probePluginRoot(rootDir: string): Promise<RootProbe>;
76
+ /** Build a `ConsentPreview` from a parsed manifest. The hook + mcp
77
+ * fields are inspected only for the inline shape; path-form
78
+ * contributions are surfaced as `has*` booleans so the consent UI can
79
+ * warn "this plugin contributes MCP servers" even when their names
80
+ * aren't yet known.
81
+ *
82
+ * When `input.rootProbe` is present, conventional root-level
83
+ * contributions (an undeclared `.mcp.json`, `hooks/hooks.json`,
84
+ * `skills/`, etc.) are merged in too — the loader will pick those up
85
+ * at runtime, so the consent UI needs to know about them now. */
86
+ export declare function buildConsentPreview(input: BuildPreviewInput): ConsentPreview;
87
+ //# sourceMappingURL=consent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../src/plugins/consent.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAA;IACjB,+EAA+E;IAC/E,uBAAuB,EAAE,OAAO,CAAA;IAChC,mEAAmE;IACnE,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B;yDACqD;IACrD,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;gEAE4D;IAC5D,iBAAiB,EAAE,OAAO,CAAA;IAC1B,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;0DAK0D;AAC1D,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;;uCAGmC;IACnC,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B;;uEAEmE;IACnE,cAAc,EAAE,OAAO,CAAA;IACvB,2EAA2E;IAC3E,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,uEAAuE;IACvE,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;6DAGyD;IACzD,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;mBAMmB;AACnB,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAmDzE;AAoBD;;;;;;;;;kEASkE;AAClE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CA4D5E"}
@@ -0,0 +1,181 @@
1
+ // @x-code-cli/core — Install-time consent preview
2
+ //
3
+ // Before a plugin's contents are committed to the cache, the installer
4
+ // builds a `ConsentPreview` summarising what the plugin will contribute
5
+ // (hooks, MCP servers, scopes etc.) and hands it to the caller-supplied
6
+ // consent callback. If the callback returns false, the install aborts
7
+ // and the temp dir is cleaned up.
8
+ //
9
+ // The preview is built from the already-parsed manifest, so all the
10
+ // validation work has already happened — by the time we ask the user
11
+ // "do you accept?" we know the plugin parses cleanly and what it will
12
+ // touch on their system.
13
+ //
14
+ // What it intentionally does NOT include:
15
+ //
16
+ // - Skill / agent / command counts (they're hidden inside subdirs;
17
+ // scanning them just to build a preview would slow every install,
18
+ // and the preview is meant to be a glance, not an audit).
19
+ // - LICENSE file contents — surfaced as a name only; readers should
20
+ // follow the homepage / source URL to read the actual terms.
21
+ //
22
+ // What it DOES include — the things with real security blast radius:
23
+ // hooks (arbitrary shell), MCP servers (arbitrary subprocesses), and
24
+ // source (so the user knows whether it came from a trusted marketplace
25
+ // or a random GitHub repo).
26
+ import fs from 'node:fs/promises';
27
+ import path from 'node:path';
28
+ import { parseHookConfig } from '../hooks/config-schema.js';
29
+ import { parseServersBlock } from '../mcp/config-schema.js';
30
+ import { extractMcpServersBlock } from './integration.js';
31
+ /** Stat the plugin root for the conventional contribution files / dirs
32
+ * the loader's `resolveContributions` will pick up at runtime. The
33
+ * consent UI uses this so "Will contribute" doesn't lie when a plugin
34
+ * drops `skills/`, `.mcp.json`, etc. at root without naming them in
35
+ * the manifest. Safe to call on any directory — every probe is a
36
+ * best-effort stat / read and missing or unreadable files just count
37
+ * as "absent". */
38
+ export async function probePluginRoot(rootDir) {
39
+ const [hasSkillsDir, hasAgentsDir, hasCommandsDir] = await Promise.all([
40
+ isDir(path.join(rootDir, 'skills')),
41
+ isDir(path.join(rootDir, 'agents')),
42
+ isDir(path.join(rootDir, 'commands')),
43
+ ]);
44
+ let rootMcpServerNames = [];
45
+ let hasRootMcpFile = false;
46
+ for (const conv of ['.mcp.json', 'mcp.json']) {
47
+ const p = path.join(rootDir, conv);
48
+ if (!(await isFile(p)))
49
+ continue;
50
+ hasRootMcpFile = true;
51
+ try {
52
+ const raw = await fs.readFile(p, 'utf-8');
53
+ const parsed = JSON.parse(raw);
54
+ const block = extractMcpServersBlock(parsed);
55
+ const { servers } = parseServersBlock(block);
56
+ rootMcpServerNames = Object.keys(servers);
57
+ }
58
+ catch {
59
+ // parse errors are deliberately swallowed — they'll surface
60
+ // with a precise message at load time. The consent preview
61
+ // just needs to know the file exists.
62
+ }
63
+ break;
64
+ }
65
+ let rootHookEvents = [];
66
+ let hasRootHooksFile = false;
67
+ const hooksPath = path.join(rootDir, 'hooks', 'hooks.json');
68
+ if (await isFile(hooksPath)) {
69
+ hasRootHooksFile = true;
70
+ try {
71
+ const raw = await fs.readFile(hooksPath, 'utf-8');
72
+ const parsed = JSON.parse(raw);
73
+ const cfg = parseHookConfig(parsed, rootDir);
74
+ rootHookEvents = Object.keys(cfg);
75
+ }
76
+ catch {
77
+ // Same reasoning as the mcp probe — load-time errors win.
78
+ }
79
+ }
80
+ return {
81
+ hasSkillsDir,
82
+ hasAgentsDir,
83
+ hasCommandsDir,
84
+ rootMcpServerNames,
85
+ hasRootMcpFile,
86
+ rootHookEvents,
87
+ hasRootHooksFile,
88
+ };
89
+ }
90
+ async function isDir(p) {
91
+ try {
92
+ const s = await fs.stat(p);
93
+ return s.isDirectory();
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ async function isFile(p) {
100
+ try {
101
+ const s = await fs.stat(p);
102
+ return s.isFile();
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ }
108
+ /** Build a `ConsentPreview` from a parsed manifest. The hook + mcp
109
+ * fields are inspected only for the inline shape; path-form
110
+ * contributions are surfaced as `has*` booleans so the consent UI can
111
+ * warn "this plugin contributes MCP servers" even when their names
112
+ * aren't yet known.
113
+ *
114
+ * When `input.rootProbe` is present, conventional root-level
115
+ * contributions (an undeclared `.mcp.json`, `hooks/hooks.json`,
116
+ * `skills/`, etc.) are merged in too — the loader will pick those up
117
+ * at runtime, so the consent UI needs to know about them now. */
118
+ export function buildConsentPreview(input) {
119
+ const m = input.manifest;
120
+ const probe = input.rootProbe;
121
+ let hookEvents = [];
122
+ let hasPathHooks = false;
123
+ if (m.hooks !== undefined) {
124
+ if (typeof m.hooks === 'string') {
125
+ hasPathHooks = true;
126
+ }
127
+ else {
128
+ try {
129
+ const cfg = parseHookConfig(m.hooks, input.pluginId);
130
+ hookEvents = Object.keys(cfg);
131
+ }
132
+ catch {
133
+ // Don't fail consent on hook parse errors — the install path
134
+ // will surface them properly. Just leave hookEvents empty so
135
+ // the preview doesn't lie about what's registered.
136
+ }
137
+ }
138
+ }
139
+ else if (probe?.hasRootHooksFile) {
140
+ hookEvents = probe.rootHookEvents;
141
+ hasPathHooks = true;
142
+ }
143
+ let inlineMcpServerNames = [];
144
+ let hasPathMcpServers = false;
145
+ if (m.mcpServers !== undefined) {
146
+ if (typeof m.mcpServers === 'string') {
147
+ hasPathMcpServers = true;
148
+ }
149
+ else {
150
+ const { servers } = parseServersBlock(m.mcpServers);
151
+ inlineMcpServerNames = Object.keys(servers);
152
+ }
153
+ }
154
+ else if (probe?.hasRootMcpFile) {
155
+ // Convention-discovered `.mcp.json` at the plugin root — same blast
156
+ // radius as a manifest-declared path entry. Surface names when we
157
+ // were able to parse them; otherwise just flag the file's presence.
158
+ inlineMcpServerNames = probe.rootMcpServerNames;
159
+ hasPathMcpServers = true;
160
+ }
161
+ return {
162
+ pluginId: input.pluginId,
163
+ version: m.version,
164
+ description: m.description,
165
+ source: input.source,
166
+ marketplace: input.marketplace,
167
+ verified: input.verified ?? false,
168
+ fromReservedMarketplace: input.fromReservedMarketplace ?? false,
169
+ hookEvents,
170
+ inlineMcpServerNames,
171
+ hasSkillsDir: !!m.skills || !!probe?.hasSkillsDir,
172
+ hasAgentsDir: !!m.agents || !!probe?.hasAgentsDir,
173
+ hasCommandsDir: !!m.commands || !!probe?.hasCommandsDir,
174
+ hasPathMcpServers,
175
+ hasPathHooks,
176
+ author: m.author?.name,
177
+ license: m.license,
178
+ homepage: m.homepage,
179
+ };
180
+ }
181
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/plugins/consent.ts"],"names":[],"mappings":"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"}