hive-intelligence 1.1.2 → 1.1.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 (148) hide show
  1. package/LICENSE +12 -10
  2. package/README.md +325 -351
  3. package/agent-skills/.claude-plugin/plugin.json +111 -0
  4. package/agent-skills/.mcp.json +11 -0
  5. package/agent-skills/AGENTS.md +37 -0
  6. package/agent-skills/LICENSE +21 -0
  7. package/agent-skills/README.md +145 -0
  8. package/agent-skills/SKILL.md +80 -0
  9. package/agent-skills/evals/README.md +20 -0
  10. package/agent-skills/evals/trigger-queries.json +464 -0
  11. package/agent-skills/package.json +49 -0
  12. package/agent-skills/packs/hive-build/SKILL.md +328 -0
  13. package/agent-skills/packs/hive-build/evals/evals.json +28 -0
  14. package/agent-skills/packs/hive-build-onboarding/SKILL.md +137 -0
  15. package/agent-skills/packs/hive-build-onboarding/evals/evals.json +27 -0
  16. package/agent-skills/packs/hive-cli/SKILL.md +141 -0
  17. package/agent-skills/packs/hive-cli/evals/evals.json +27 -0
  18. package/agent-skills/packs/hive-defi-research/SKILL.md +42 -0
  19. package/agent-skills/packs/hive-defi-research/evals/evals.json +27 -0
  20. package/agent-skills/packs/hive-defi-research/references/workflow.md +41 -0
  21. package/agent-skills/packs/hive-dex-pool-analysis/SKILL.md +41 -0
  22. package/agent-skills/packs/hive-dex-pool-analysis/evals/evals.json +27 -0
  23. package/agent-skills/packs/hive-dex-pool-analysis/references/workflow.md +42 -0
  24. package/agent-skills/packs/hive-market-research/SKILL.md +45 -0
  25. package/agent-skills/packs/hive-market-research/evals/evals.json +27 -0
  26. package/agent-skills/packs/hive-market-research/references/workflow.md +47 -0
  27. package/agent-skills/packs/hive-mcp/SKILL.md +147 -0
  28. package/agent-skills/packs/hive-mcp/evals/evals.json +38 -0
  29. package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +83 -0
  30. package/agent-skills/packs/hive-mcp/references/clients.md +141 -0
  31. package/agent-skills/packs/hive-network-infrastructure/SKILL.md +44 -0
  32. package/agent-skills/packs/hive-network-infrastructure/evals/evals.json +27 -0
  33. package/agent-skills/packs/hive-network-infrastructure/references/workflow.md +41 -0
  34. package/agent-skills/packs/hive-nft-research/SKILL.md +41 -0
  35. package/agent-skills/packs/hive-nft-research/evals/evals.json +27 -0
  36. package/agent-skills/packs/hive-nft-research/references/workflow.md +42 -0
  37. package/agent-skills/packs/hive-prediction-markets/SKILL.md +44 -0
  38. package/agent-skills/packs/hive-prediction-markets/evals/evals.json +27 -0
  39. package/agent-skills/packs/hive-prediction-markets/references/workflow.md +42 -0
  40. package/agent-skills/packs/hive-query/SKILL.md +99 -0
  41. package/agent-skills/packs/hive-query/evals/evals.json +38 -0
  42. package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +54 -0
  43. package/agent-skills/packs/hive-security-risk/SKILL.md +42 -0
  44. package/agent-skills/packs/hive-security-risk/evals/evals.json +27 -0
  45. package/agent-skills/packs/hive-security-risk/references/workflow.md +46 -0
  46. package/agent-skills/packs/hive-solana-analysis/SKILL.md +42 -0
  47. package/agent-skills/packs/hive-solana-analysis/evals/evals.json +27 -0
  48. package/agent-skills/packs/hive-solana-analysis/references/workflow.md +42 -0
  49. package/agent-skills/packs/hive-stateful-monitoring/SKILL.md +75 -0
  50. package/agent-skills/packs/hive-stateful-monitoring/evals/evals.json +49 -0
  51. package/agent-skills/packs/hive-token-diligence/SKILL.md +44 -0
  52. package/agent-skills/packs/hive-token-diligence/evals/evals.json +27 -0
  53. package/agent-skills/packs/hive-token-diligence/references/workflow.md +45 -0
  54. package/agent-skills/packs/hive-tool-discovery/SKILL.md +49 -0
  55. package/agent-skills/packs/hive-tool-discovery/evals/evals.json +38 -0
  56. package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +62 -0
  57. package/agent-skills/packs/hive-wallet-investigation/SKILL.md +42 -0
  58. package/agent-skills/packs/hive-wallet-investigation/evals/evals.json +27 -0
  59. package/agent-skills/packs/hive-wallet-investigation/references/workflow.md +45 -0
  60. package/agent-skills/references/agents-routing.md +51 -0
  61. package/agent-skills/scripts/validate-agent-skills-package.mjs +216 -0
  62. package/agent-skills/skills.sh.json +41 -0
  63. package/bin/hive-mcp.js +33 -0
  64. package/build/{alias-INGXWFCG.js → alias-3OPMQF4X.js} +2 -3
  65. package/build/api-client-EPF6FD7A.js +28 -0
  66. package/build/auth-Q5Q24IRI.js +39 -0
  67. package/build/browser-auth-VPF5LZMZ.js +8 -0
  68. package/build/{cache-US4LSZPI.js → cache-T6KC5YEY.js} +2 -3
  69. package/build/{chunk-QMRVH5ZP.js → chunk-3WYWXTNN.js} +9 -2
  70. package/build/chunk-4F5CI6LX.js +340 -0
  71. package/build/chunk-5XXI25JE.js +496 -0
  72. package/build/chunk-7JWXBKEJ.js +252 -0
  73. package/build/chunk-CEWCB5YS.js +71 -0
  74. package/build/{chunk-CGXVV6WR.js → chunk-FH3YGSY5.js} +86 -105
  75. package/build/chunk-FRXMGRZQ.js +102 -0
  76. package/build/chunk-GZPDEXO4.js +126 -0
  77. package/build/chunk-IZPAMRHP.js +43 -0
  78. package/build/chunk-JTUKQWIO.js +79720 -0
  79. package/build/{chunk-CP3FXEQA.js → chunk-NP6NSOG2.js} +4 -6
  80. package/build/{chunk-XQJ6PB2L.js → chunk-POT2MBEK.js} +0 -1
  81. package/build/chunk-VBOKVQ74.js +280 -0
  82. package/build/{chunk-WKVZVQTG.js → chunk-YZ2PXBJK.js} +6 -4
  83. package/build/chunk-ZCU7XQKF.js +14 -0
  84. package/build/chunk-ZTJVOWDQ.js +85 -0
  85. package/build/chunk-ZXB53E7H.js +246 -0
  86. package/build/cli.js +138 -125
  87. package/build/{completion-J6HFY6PS.js → completion-46K674EL.js} +54 -50
  88. package/build/config-XE6Q5P4I.js +57 -0
  89. package/build/{config-dir-IEOID7Q6.js → config-dir-MAWX5AUF.js} +2 -3
  90. package/build/{doctor-7WZMCQC7.js → doctor-HGMQE6IN.js} +37 -13
  91. package/build/{errors-U6UZWVSD.js → errors-J2PH3NLJ.js} +2 -3
  92. package/build/format-5X2HIVDT.js +42 -0
  93. package/build/{init-CAVIFVSH.js → init-JMDNM7ZZ.js} +1 -2
  94. package/build/init-all-5SKNV75X.js +273 -0
  95. package/build/mcpServer-5TKKSKJM.js +21 -0
  96. package/build/monitor-worker.js +1140 -0
  97. package/build/{namespace-7JWWBWBL.js → namespace-FSX2G3NM.js} +2 -3
  98. package/build/{open-FUXYIHFO.js → open-5A6ZQMGC.js} +5 -6
  99. package/build/{output-7PGQWJY2.js → output-V3D4YZ6U.js} +2 -3
  100. package/build/serve-AGCOXXFM.js +49 -0
  101. package/build/server.js +5042 -14125
  102. package/build/setup-RMETGJWK.js +135 -0
  103. package/build/stdio.js +32 -0
  104. package/build/{telemetry-KNWMQURH.js → telemetry-WCME5XEU.js} +4 -4
  105. package/build/{tools-VRRMBCZQ.js → tools-KAB6QBZC.js} +15 -15
  106. package/build/uninstall-FLJMBBSC.js +114 -0
  107. package/build/update-check-LNZQK3XA.js +18 -0
  108. package/build/upgrade-DTUIHVPS.js +171 -0
  109. package/build/version-I6HDAF4L.js +14 -0
  110. package/build/{watch-A75SVIQ6.js → watch-YNN255QX.js} +7 -7
  111. package/package.json +124 -53
  112. package/bin/hive.js +0 -25
  113. package/build/alias-INGXWFCG.js.map +0 -1
  114. package/build/auth-77MKFFBQ.js +0 -233
  115. package/build/auth-77MKFFBQ.js.map +0 -1
  116. package/build/cache-US4LSZPI.js.map +0 -1
  117. package/build/chunk-CGXVV6WR.js.map +0 -1
  118. package/build/chunk-CP3FXEQA.js.map +0 -1
  119. package/build/chunk-DTUDM6HX.js +0 -3108
  120. package/build/chunk-DTUDM6HX.js.map +0 -1
  121. package/build/chunk-LBTLYTZS.js +0 -115
  122. package/build/chunk-LBTLYTZS.js.map +0 -1
  123. package/build/chunk-OK3LSM73.js +0 -22
  124. package/build/chunk-OK3LSM73.js.map +0 -1
  125. package/build/chunk-QMRVH5ZP.js.map +0 -1
  126. package/build/chunk-RRI526CJ.js +0 -212
  127. package/build/chunk-RRI526CJ.js.map +0 -1
  128. package/build/chunk-WKVZVQTG.js.map +0 -1
  129. package/build/chunk-XQJ6PB2L.js.map +0 -1
  130. package/build/cli.js.map +0 -1
  131. package/build/completion-J6HFY6PS.js.map +0 -1
  132. package/build/config-ANFERP7A.js +0 -99
  133. package/build/config-ANFERP7A.js.map +0 -1
  134. package/build/config-dir-IEOID7Q6.js.map +0 -1
  135. package/build/doctor-7WZMCQC7.js.map +0 -1
  136. package/build/errors-U6UZWVSD.js.map +0 -1
  137. package/build/format-CVLLK6GD.js +0 -75
  138. package/build/format-CVLLK6GD.js.map +0 -1
  139. package/build/init-CAVIFVSH.js.map +0 -1
  140. package/build/namespace-7JWWBWBL.js.map +0 -1
  141. package/build/open-FUXYIHFO.js.map +0 -1
  142. package/build/output-7PGQWJY2.js.map +0 -1
  143. package/build/server.js.map +0 -1
  144. package/build/telemetry-KNWMQURH.js.map +0 -1
  145. package/build/tools-VRRMBCZQ.js.map +0 -1
  146. package/build/version-3TZ3U4IR.js +0 -9
  147. package/build/version-3TZ3U4IR.js.map +0 -1
  148. package/build/watch-A75SVIQ6.js.map +0 -1
@@ -0,0 +1,340 @@
1
+ import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ resolveApiKey,
4
+ resolveApiUrl
5
+ } from "./chunk-POT2MBEK.js";
6
+
7
+ // src/cli/config.ts
8
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9
+ import { homedir, platform } from "os";
10
+ import { dirname, join } from "path";
11
+ var DEFAULT_URL = "https://mcp.hiveintelligence.xyz";
12
+ var SERVER_NAME = "hive";
13
+ function getServerUrl() {
14
+ return resolveApiUrl() || DEFAULT_URL;
15
+ }
16
+ function getApiKey() {
17
+ return resolveApiKey() || "YOUR_HIVE_API_KEY";
18
+ }
19
+ function authHeader(key) {
20
+ return { Authorization: `Bearer ${key}` };
21
+ }
22
+ function configClaudeDesktop() {
23
+ const url = getServerUrl();
24
+ const key = getApiKey();
25
+ const config = {
26
+ [SERVER_NAME]: {
27
+ url: `${url}/mcp`,
28
+ headers: authHeader(key)
29
+ }
30
+ };
31
+ const p = getClaudeDesktopConfigPath();
32
+ console.log(
33
+ '\nAdd this to your claude_desktop_config.json under "mcpServers":\n'
34
+ );
35
+ console.log(`Config file: ${p}
36
+ `);
37
+ console.log(JSON.stringify(config, null, 2));
38
+ if (key === "YOUR_HIVE_API_KEY") {
39
+ console.log(
40
+ "\nReplace YOUR_HIVE_API_KEY with your actual key from: hive auth login"
41
+ );
42
+ }
43
+ }
44
+ function configCursor() {
45
+ const url = getServerUrl();
46
+ const key = getApiKey();
47
+ const config = {
48
+ mcpServers: {
49
+ [SERVER_NAME]: {
50
+ url: `${url}/mcp`,
51
+ headers: authHeader(key)
52
+ }
53
+ }
54
+ };
55
+ console.log("\nAdd to .cursor/mcp.json:\n");
56
+ console.log(JSON.stringify(config, null, 2));
57
+ }
58
+ function configVscode() {
59
+ const url = getServerUrl();
60
+ const config = {
61
+ inputs: [
62
+ {
63
+ type: "promptString",
64
+ id: "hive-api-key",
65
+ description: "Hive API Key (hive_live_...)",
66
+ password: true
67
+ }
68
+ ],
69
+ servers: {
70
+ [SERVER_NAME]: {
71
+ type: "http",
72
+ url: `${url}/mcp`,
73
+ headers: { Authorization: "Bearer ${input:hive-api-key}" }
74
+ }
75
+ }
76
+ };
77
+ console.log("\nAdd to .vscode/mcp.json:\n");
78
+ console.log(JSON.stringify(config, null, 2));
79
+ }
80
+ function configClaudeCode() {
81
+ const url = getServerUrl();
82
+ const key = getApiKey();
83
+ console.log("\nRun this command:\n");
84
+ console.log(
85
+ `claude mcp add --transport http --header "Authorization: Bearer ${key}" ${SERVER_NAME} ${url}/mcp`
86
+ );
87
+ }
88
+ function configHttpUrl(url) {
89
+ console.log(`
90
+ Remote MCP server URL: ${url}/mcp`);
91
+ console.log("\nFor Claude Code:");
92
+ console.log(
93
+ ` claude mcp add --transport http --header "Authorization: Bearer YOUR_HIVE_API_KEY" ${SERVER_NAME} ${url}/mcp`
94
+ );
95
+ console.log("\nFor Cursor / Claude Desktop:");
96
+ console.log(
97
+ JSON.stringify(
98
+ {
99
+ [SERVER_NAME]: {
100
+ url: `${url}/mcp`,
101
+ headers: authHeader("YOUR_HIVE_API_KEY")
102
+ }
103
+ },
104
+ null,
105
+ 2
106
+ )
107
+ );
108
+ }
109
+ function readJsonSafe(filePath) {
110
+ if (!existsSync(filePath)) return {};
111
+ const raw = readFileSync(filePath, "utf-8");
112
+ try {
113
+ return JSON.parse(raw);
114
+ } catch {
115
+ throw new Error(
116
+ `Config file at ${filePath} contains invalid JSON. Fix it manually before running setup.`
117
+ );
118
+ }
119
+ }
120
+ function writeJsonSafe(filePath, data) {
121
+ const dir = dirname(filePath);
122
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
123
+ writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n", "utf-8");
124
+ }
125
+ function getClaudeDesktopConfigPath() {
126
+ return platform() === "darwin" ? join(
127
+ homedir(),
128
+ "Library",
129
+ "Application Support",
130
+ "Claude",
131
+ "claude_desktop_config.json"
132
+ ) : platform() === "win32" ? join(
133
+ homedir(),
134
+ "AppData",
135
+ "Roaming",
136
+ "Claude",
137
+ "claude_desktop_config.json"
138
+ ) : join(homedir(), ".config", "Claude", "claude_desktop_config.json");
139
+ }
140
+ function getCursorConfigPath() {
141
+ return join(homedir(), ".cursor", "mcp.json");
142
+ }
143
+ function getVscodeConfigPath() {
144
+ return join(homedir(), ".vscode", "mcp.json");
145
+ }
146
+ function getWindsurfMcpConfigPath() {
147
+ return join(homedir(), ".codeium", "windsurf", "mcp_config.json");
148
+ }
149
+ function getGeminiCliSettingsPath() {
150
+ return join(homedir(), ".gemini", "settings.json");
151
+ }
152
+ function getClaudeCodeUserConfigPath() {
153
+ return join(homedir(), ".claude.json");
154
+ }
155
+ function writeClaudeDesktopConfig() {
156
+ const url = getServerUrl();
157
+ const key = getApiKey();
158
+ const p = getClaudeDesktopConfigPath();
159
+ if (key === "YOUR_HIVE_API_KEY") {
160
+ return { path: p, written: false };
161
+ }
162
+ const existing = readJsonSafe(p);
163
+ const mcpServers = existing.mcpServers || {};
164
+ mcpServers[SERVER_NAME] = {
165
+ url: `${url}/mcp`,
166
+ headers: authHeader(key)
167
+ };
168
+ existing.mcpServers = mcpServers;
169
+ writeJsonSafe(p, existing);
170
+ return { path: p, written: true };
171
+ }
172
+ function writeCursorConfig() {
173
+ const url = getServerUrl();
174
+ const key = getApiKey();
175
+ const p = getCursorConfigPath();
176
+ if (key === "YOUR_HIVE_API_KEY") {
177
+ return { path: p, written: false };
178
+ }
179
+ const existing = readJsonSafe(p);
180
+ const mcpServers = existing.mcpServers || {};
181
+ mcpServers[SERVER_NAME] = {
182
+ url: `${url}/mcp`,
183
+ headers: authHeader(key)
184
+ };
185
+ existing.mcpServers = mcpServers;
186
+ writeJsonSafe(p, existing);
187
+ return { path: p, written: true };
188
+ }
189
+ function writeVscodeConfig() {
190
+ const url = getServerUrl();
191
+ const key = getApiKey();
192
+ const p = getVscodeConfigPath();
193
+ if (key === "YOUR_HIVE_API_KEY") {
194
+ return { path: p, written: false };
195
+ }
196
+ const existing = readJsonSafe(p);
197
+ const servers = existing.servers || {};
198
+ servers[SERVER_NAME] = {
199
+ type: "http",
200
+ url: `${url}/mcp`,
201
+ headers: authHeader(key)
202
+ };
203
+ existing.servers = servers;
204
+ writeJsonSafe(p, existing);
205
+ return { path: p, written: true };
206
+ }
207
+ function writeClaudeCodeConfig() {
208
+ const url = getServerUrl();
209
+ const key = getApiKey();
210
+ return {
211
+ command: `claude mcp add --transport http --header "Authorization: Bearer ${key}" ${SERVER_NAME} ${url}/mcp`
212
+ };
213
+ }
214
+ function writeClaudeCodeUserConfig() {
215
+ const url = getServerUrl();
216
+ const key = getApiKey();
217
+ const p = getClaudeCodeUserConfigPath();
218
+ if (key === "YOUR_HIVE_API_KEY") {
219
+ return { path: p, written: false };
220
+ }
221
+ const existing = readJsonSafe(p);
222
+ const mcpServers = existing.mcpServers || {};
223
+ mcpServers[SERVER_NAME] = {
224
+ type: "http",
225
+ url: `${url}/mcp`,
226
+ headers: authHeader(key)
227
+ };
228
+ existing.mcpServers = mcpServers;
229
+ writeJsonSafe(p, existing);
230
+ return { path: p, written: true };
231
+ }
232
+ function writeWindsurfConfig() {
233
+ const url = getServerUrl();
234
+ const key = getApiKey();
235
+ const p = getWindsurfMcpConfigPath();
236
+ if (key === "YOUR_HIVE_API_KEY") {
237
+ return { path: p, written: false };
238
+ }
239
+ const existing = readJsonSafe(p);
240
+ const mcpServers = existing.mcpServers || {};
241
+ mcpServers[SERVER_NAME] = {
242
+ url: `${url}/mcp`,
243
+ headers: authHeader(key)
244
+ };
245
+ existing.mcpServers = mcpServers;
246
+ writeJsonSafe(p, existing);
247
+ return { path: p, written: true };
248
+ }
249
+ function writeGeminiCliConfig() {
250
+ const url = getServerUrl();
251
+ const key = getApiKey();
252
+ const p = getGeminiCliSettingsPath();
253
+ if (key === "YOUR_HIVE_API_KEY") {
254
+ return { path: p, written: false };
255
+ }
256
+ const existing = readJsonSafe(p);
257
+ const mcpServers = existing.mcpServers || {};
258
+ mcpServers[SERVER_NAME] = {
259
+ url: `${url}/mcp`,
260
+ headers: authHeader(key)
261
+ };
262
+ existing.mcpServers = mcpServers;
263
+ writeJsonSafe(p, existing);
264
+ return { path: p, written: true };
265
+ }
266
+ function printChatGptDesktopInstructions() {
267
+ const url = getServerUrl();
268
+ const key = getApiKey();
269
+ const keyLabel = key === "YOUR_HIVE_API_KEY" ? "<YOUR_HIVE_API_KEY>" : key;
270
+ return {
271
+ manual: true,
272
+ steps: [
273
+ "Recommended: use OpenAI Responses API with a remote MCP tool",
274
+ `server_url: ${url}/mcp`,
275
+ `authorization: ${keyLabel}`,
276
+ "Direct ChatGPT app connectors may require OAuth/CIMD; Hive has not shipped OAuth yet.",
277
+ "For ChatGPT app testing, put an OAuth-compatible proxy in front of Hive and inject the Hive key server-side."
278
+ ]
279
+ };
280
+ }
281
+ function removeServerEntry(filePath, serversKey) {
282
+ if (!existsSync(filePath)) return { removed: false, path: filePath };
283
+ const existing = readJsonSafe(filePath);
284
+ const servers = existing[serversKey] || {};
285
+ if (!(SERVER_NAME in servers)) return { removed: false, path: filePath };
286
+ delete servers[SERVER_NAME];
287
+ if (Object.keys(servers).length === 0) {
288
+ delete existing[serversKey];
289
+ } else {
290
+ existing[serversKey] = servers;
291
+ }
292
+ writeJsonSafe(filePath, existing);
293
+ return { removed: true, path: filePath };
294
+ }
295
+ function removeClaudeDesktopConfig() {
296
+ return removeServerEntry(getClaudeDesktopConfigPath(), "mcpServers");
297
+ }
298
+ function removeCursorConfig() {
299
+ return removeServerEntry(getCursorConfigPath(), "mcpServers");
300
+ }
301
+ function removeVscodeConfig() {
302
+ return removeServerEntry(getVscodeConfigPath(), "servers");
303
+ }
304
+ function removeClaudeCodeUserConfig() {
305
+ return removeServerEntry(getClaudeCodeUserConfigPath(), "mcpServers");
306
+ }
307
+ function removeWindsurfConfig() {
308
+ return removeServerEntry(getWindsurfMcpConfigPath(), "mcpServers");
309
+ }
310
+ function removeGeminiCliConfig() {
311
+ return removeServerEntry(getGeminiCliSettingsPath(), "mcpServers");
312
+ }
313
+
314
+ export {
315
+ configClaudeDesktop,
316
+ configCursor,
317
+ configVscode,
318
+ configClaudeCode,
319
+ configHttpUrl,
320
+ getClaudeDesktopConfigPath,
321
+ getCursorConfigPath,
322
+ getVscodeConfigPath,
323
+ getWindsurfMcpConfigPath,
324
+ getGeminiCliSettingsPath,
325
+ getClaudeCodeUserConfigPath,
326
+ writeClaudeDesktopConfig,
327
+ writeCursorConfig,
328
+ writeVscodeConfig,
329
+ writeClaudeCodeConfig,
330
+ writeClaudeCodeUserConfig,
331
+ writeWindsurfConfig,
332
+ writeGeminiCliConfig,
333
+ printChatGptDesktopInstructions,
334
+ removeClaudeDesktopConfig,
335
+ removeCursorConfig,
336
+ removeVscodeConfig,
337
+ removeClaudeCodeUserConfig,
338
+ removeWindsurfConfig,
339
+ removeGeminiCliConfig
340
+ };