hive-intelligence 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +315 -85
  3. package/agent-skills/.claude-plugin/plugin.json +10 -4
  4. package/agent-skills/.mcp.json +8 -0
  5. package/agent-skills/AGENTS.md +37 -0
  6. package/agent-skills/README.md +28 -23
  7. package/agent-skills/SKILL.md +40 -10
  8. package/agent-skills/evals/trigger-queries.json +270 -0
  9. package/agent-skills/package.json +4 -4
  10. package/agent-skills/packs/hive-build/SKILL.md +54 -25
  11. package/agent-skills/packs/hive-build/evals/evals.json +16 -3
  12. package/agent-skills/packs/hive-build/evals/triggers.json +50 -0
  13. package/agent-skills/packs/hive-build-onboarding/SKILL.md +27 -34
  14. package/agent-skills/packs/hive-build-onboarding/evals/evals.json +1 -1
  15. package/agent-skills/packs/hive-build-onboarding/evals/triggers.json +50 -0
  16. package/agent-skills/packs/hive-cli/SKILL.md +33 -35
  17. package/agent-skills/packs/hive-cli/evals/evals.json +1 -1
  18. package/agent-skills/packs/hive-cli/evals/triggers.json +50 -0
  19. package/agent-skills/packs/hive-defi-research/SKILL.md +105 -19
  20. package/agent-skills/packs/hive-defi-research/evals/evals.json +6 -3
  21. package/agent-skills/packs/hive-defi-research/evals/triggers.json +50 -0
  22. package/agent-skills/packs/hive-dex-pool-analysis/SKILL.md +106 -16
  23. package/agent-skills/packs/hive-dex-pool-analysis/evals/evals.json +5 -3
  24. package/agent-skills/packs/hive-dex-pool-analysis/evals/triggers.json +50 -0
  25. package/agent-skills/packs/hive-market-research/SKILL.md +130 -21
  26. package/agent-skills/packs/hive-market-research/evals/evals.json +15 -2
  27. package/agent-skills/packs/hive-market-research/evals/triggers.json +50 -0
  28. package/agent-skills/packs/hive-mcp/SKILL.md +98 -153
  29. package/agent-skills/packs/hive-mcp/evals/evals.json +4 -3
  30. package/agent-skills/packs/hive-mcp/evals/triggers.json +50 -0
  31. package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +62 -35
  32. package/agent-skills/packs/hive-mcp/references/clients.md +154 -0
  33. package/agent-skills/packs/hive-network-infrastructure/SKILL.md +105 -20
  34. package/agent-skills/packs/hive-network-infrastructure/evals/evals.json +4 -2
  35. package/agent-skills/packs/hive-network-infrastructure/evals/triggers.json +50 -0
  36. package/agent-skills/packs/hive-nft-research/SKILL.md +105 -18
  37. package/agent-skills/packs/hive-nft-research/evals/evals.json +4 -2
  38. package/agent-skills/packs/hive-nft-research/evals/triggers.json +50 -0
  39. package/agent-skills/packs/hive-prediction-markets/SKILL.md +108 -21
  40. package/agent-skills/packs/hive-prediction-markets/evals/evals.json +4 -2
  41. package/agent-skills/packs/hive-prediction-markets/evals/triggers.json +50 -0
  42. package/agent-skills/packs/hive-query/SKILL.md +80 -33
  43. package/agent-skills/packs/hive-query/evals/evals.json +7 -5
  44. package/agent-skills/packs/hive-query/evals/triggers.json +50 -0
  45. package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +39 -18
  46. package/agent-skills/packs/hive-security-risk/SKILL.md +110 -19
  47. package/agent-skills/packs/hive-security-risk/evals/evals.json +4 -2
  48. package/agent-skills/packs/hive-security-risk/evals/triggers.json +50 -0
  49. package/agent-skills/packs/hive-solana-analysis/SKILL.md +115 -19
  50. package/agent-skills/packs/hive-solana-analysis/evals/evals.json +4 -2
  51. package/agent-skills/packs/hive-solana-analysis/evals/triggers.json +50 -0
  52. package/agent-skills/packs/hive-stateful-monitoring/SKILL.md +120 -0
  53. package/agent-skills/packs/hive-stateful-monitoring/evals/evals.json +54 -0
  54. package/agent-skills/packs/hive-stateful-monitoring/evals/triggers.json +50 -0
  55. package/agent-skills/packs/hive-stateful-monitoring/references/b2b-subject-context.md +53 -0
  56. package/agent-skills/packs/hive-token-diligence/SKILL.md +119 -21
  57. package/agent-skills/packs/hive-token-diligence/evals/evals.json +6 -4
  58. package/agent-skills/packs/hive-token-diligence/evals/triggers.json +50 -0
  59. package/agent-skills/packs/hive-tool-discovery/SKILL.md +48 -19
  60. package/agent-skills/packs/hive-tool-discovery/evals/evals.json +17 -3
  61. package/agent-skills/packs/hive-tool-discovery/evals/triggers.json +50 -0
  62. package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +31 -6
  63. package/agent-skills/packs/hive-wallet-investigation/SKILL.md +111 -18
  64. package/agent-skills/packs/hive-wallet-investigation/evals/evals.json +5 -3
  65. package/agent-skills/packs/hive-wallet-investigation/evals/triggers.json +50 -0
  66. package/agent-skills/references/agents-routing.md +19 -7
  67. package/agent-skills/scripts/validate-agent-skills-package.mjs +116 -18
  68. package/agent-skills/skills.sh.json +3 -2
  69. package/bin/hive-mcp.js +5 -5
  70. package/build/{alias-CZ3DEYHF.js → alias-BKAVOYQV.js} +2 -3
  71. package/build/{api-client-I23XLSHU.js → api-client-FTVDFW5V.js} +4 -4
  72. package/build/{auth-KKINNBXT.js → auth-EZFJ5RYB.js} +3 -4
  73. package/build/{browser-auth-EEFGRHWY.js → browser-auth-OJSUNFBI.js} +2 -3
  74. package/build/{cache-EGNMENNA.js → cache-TBDQ7QBU.js} +2 -3
  75. package/build/{chunk-V77LO4RO.js → chunk-6PC3HUAK.js} +10 -4
  76. package/build/{chunk-XYBEFFZ3.js → chunk-725R3KLJ.js} +26 -4
  77. package/build/{chunk-PGBVNMNZ.js → chunk-7GD2MFYI.js} +57 -7
  78. package/build/{chunk-IDZD2NVG.js → chunk-AEU43ACS.js} +33 -10
  79. package/build/chunk-EPF36Q3Z.js +71 -0
  80. package/build/chunk-I5Z6FZRL.js +178 -0
  81. package/build/{chunk-KBVPIZS4.js → chunk-ILVPOLA7.js} +12 -4
  82. package/build/{chunk-B6G222LS.js → chunk-L326MQZP.js} +22 -6
  83. package/build/{chunk-QNCI4DEB.js → chunk-M6REON2I.js} +35 -21
  84. package/build/chunk-N32UIHBU.js +125 -0
  85. package/build/{chunk-IZTN7WFH.js → chunk-Q7VBYLX7.js} +12 -3
  86. package/build/chunk-QDZ7MAVN.js +447 -0
  87. package/build/{chunk-KGYBTXIN.js → chunk-R6YZTFQL.js} +2 -1
  88. package/build/{chunk-DYJBTKNR.js → chunk-RU6QOFHH.js} +9 -10
  89. package/build/{chunk-RKICZ6DZ.js → chunk-RUHO24SX.js} +16 -10
  90. package/build/{chunk-MPIUUE3T.js → chunk-TNQ7GJ6Q.js} +0 -60
  91. package/build/{chunk-2X3U4DFK.js → chunk-W2QL7LYI.js} +43586 -21498
  92. package/build/chunk-ZXKFJQDE.js +20 -0
  93. package/build/cli.js +3342 -3410
  94. package/build/{completion-BELZL7ND.js → completion-7KBW243H.js} +4 -5
  95. package/build/{config-TDX4VUGW.js → config-KAEUX6RM.js} +23 -4
  96. package/build/{config-dir-V43W2WIA.js → config-dir-5IH7MOOT.js} +2 -3
  97. package/build/{doctor-5K5UWHNX.js → doctor-ORDOCGLM.js} +34 -10
  98. package/build/{errors-E6MVUBNA.js → errors-HGHUF575.js} +2 -3
  99. package/build/{format-TSFSI2K7.js → format-H7FOQSYY.js} +1 -2
  100. package/build/{init-YQ5NBICF.js → init-UCTCUYFA.js} +52 -9
  101. package/build/init-all-BVWW3JVK.js +408 -0
  102. package/build/mcpServer-RUEOTTF7.js +34 -0
  103. package/build/monitor-worker.js +1396 -0
  104. package/build/{namespace-PVHBFDW2.js → namespace-L5DGCY7K.js} +2 -3
  105. package/build/{open-YUIJP37F.js → open-V2RNA3QT.js} +2 -3
  106. package/build/{output-IYJBFCYK.js → output-ITGLBKIG.js} +2 -3
  107. package/build/release.json +8 -0
  108. package/build/{serve-KWNJK6EY.js → serve-DKLR2WQH.js} +9 -4
  109. package/build/server.js +5399 -2945
  110. package/build/{setup-YTUKMPNP.js → setup-PTYFMTK5.js} +60 -56
  111. package/build/stdio.js +10 -8
  112. package/build/{telemetry-5IPRKZBL.js → telemetry-HPLDYR7U.js} +5 -4
  113. package/build/{tools-PJHWFCAG.js → tools-I7GLWTV6.js} +15 -15
  114. package/build/{uninstall-HWXEIP6K.js → uninstall-SAOIPL6K.js} +19 -11
  115. package/build/update-check-IEXPOYYR.js +18 -0
  116. package/build/upgrade-J4HIGCKE.js +171 -0
  117. package/build/version-Z4HJL4VV.js +16 -0
  118. package/build/{watch-KZ5EDZK3.js → watch-WVR4CGCD.js} +8 -7
  119. package/package.json +82 -41
  120. package/agent-skills/packs/hive-defi-research/references/workflow.md +0 -41
  121. package/agent-skills/packs/hive-dex-pool-analysis/references/workflow.md +0 -42
  122. package/agent-skills/packs/hive-market-research/references/workflow.md +0 -47
  123. package/agent-skills/packs/hive-network-infrastructure/references/workflow.md +0 -41
  124. package/agent-skills/packs/hive-nft-research/references/workflow.md +0 -42
  125. package/agent-skills/packs/hive-prediction-markets/references/workflow.md +0 -42
  126. package/agent-skills/packs/hive-security-risk/references/workflow.md +0 -46
  127. package/agent-skills/packs/hive-solana-analysis/references/workflow.md +0 -42
  128. package/agent-skills/packs/hive-token-diligence/references/workflow.md +0 -45
  129. package/agent-skills/packs/hive-wallet-investigation/references/workflow.md +0 -45
  130. package/build/alias-CZ3DEYHF.js.map +0 -1
  131. package/build/api-client-I23XLSHU.js.map +0 -1
  132. package/build/auth-KKINNBXT.js.map +0 -1
  133. package/build/browser-auth-EEFGRHWY.js.map +0 -1
  134. package/build/cache-EGNMENNA.js.map +0 -1
  135. package/build/chunk-2MYMHMBF.js +0 -340
  136. package/build/chunk-2MYMHMBF.js.map +0 -1
  137. package/build/chunk-2X3U4DFK.js.map +0 -1
  138. package/build/chunk-B6G222LS.js.map +0 -1
  139. package/build/chunk-DYJBTKNR.js.map +0 -1
  140. package/build/chunk-IDZD2NVG.js.map +0 -1
  141. package/build/chunk-IZTN7WFH.js.map +0 -1
  142. package/build/chunk-KBVPIZS4.js.map +0 -1
  143. package/build/chunk-KGYBTXIN.js.map +0 -1
  144. package/build/chunk-MPIUUE3T.js.map +0 -1
  145. package/build/chunk-PGBVNMNZ.js.map +0 -1
  146. package/build/chunk-QNCI4DEB.js.map +0 -1
  147. package/build/chunk-RKICZ6DZ.js.map +0 -1
  148. package/build/chunk-UKHZIVDT.js +0 -44
  149. package/build/chunk-UKHZIVDT.js.map +0 -1
  150. package/build/chunk-V77LO4RO.js.map +0 -1
  151. package/build/chunk-XYBEFFZ3.js.map +0 -1
  152. package/build/cli.js.map +0 -1
  153. package/build/completion-BELZL7ND.js.map +0 -1
  154. package/build/config-TDX4VUGW.js.map +0 -1
  155. package/build/config-dir-V43W2WIA.js.map +0 -1
  156. package/build/doctor-5K5UWHNX.js.map +0 -1
  157. package/build/errors-E6MVUBNA.js.map +0 -1
  158. package/build/format-TSFSI2K7.js.map +0 -1
  159. package/build/init-YQ5NBICF.js.map +0 -1
  160. package/build/init-all-6OWEQALB.js +0 -274
  161. package/build/init-all-6OWEQALB.js.map +0 -1
  162. package/build/mcpServer-AEX3RQ4U.js +0 -20
  163. package/build/mcpServer-AEX3RQ4U.js.map +0 -1
  164. package/build/namespace-PVHBFDW2.js.map +0 -1
  165. package/build/open-YUIJP37F.js.map +0 -1
  166. package/build/output-IYJBFCYK.js.map +0 -1
  167. package/build/serve-KWNJK6EY.js.map +0 -1
  168. package/build/server.js.map +0 -1
  169. package/build/setup-YTUKMPNP.js.map +0 -1
  170. package/build/stdio.js.map +0 -1
  171. package/build/telemetry-5IPRKZBL.js.map +0 -1
  172. package/build/tools-PJHWFCAG.js.map +0 -1
  173. package/build/uninstall-HWXEIP6K.js.map +0 -1
  174. package/build/watch-KZ5EDZK3.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/cache.ts"],"sourcesContent":["import { existsSync, unlinkSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport {\n getConfigDir,\n ensureConfigDir,\n readJsonFile,\n writeJsonFile,\n} from \"./config-dir.js\";\n\nconst DEFAULT_TTL_MS = 300_000; // 5 minutes\n\ninterface CacheEntry {\n fetchedAt: string;\n data: unknown[];\n}\n\nfunction getCachePath(): string {\n return join(getConfigDir(), \"cache\", \"tools.json\");\n}\n\nfunction getTtlMs(): number {\n const envTtl = process.env.HIVE_CACHE_TTL_MS;\n if (envTtl) {\n const parsed = parseInt(envTtl, 10);\n if (!isNaN(parsed) && parsed > 0) return parsed;\n }\n return DEFAULT_TTL_MS;\n}\n\nexport function getCachedTools(): unknown[] | null {\n const path = getCachePath();\n const entry = readJsonFile<CacheEntry>(path);\n if (!entry || !entry.fetchedAt || !Array.isArray(entry.data)) return null;\n\n const age = Date.now() - new Date(entry.fetchedAt).getTime();\n if (age > getTtlMs()) return null;\n\n return entry.data;\n}\n\nexport function setCachedTools(data: unknown[]): void {\n ensureConfigDir();\n const entry: CacheEntry = {\n fetchedAt: new Date().toISOString(),\n data,\n };\n writeJsonFile(getCachePath(), entry);\n}\n\nexport function clearCache(): void {\n const path = getCachePath();\n if (existsSync(path)) unlinkSync(path);\n const updatePath = join(getConfigDir(), \"cache\", \"update-check.json\");\n if (existsSync(updatePath)) unlinkSync(updatePath);\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY;AAQrB,IAAM,iBAAiB;AAOvB,SAAS,eAAuB;AAC9B,SAAO,KAAK,aAAa,GAAG,SAAS,YAAY;AACnD;AAEA,SAAS,WAAmB;AAC1B,QAAM,SAAS,QAAQ,IAAI;AAC3B,MAAI,QAAQ;AACV,UAAM,SAAS,SAAS,QAAQ,EAAE;AAClC,QAAI,CAAC,MAAM,MAAM,KAAK,SAAS,EAAG,QAAO;AAAA,EAC3C;AACA,SAAO;AACT;AAEO,SAAS,iBAAmC;AACjD,QAAM,OAAO,aAAa;AAC1B,QAAM,QAAQ,aAAyB,IAAI;AAC3C,MAAI,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,MAAM,QAAQ,MAAM,IAAI,EAAG,QAAO;AAErE,QAAM,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,SAAS,EAAE,QAAQ;AAC3D,MAAI,MAAM,SAAS,EAAG,QAAO;AAE7B,SAAO,MAAM;AACf;AAEO,SAAS,eAAe,MAAuB;AACpD,kBAAgB;AAChB,QAAM,QAAoB;AAAA,IACxB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC;AAAA,EACF;AACA,gBAAc,aAAa,GAAG,KAAK;AACrC;AAEO,SAAS,aAAmB;AACjC,QAAM,OAAO,aAAa;AAC1B,MAAI,WAAW,IAAI,EAAG,YAAW,IAAI;AACrC,QAAM,aAAa,KAAK,aAAa,GAAG,SAAS,mBAAmB;AACpE,MAAI,WAAW,UAAU,EAAG,YAAW,UAAU;AACnD;","names":[]}
@@ -1,340 +0,0 @@
1
- import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import {
3
- resolveApiKey,
4
- resolveApiUrl
5
- } from "./chunk-V77LO4RO.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
- "Open ChatGPT Desktop",
274
- "Settings \u2192 Connectors \u2192 Add MCP server",
275
- `URL: ${url}/mcp`,
276
- `Auth header: Authorization: Bearer ${keyLabel}`
277
- ]
278
- };
279
- }
280
- function removeServerEntry(filePath, serversKey) {
281
- if (!existsSync(filePath)) return { removed: false, path: filePath };
282
- const existing = readJsonSafe(filePath);
283
- const servers = existing[serversKey] || {};
284
- if (!(SERVER_NAME in servers)) return { removed: false, path: filePath };
285
- delete servers[SERVER_NAME];
286
- if (Object.keys(servers).length === 0) {
287
- delete existing[serversKey];
288
- } else {
289
- existing[serversKey] = servers;
290
- }
291
- writeJsonSafe(filePath, existing);
292
- return { removed: true, path: filePath };
293
- }
294
- function removeClaudeDesktopConfig() {
295
- return removeServerEntry(getClaudeDesktopConfigPath(), "mcpServers");
296
- }
297
- function removeCursorConfig() {
298
- return removeServerEntry(getCursorConfigPath(), "mcpServers");
299
- }
300
- function removeVscodeConfig() {
301
- return removeServerEntry(getVscodeConfigPath(), "servers");
302
- }
303
- function removeClaudeCodeUserConfig() {
304
- return removeServerEntry(getClaudeCodeUserConfigPath(), "mcpServers");
305
- }
306
- function removeWindsurfConfig() {
307
- return removeServerEntry(getWindsurfMcpConfigPath(), "mcpServers");
308
- }
309
- function removeGeminiCliConfig() {
310
- return removeServerEntry(getGeminiCliSettingsPath(), "mcpServers");
311
- }
312
-
313
- export {
314
- configClaudeDesktop,
315
- configCursor,
316
- configVscode,
317
- configClaudeCode,
318
- configHttpUrl,
319
- getClaudeDesktopConfigPath,
320
- getCursorConfigPath,
321
- getVscodeConfigPath,
322
- getWindsurfMcpConfigPath,
323
- getGeminiCliSettingsPath,
324
- getClaudeCodeUserConfigPath,
325
- writeClaudeDesktopConfig,
326
- writeCursorConfig,
327
- writeVscodeConfig,
328
- writeClaudeCodeConfig,
329
- writeClaudeCodeUserConfig,
330
- writeWindsurfConfig,
331
- writeGeminiCliConfig,
332
- printChatGptDesktopInstructions,
333
- removeClaudeDesktopConfig,
334
- removeCursorConfig,
335
- removeVscodeConfig,
336
- removeClaudeCodeUserConfig,
337
- removeWindsurfConfig,
338
- removeGeminiCliConfig
339
- };
340
- //# sourceMappingURL=chunk-2MYMHMBF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/config.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir, platform } from \"node:os\";\nimport { dirname, join } from \"node:path\";\nimport { resolveApiKey, resolveApiUrl } from \"./config-dir.js\";\n\nconst DEFAULT_URL = \"https://mcp.hiveintelligence.xyz\";\nconst SERVER_NAME = \"hive\";\n\nfunction getServerUrl(): string {\n return resolveApiUrl() || DEFAULT_URL;\n}\n\nfunction getApiKey(): string {\n return resolveApiKey() || \"YOUR_HIVE_API_KEY\";\n}\n\nfunction authHeader(key: string): Record<string, string> {\n return { Authorization: `Bearer ${key}` };\n}\n\n// ─── Print-only functions (display config to stdout) ────────────────\n\nexport function configClaudeDesktop(): void {\n const url = getServerUrl();\n const key = getApiKey();\n const config = {\n [SERVER_NAME]: {\n url: `${url}/mcp`,\n headers: authHeader(key),\n },\n };\n const p = getClaudeDesktopConfigPath();\n console.log(\n '\\nAdd this to your claude_desktop_config.json under \"mcpServers\":\\n',\n );\n console.log(`Config file: ${p}\\n`);\n console.log(JSON.stringify(config, null, 2));\n if (key === \"YOUR_HIVE_API_KEY\") {\n console.log(\n \"\\nReplace YOUR_HIVE_API_KEY with your actual key from: hive auth login\",\n );\n }\n}\n\nexport function configCursor(): void {\n const url = getServerUrl();\n const key = getApiKey();\n const config = {\n mcpServers: {\n [SERVER_NAME]: {\n url: `${url}/mcp`,\n headers: authHeader(key),\n },\n },\n };\n console.log(\"\\nAdd to .cursor/mcp.json:\\n\");\n console.log(JSON.stringify(config, null, 2));\n}\n\nexport function configVscode(): void {\n const url = getServerUrl();\n const config = {\n inputs: [\n {\n type: \"promptString\",\n id: \"hive-api-key\",\n description: \"Hive API Key (hive_live_...)\",\n password: true,\n },\n ],\n servers: {\n [SERVER_NAME]: {\n type: \"http\",\n url: `${url}/mcp`,\n headers: { Authorization: \"Bearer ${input:hive-api-key}\" },\n },\n },\n };\n console.log(\"\\nAdd to .vscode/mcp.json:\\n\");\n console.log(JSON.stringify(config, null, 2));\n}\n\nexport function configClaudeCode(): void {\n const url = getServerUrl();\n const key = getApiKey();\n console.log(\"\\nRun this command:\\n\");\n console.log(\n `claude mcp add --transport http --header \"Authorization: Bearer ${key}\" ${SERVER_NAME} ${url}/mcp`,\n );\n}\n\nexport function configHttpUrl(url: string): void {\n console.log(`\\nRemote MCP server URL: ${url}/mcp`);\n console.log(\"\\nFor Claude Code:\");\n console.log(\n ` claude mcp add --transport http --header \"Authorization: Bearer YOUR_HIVE_API_KEY\" ${SERVER_NAME} ${url}/mcp`,\n );\n console.log(\"\\nFor Cursor / Claude Desktop:\");\n console.log(\n JSON.stringify(\n {\n [SERVER_NAME]: {\n url: `${url}/mcp`,\n headers: authHeader(\"YOUR_HIVE_API_KEY\"),\n },\n },\n null,\n 2,\n ),\n );\n}\n\n// ─── Config file paths ──────────────────────────────────────────────\n\nfunction readJsonSafe(filePath: string): Record<string, unknown> {\n if (!existsSync(filePath)) return {};\n const raw = readFileSync(filePath, \"utf-8\");\n try {\n return JSON.parse(raw) as Record<string, unknown>;\n } catch {\n throw new Error(\n `Config file at ${filePath} contains invalid JSON. Fix it manually before running setup.`,\n );\n }\n}\n\nfunction writeJsonSafe(filePath: string, data: unknown): void {\n const dir = dirname(filePath);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(filePath, JSON.stringify(data, null, 2) + \"\\n\", \"utf-8\");\n}\n\nexport function getClaudeDesktopConfigPath(): string {\n return platform() === \"darwin\"\n ? join(\n homedir(),\n \"Library\",\n \"Application Support\",\n \"Claude\",\n \"claude_desktop_config.json\",\n )\n : platform() === \"win32\"\n ? join(\n homedir(),\n \"AppData\",\n \"Roaming\",\n \"Claude\",\n \"claude_desktop_config.json\",\n )\n : join(homedir(), \".config\", \"Claude\", \"claude_desktop_config.json\");\n}\n\nexport function getCursorConfigPath(): string {\n return join(homedir(), \".cursor\", \"mcp.json\");\n}\n\nexport function getVscodeConfigPath(): string {\n return join(homedir(), \".vscode\", \"mcp.json\");\n}\n\nexport function getWindsurfMcpConfigPath(): string {\n return join(homedir(), \".codeium\", \"windsurf\", \"mcp_config.json\");\n}\n\nexport function getGeminiCliSettingsPath(): string {\n return join(homedir(), \".gemini\", \"settings.json\");\n}\n\nexport function getClaudeCodeUserConfigPath(): string {\n return join(homedir(), \".claude.json\");\n}\n\n// ─── Write functions (merge into existing config) ───────────────────\n\nexport function writeClaudeDesktopConfig(): {\n path: string;\n written: boolean;\n} {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getClaudeDesktopConfigPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const mcpServers = (existing.mcpServers || {}) as Record<string, unknown>;\n mcpServers[SERVER_NAME] = {\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.mcpServers = mcpServers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\nexport function writeCursorConfig(): { path: string; written: boolean } {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getCursorConfigPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const mcpServers = (existing.mcpServers || {}) as Record<string, unknown>;\n mcpServers[SERVER_NAME] = {\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.mcpServers = mcpServers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\nexport function writeVscodeConfig(): { path: string; written: boolean } {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getVscodeConfigPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const servers = (existing.servers || {}) as Record<string, unknown>;\n servers[SERVER_NAME] = {\n type: \"http\",\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.servers = servers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\nexport function writeClaudeCodeConfig(): { command: string } {\n const url = getServerUrl();\n const key = getApiKey();\n return {\n command: `claude mcp add --transport http --header \"Authorization: Bearer ${key}\" ${SERVER_NAME} ${url}/mcp`,\n };\n}\n\n/**\n * Write Hive's MCP entry into Claude Code's user-scope config\n * (~/.claude.json). This is what `claude mcp add` does internally;\n * doing it directly avoids requiring the `claude` CLI to be on PATH\n * and lets us batch-install across every client from one process.\n */\nexport function writeClaudeCodeUserConfig(): {\n path: string;\n written: boolean;\n} {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getClaudeCodeUserConfigPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const mcpServers = (existing.mcpServers || {}) as Record<string, unknown>;\n mcpServers[SERVER_NAME] = {\n type: \"http\",\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.mcpServers = mcpServers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\nexport function writeWindsurfConfig(): { path: string; written: boolean } {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getWindsurfMcpConfigPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const mcpServers = (existing.mcpServers || {}) as Record<string, unknown>;\n mcpServers[SERVER_NAME] = {\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.mcpServers = mcpServers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\nexport function writeGeminiCliConfig(): { path: string; written: boolean } {\n const url = getServerUrl();\n const key = getApiKey();\n const p = getGeminiCliSettingsPath();\n\n if (key === \"YOUR_HIVE_API_KEY\") {\n return { path: p, written: false };\n }\n\n const existing = readJsonSafe(p);\n const mcpServers = (existing.mcpServers || {}) as Record<string, unknown>;\n mcpServers[SERVER_NAME] = {\n url: `${url}/mcp`,\n headers: authHeader(key),\n };\n existing.mcpServers = mcpServers;\n writeJsonSafe(p, existing);\n return { path: p, written: true };\n}\n\n/**\n * Print the manual ChatGPT Desktop setup instructions. Programmatic\n * configuration is not possible — ChatGPT only accepts MCP servers\n * through its in-app Settings → Connectors UI.\n */\nexport function printChatGptDesktopInstructions(): {\n manual: true;\n steps: string[];\n} {\n const url = getServerUrl();\n const key = getApiKey();\n const keyLabel = key === \"YOUR_HIVE_API_KEY\" ? \"<YOUR_HIVE_API_KEY>\" : key;\n return {\n manual: true,\n steps: [\n \"Open ChatGPT Desktop\",\n \"Settings → Connectors → Add MCP server\",\n `URL: ${url}/mcp`,\n `Auth header: Authorization: Bearer ${keyLabel}`,\n ],\n };\n}\n\n// ─── Removal functions (uninstall flow) ─────────────────────────────\n\nfunction removeServerEntry(\n filePath: string,\n serversKey: \"mcpServers\" | \"servers\",\n): { removed: boolean; path: string } {\n if (!existsSync(filePath)) return { removed: false, path: filePath };\n const existing = readJsonSafe(filePath);\n const servers = (existing[serversKey] || {}) as Record<string, unknown>;\n if (!(SERVER_NAME in servers)) return { removed: false, path: filePath };\n delete servers[SERVER_NAME];\n // Don't leave an empty servers key behind — match the project's\n // existing convention (config files only contain non-empty objects).\n if (Object.keys(servers).length === 0) {\n delete existing[serversKey];\n } else {\n existing[serversKey] = servers;\n }\n // If the entire file is now empty, leave it on disk but write {}\n // (deleting could surprise other tools that expect the file).\n writeJsonSafe(filePath, existing);\n return { removed: true, path: filePath };\n}\n\nexport function removeClaudeDesktopConfig() {\n return removeServerEntry(getClaudeDesktopConfigPath(), \"mcpServers\");\n}\n\nexport function removeCursorConfig() {\n return removeServerEntry(getCursorConfigPath(), \"mcpServers\");\n}\n\nexport function removeVscodeConfig() {\n return removeServerEntry(getVscodeConfigPath(), \"servers\");\n}\n\nexport function removeClaudeCodeUserConfig() {\n return removeServerEntry(getClaudeCodeUserConfigPath(), \"mcpServers\");\n}\n\nexport function removeWindsurfConfig() {\n return removeServerEntry(getWindsurfMcpConfigPath(), \"mcpServers\");\n}\n\nexport function removeGeminiCliConfig() {\n return removeServerEntry(getGeminiCliSettingsPath(), \"mcpServers\");\n}\n"],"mappings":"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","names":[]}