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":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/doctor.ts"],"sourcesContent":["import {\n shouldOutputJson,\n writeOutput,\n successEnvelope,\n info,\n debug,\n} from \"./output.js\";\nimport { fetchToolCatalog } from \"./api-client.js\";\n\nconst DEFAULT_API_URL =\n \"https://mcp.hiveintelligence.xyz\";\n\nfunction getApiUrl(): string {\n return process.env.HIVE_API_URL || DEFAULT_API_URL;\n}\n\nexport async function runDoctor(opts: { probe?: boolean }): Promise<void> {\n const checks: { check: string; status: string; detail: string }[] = [];\n\n // Check HIVE_API_KEY (optional for now — API is free)\n const apiKey = process.env.HIVE_API_KEY;\n checks.push({\n check: \"HIVE_API_KEY\",\n status: apiKey ? \"PASS\" : \"INFO\",\n detail: apiKey\n ? `Set (${apiKey.slice(0, 4)}...)`\n : \"Not set (optional — API is currently free)\",\n });\n\n // Check HIVE_API_URL\n const apiUrl = process.env.HIVE_API_URL;\n checks.push({\n check: \"HIVE_API_URL\",\n status: \"PASS\",\n detail: apiUrl ? `Custom: ${apiUrl}` : `Default: ${DEFAULT_API_URL}`,\n });\n\n // Check server connectivity via /ping\n const healthUrl = `${getApiUrl()}/ping`;\n debug(`GET ${healthUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 10000);\n const resp = await fetch(healthUrl, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n const serverStatus =\n body && typeof body === \"object\" && \"status\" in body\n ? String((body as Record<string, unknown>).status)\n : \"ok\";\n checks.push({\n check: \"Server health\",\n status: \"PASS\",\n detail: `${resp.status} — ${serverStatus}`,\n });\n } else {\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n const isTimeout = err instanceof Error && err.name === \"AbortError\";\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: isTimeout\n ? `Timeout connecting to ${getApiUrl()}`\n : `Connection failed: ${msg}`,\n });\n }\n\n // Check tool catalog availability\n {\n debug(\"Fetching tool catalog...\");\n try {\n const catalog = await fetchToolCatalog();\n const toolsData = catalog.data as\n | { totalCount?: number; tools?: unknown[] }\n | unknown[];\n const toolCount = Array.isArray(toolsData)\n ? toolsData.length\n : typeof toolsData === \"object\" &&\n toolsData !== null &&\n \"totalCount\" in toolsData\n ? (toolsData as { totalCount: number }).totalCount\n : 0;\n if (catalog.ok) {\n checks.push({\n check: \"Tool catalog\",\n status: toolCount > 0 ? \"PASS\" : \"WARN\",\n detail: `${toolCount} tools available`,\n });\n } else {\n const errMsg =\n catalog.error &&\n typeof catalog.error === \"object\" &&\n \"message\" in catalog.error\n ? String(catalog.error.message)\n : \"Unknown error\";\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: errMsg,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: `Failed to fetch: ${msg}`,\n });\n }\n }\n\n // Probe: call server health endpoint with extended check\n if (opts.probe) {\n const probeUrl = `${getApiUrl()}/health?run=true`;\n debug(`Probe: GET ${probeUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 30000);\n const resp = await fetch(probeUrl, {\n headers: {\n ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n },\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n if (body && typeof body === \"object\" && \"providers\" in body) {\n const providers = (body as Record<string, unknown>).providers;\n if (Array.isArray(providers)) {\n for (const p of providers) {\n const pObj = p as Record<string, unknown>;\n const name = String(pObj.name ?? pObj.provider ?? \"unknown\");\n const status = String(pObj.status ?? \"unknown\");\n const pass =\n status === \"ok\" ||\n status === \"healthy\" ||\n status === \"passed\" ||\n status === \"partial\";\n checks.push({\n check: `Probe: ${name}`,\n status:\n pass || status === \"missing_key\" || status === \"plan_required\"\n ? pass\n ? \"PASS\"\n : \"SKIP\"\n : \"FAIL\",\n detail: status,\n });\n }\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"PASS\",\n detail: `Server responded ${resp.status}`,\n });\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `Failed: ${msg}`,\n });\n }\n }\n\n const fails = checks.filter((c) => c.status === \"FAIL\").length;\n const warns = checks.filter((c) => c.status === \"WARN\").length;\n const data = {\n checks,\n summary: {\n total: checks.length,\n pass: checks.filter((c) => c.status === \"PASS\").length,\n fail: fails,\n warn: warns,\n },\n };\n\n if (shouldOutputJson()) {\n await writeOutput(successEnvelope(data, {}));\n if (fails > 0) process.exit(1);\n return;\n }\n\n const { table } = await import(\"./format.js\");\n info(\"\\nHive MCP Doctor\\n\");\n info(\n table(\n [\"Check\", \"Status\", \"Detail\"],\n checks.map((c) => [c.check, c.status, c.detail]),\n ),\n );\n info(\n `\\n${fails === 0 ? \"All checks passed\" : `${fails} issues found`}${warns ? ` (${warns} warnings)` : \"\"}\\n`,\n );\n\n if (fails > 0) process.exit(1);\n}\n\nexport async function runStatus(): Promise<void> {\n const { SERVER_VERSION } = await import(\"../mcpServer.js\");\n const { resolveApiKey, resolveApiUrl } = await import(\"./config-dir.js\");\n const { getActiveProfile, maskKey } = await import(\"./auth.js\");\n\n const apiUrl = resolveApiUrl();\n const apiKey = resolveApiKey();\n const profile = getActiveProfile();\n\n let apiStatus = \"unknown\";\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 5000);\n const resp = await fetch(`${apiUrl}/ping`, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n apiStatus = resp.ok ? \"healthy\" : `HTTP ${resp.status}`;\n } catch {\n apiStatus = \"unreachable\";\n }\n\n if (shouldOutputJson()) {\n await writeOutput(\n successEnvelope(\n {\n version: SERVER_VERSION,\n profile: profile?.name ?? \"(none)\",\n apiUrl,\n apiStatus,\n hasKey: !!apiKey,\n },\n {},\n ),\n );\n return;\n }\n\n process.stderr.write(`\\nHive CLI v${SERVER_VERSION}\\n`);\n process.stderr.write(\n `Profile: ${profile ? `${profile.name} (${maskKey(profile.apiKey)})` : \"(not logged in)\"}\\n`,\n );\n process.stderr.write(`API: ${apiUrl} (${apiStatus})\\n\\n`);\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/format.ts"],"sourcesContent":["export function pad(str: string, width: number): string {\n return str.length >= width\n ? str.slice(0, width)\n : str + \" \".repeat(width - str.length);\n}\n\nexport function table(headers: string[], rows: string[][]): string {\n const widths = headers.map(\n (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || \"\").length)) + 2,\n );\n const headerLine = headers.map((h, i) => pad(h, widths[i])).join(\"\");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\"\");\n const dataLines = rows.map((row) =>\n row.map((cell, i) => pad(cell, widths[i])).join(\"\"),\n );\n return [headerLine, separator, ...dataLines].join(\"\\n\");\n}\n\n/** Auto-format an array of objects as a fixed-width table. */\nexport function formatTable(data: Record<string, unknown>[]): string {\n if (data.length === 0) return \"(empty result)\";\n\n const maxCols = 8;\n const maxWidth = 40;\n\n const allKeys = [...new Set(data.flatMap(Object.keys))];\n const cols = allKeys.slice(0, maxCols);\n\n const widths = cols.map((col) => {\n const values = data.map((row) => String(row[col] ?? \"\").slice(0, maxWidth));\n return Math.max(col.length, ...values.map((v) => v.length));\n });\n\n const header = cols.map((col, i) => col.padEnd(widths[i])).join(\" \");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\" \");\n const rows = data.map((row) =>\n cols\n .map((col, i) =>\n String(row[col] ?? \"\")\n .slice(0, maxWidth)\n .padEnd(widths[i]),\n )\n .join(\" \"),\n );\n\n return [header, separator, ...rows].join(\"\\n\");\n}\n"],"mappings":";;;;AAAO,SAAS,IAAI,KAAa,OAAuB;AACtD,SAAO,IAAI,UAAU,QACjB,IAAI,MAAM,GAAG,KAAK,IAClB,MAAM,IAAI,OAAO,QAAQ,IAAI,MAAM;AACzC;AAEO,SAAS,MAAM,SAAmB,MAA0B;AACjE,QAAM,SAAS,QAAQ;AAAA,IACrB,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;AAAA,EAC1E;AACA,QAAM,aAAa,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACnE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AAC1D,QAAM,YAAY,KAAK;AAAA,IAAI,CAAC,QAC1B,IAAI,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAAA,EACpD;AACA,SAAO,CAAC,YAAY,WAAW,GAAG,SAAS,EAAE,KAAK,IAAI;AACxD;AAGO,SAAS,YAAY,MAAyC;AACnE,MAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QAAM,UAAU;AAChB,QAAM,WAAW;AAEjB,QAAM,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,OAAO,IAAI,CAAC,CAAC;AACtD,QAAM,OAAO,QAAQ,MAAM,GAAG,OAAO;AAErC,QAAM,SAAS,KAAK,IAAI,CAAC,QAAQ;AAC/B,UAAM,SAAS,KAAK,IAAI,CAAC,QAAQ,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC;AAC1E,WAAO,KAAK,IAAI,IAAI,QAAQ,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAAA,EAC5D,CAAC;AAED,QAAM,SAAS,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI;AACpE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC5D,QAAM,OAAO,KAAK;AAAA,IAAI,CAAC,QACrB,KACG;AAAA,MAAI,CAAC,KAAK,MACT,OAAO,IAAI,GAAG,KAAK,EAAE,EAClB,MAAM,GAAG,QAAQ,EACjB,OAAO,OAAO,CAAC,CAAC;AAAA,IACrB,EACC,KAAK,IAAI;AAAA,EACd;AAEA,SAAO,CAAC,QAAQ,WAAW,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/C;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/init.ts"],"sourcesContent":["import { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\n\nconst DEFAULT_API_URL =\n \"https://mcp.hiveintelligence.xyz\";\n\nconst rl = createInterface({ input: process.stdin, output: process.stdout });\nconst ask = (q: string): Promise<string> =>\n new Promise((resolve) => rl.question(q, resolve));\n\nexport async function runInit(opts: {\n minimal?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n console.log(\"\\nHive MCP Setup\\n\");\n\n const envPath = join(process.cwd(), \".env\");\n const existing: Record<string, string> = {};\n\n if (existsSync(envPath)) {\n const content = readFileSync(envPath, \"utf-8\");\n for (const line of content.split(\"\\n\")) {\n const match = line.match(/^([A-Z_][A-Z0-9_]*)=(.+)$/);\n if (match) existing[match[1]] = match[2];\n }\n console.log(\n `Found existing .env with ${Object.keys(existing).length} keys.\\n`,\n );\n }\n\n let apiKey = existing.HIVE_API_KEY || process.env.HIVE_API_KEY || \"\";\n let apiUrl = existing.HIVE_API_URL || process.env.HIVE_API_URL || \"\";\n\n if (opts.minimal) {\n // Minimal mode: just write defaults without prompts\n if (!apiKey) {\n console.log(\n \"Warning: HIVE_API_KEY not set. Set it manually or re-run without --minimal.\\n\",\n );\n }\n } else {\n // Interactive: ask for API key\n const currentKeyTag = apiKey ? ` [current: ${apiKey.slice(0, 6)}...]` : \"\";\n const keyInput = await ask(\n `HIVE_API_KEY${currentKeyTag}\\n Your Hive Intelligence API key: `,\n );\n if (keyInput.trim()) {\n apiKey = keyInput.trim();\n }\n\n // Ask for API URL (optional)\n const currentUrlTag = apiUrl\n ? ` [current: ${apiUrl}]`\n : ` [default: ${DEFAULT_API_URL}]`;\n const urlInput = await ask(\n `\\nHIVE_API_URL${currentUrlTag}\\n Server URL (press Enter for default): `,\n );\n if (urlInput.trim()) {\n apiUrl = urlInput.trim();\n }\n }\n\n rl.close();\n\n // Update env vars\n if (apiKey) existing.HIVE_API_KEY = apiKey;\n if (apiUrl) existing.HIVE_API_URL = apiUrl;\n\n // Validate the key by hitting the server health endpoint\n if (apiKey) {\n const baseUrl = apiUrl || DEFAULT_API_URL;\n console.log(`\\nValidating API key against ${baseUrl}...`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 10000);\n const resp = await fetch(`${baseUrl}/health`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n console.log(\"API key validated successfully.\\n\");\n } else if (resp.status === 401 || resp.status === 403) {\n console.log(\n `Warning: Server returned ${resp.status} — key may be invalid.\\n`,\n );\n } else {\n console.log(\n `Warning: Server returned ${resp.status} ${resp.statusText}.\\n`,\n );\n }\n } catch {\n console.log(\n `Warning: Could not reach ${baseUrl} — check the URL and try again.\\n`,\n );\n }\n }\n\n // Build env content\n const lines = Object.entries(existing)\n .map(([k, v]) => `${k}=${v}`)\n .join(\"\\n\");\n\n if (opts.dryRun) {\n console.log(\"Dry run — would write to .env:\\n\");\n console.log(lines);\n console.log(\"\");\n return;\n }\n\n writeFileSync(envPath, lines + \"\\n\", \"utf-8\");\n console.log(`.env written to ${envPath}`);\n console.log(\"Run: hive doctor to verify connectivity\\n\");\n}\n"],"mappings":"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","names":[]}
@@ -1,274 +0,0 @@
1
- import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import {
3
- saveProfile
4
- } from "./chunk-RKICZ6DZ.js";
5
- import {
6
- detectClients,
7
- installSkillsForClients
8
- } from "./chunk-IDZD2NVG.js";
9
- import {
10
- printChatGptDesktopInstructions,
11
- writeClaudeCodeUserConfig,
12
- writeClaudeDesktopConfig,
13
- writeCursorConfig,
14
- writeGeminiCliConfig,
15
- writeVscodeConfig,
16
- writeWindsurfConfig
17
- } from "./chunk-2MYMHMBF.js";
18
- import {
19
- browserLogin
20
- } from "./chunk-PGBVNMNZ.js";
21
- import "./chunk-B6G222LS.js";
22
- import {
23
- bold,
24
- dim,
25
- green,
26
- red,
27
- yellow
28
- } from "./chunk-XYBEFFZ3.js";
29
- import {
30
- resolveApiKey,
31
- resolveApiUrl
32
- } from "./chunk-V77LO4RO.js";
33
- import "./chunk-KBVPIZS4.js";
34
-
35
- // src/cli/init-all.ts
36
- function w(line) {
37
- process.stderr.write(line + "\n");
38
- }
39
- function step(label) {
40
- w(`
41
- ${bold(label)}`);
42
- }
43
- function ok(line) {
44
- w(` ${green("\u2713")} ${line}`);
45
- }
46
- function bad(line) {
47
- w(` ${red("\u2717")} ${line}`);
48
- }
49
- function warn(line) {
50
- w(` ${yellow("!")} ${line}`);
51
- }
52
- function info(line) {
53
- w(` ${dim(line)}`);
54
- }
55
- function writeForClient(client) {
56
- const base = {
57
- client: client.id,
58
- name: client.name
59
- };
60
- if (!client.programmable) {
61
- if (client.id === "chatgpt-desktop") {
62
- const inst = printChatGptDesktopInstructions();
63
- return { ...base, ok: false, manual: true, steps: inst.steps };
64
- }
65
- return {
66
- ...base,
67
- ok: false,
68
- manual: true,
69
- error: client.hint || "Manual setup required"
70
- };
71
- }
72
- try {
73
- let result;
74
- switch (client.id) {
75
- case "claude-code":
76
- result = writeClaudeCodeUserConfig();
77
- break;
78
- case "claude-desktop":
79
- result = writeClaudeDesktopConfig();
80
- break;
81
- case "cursor":
82
- result = writeCursorConfig();
83
- break;
84
- case "vscode":
85
- result = writeVscodeConfig();
86
- break;
87
- case "windsurf":
88
- result = writeWindsurfConfig();
89
- break;
90
- case "gemini-cli":
91
- result = writeGeminiCliConfig();
92
- break;
93
- case "chatgpt-desktop":
94
- return {
95
- ...base,
96
- ok: false,
97
- manual: true,
98
- steps: printChatGptDesktopInstructions().steps
99
- };
100
- }
101
- return {
102
- ...base,
103
- ok: result.written,
104
- path: result.path,
105
- error: result.written ? void 0 : "No API key resolved \u2014 auth first or set HIVE_API_KEY"
106
- };
107
- } catch (err) {
108
- return {
109
- ...base,
110
- ok: false,
111
- error: err instanceof Error ? err.message : String(err)
112
- };
113
- }
114
- }
115
- async function verifyConnection() {
116
- const apiKey = resolveApiKey();
117
- const apiUrl = resolveApiUrl();
118
- if (!apiKey) return false;
119
- try {
120
- const controller = new AbortController();
121
- const timer = setTimeout(() => controller.abort(), 8e3);
122
- const res = await fetch(`${apiUrl}/api/v1/tools?limit=1`, {
123
- headers: { Authorization: `Bearer ${apiKey}` },
124
- signal: controller.signal
125
- });
126
- clearTimeout(timer);
127
- return res.ok;
128
- } catch {
129
- return false;
130
- }
131
- }
132
- async function runInitAll(opts = {}) {
133
- const summary = {
134
- authenticated: false,
135
- apiKeyPresent: Boolean(resolveApiKey()),
136
- apiUrl: opts.apiUrl || resolveApiUrl(),
137
- clients: [],
138
- skills: [],
139
- verified: null,
140
- dryRun: Boolean(opts.dryRun)
141
- };
142
- if (!opts.json) {
143
- w(bold("\nHive Intelligence \u2014 Init"));
144
- if (summary.dryRun) info("(dry-run \u2014 nothing will be written)");
145
- }
146
- if (opts.browser) {
147
- step("Authenticating via browser");
148
- if (summary.dryRun) {
149
- info("Would open browser for PKCE auth at /auth/cli");
150
- summary.authenticated = false;
151
- } else {
152
- try {
153
- const result = await browserLogin({
154
- baseUrl: process.env.HIVE_AUTH_BASE_URL || "https://hiveintelligence.xyz",
155
- timeout: 3e5
156
- });
157
- saveProfile("default", result.key, summary.apiUrl);
158
- summary.authenticated = true;
159
- summary.apiKeyPresent = true;
160
- ok(`Signed in as ${result.email || "(email unavailable)"}`);
161
- } catch (err) {
162
- bad(`Browser auth failed: ${err instanceof Error ? err.message : err}`);
163
- if (!summary.apiKeyPresent) {
164
- warn("No saved key \u2014 clients will be configured with placeholder.");
165
- warn("Run `hive auth login --manual` to paste a key by hand.");
166
- }
167
- }
168
- }
169
- } else if (!summary.apiKeyPresent) {
170
- step("Authentication");
171
- warn("No API key in env or saved profile.");
172
- info("Run `hive init --browser` to authenticate via PKCE flow,");
173
- info("or `hive auth login --manual` to paste a key by hand.");
174
- } else {
175
- step("Authentication");
176
- ok("Existing API key resolved (env or saved profile)");
177
- summary.authenticated = true;
178
- }
179
- step("Detecting MCP-capable clients");
180
- const detected = detectClients();
181
- for (const c of detected) {
182
- if (c.detected) {
183
- ok(`${c.name} ${dim("(" + c.configPath + ")")}`);
184
- } else if (!opts.all) {
185
- continue;
186
- } else {
187
- info(`${c.name} \u2014 not detected (${c.hint || "skipped"})`);
188
- }
189
- }
190
- const targets = opts.all ? detected.filter((c) => c.detected && c.programmable) : detected.filter((c) => c.detected && c.programmable);
191
- step("Writing client configs");
192
- for (const client of targets) {
193
- if (summary.dryRun) {
194
- info(`Would write ${client.configPath}`);
195
- summary.clients.push({
196
- client: client.id,
197
- name: client.name,
198
- ok: true,
199
- path: client.configPath
200
- });
201
- continue;
202
- }
203
- const result = writeForClient(client);
204
- summary.clients.push(result);
205
- if (result.ok && result.path) {
206
- ok(`${result.name} ${dim("\u2192 " + result.path)}`);
207
- } else if (result.manual && result.steps) {
208
- warn(`${result.name} \u2014 manual setup required:`);
209
- for (const stepText of result.steps) info(` \u2022 ${stepText}`);
210
- } else {
211
- bad(`${result.name} \u2014 ${result.error || "unknown error"}`);
212
- }
213
- }
214
- const chatgpt = detected.find((c) => c.id === "chatgpt-desktop");
215
- if (chatgpt && !summary.clients.some((c) => c.client === "chatgpt-desktop")) {
216
- const inst = printChatGptDesktopInstructions();
217
- summary.clients.push({
218
- client: "chatgpt-desktop",
219
- name: chatgpt.name,
220
- ok: false,
221
- manual: true,
222
- steps: inst.steps
223
- });
224
- info(`${chatgpt.name} \u2014 manual setup (Settings \u2192 Connectors)`);
225
- }
226
- if (!opts.skipSkills) {
227
- step("Installing skill packs");
228
- if (summary.dryRun) {
229
- info("Would copy agent-skills/packs/ into per-client skills dirs");
230
- } else {
231
- const skillTargets = targets.map((c) => c.id);
232
- const skillResults = installSkillsForClients(skillTargets);
233
- summary.skills = skillResults;
234
- for (const r of skillResults) {
235
- if (r.installed.length > 0) {
236
- ok(
237
- `${r.client}: ${r.installed.length} pack${r.installed.length === 1 ? "" : "s"} ${dim("\u2192 " + r.destination)}`
238
- );
239
- } else if (r.reason) {
240
- info(`${r.client}: ${r.reason}`);
241
- }
242
- }
243
- }
244
- }
245
- if (!opts.skipVerify && !summary.dryRun) {
246
- step("Verifying connection");
247
- const verified = await verifyConnection();
248
- summary.verified = verified;
249
- if (verified) ok("Connection to Hive verified");
250
- else
251
- warn(
252
- "Could not verify \u2014 run `hive doctor` for details (this can be a transient network issue)"
253
- );
254
- }
255
- if (opts.json) {
256
- process.stdout.write(JSON.stringify(summary, null, 2) + "\n");
257
- } else {
258
- w("");
259
- w(bold("Next steps"));
260
- w(dim(" Try a query: ") + "hive market price --ids bitcoin --vs usd");
261
- w(dim(" Open dashboard: ") + "hive open dashboard");
262
- w(dim(" Health check: ") + "hive doctor");
263
- w("");
264
- }
265
- const anyClientOk = summary.clients.some((c) => c.ok);
266
- const browserOnly = opts.browser && !opts.all;
267
- if (browserOnly && summary.authenticated) return 0;
268
- if (!summary.dryRun && !anyClientOk) return 1;
269
- return 0;
270
- }
271
- export {
272
- runInitAll
273
- };
274
- //# sourceMappingURL=init-all-6OWEQALB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/init-all.ts"],"sourcesContent":["/**\n * `hive init` orchestrator — the one-command install path.\n *\n * Modes (driven by flags):\n *\n * hive init — interactive: walks through auth +\n * asks which clients to set up.\n * hive init --browser — runs PKCE browser auth, no client\n * install. Equivalent to\n * `hive auth login`.\n * hive init --all — registers Hive in every detected\n * client. Requires HIVE_API_KEY (or\n * a saved profile from a prior auth).\n * hive init --all --browser — the marketing path. Auth via\n * browser, then register every\n * detected client + copy skill packs.\n *\n * Always idempotent. Re-running just refreshes the configs.\n *\n * Output goes to stderr (status messages) or stdout (--json summary\n * for scripting). Exit code 0 on partial success — the caller sees\n * the per-client outcome in the summary.\n */\n\nimport { browserLogin } from \"./browser-auth.js\";\nimport {\n detectClients,\n type ClientId,\n type ClientInfo,\n} from \"./detect-clients.js\";\nimport {\n printChatGptDesktopInstructions,\n writeClaudeCodeUserConfig,\n writeClaudeDesktopConfig,\n writeCursorConfig,\n writeGeminiCliConfig,\n writeVscodeConfig,\n writeWindsurfConfig,\n} from \"./config.js\";\nimport { resolveApiKey, resolveApiUrl } from \"./config-dir.js\";\nimport { saveProfile } from \"./auth.js\";\nimport { installSkillsForClients, type SkillInstallResult } from \"./skills.js\";\nimport { bold, dim, green, red, yellow } from \"./output.js\";\n\nexport interface InitAllOptions {\n /** Run PKCE browser auth before installing. */\n browser?: boolean;\n /** Configure every detected client (vs. interactive picker). */\n all?: boolean;\n /** Skip skill-pack copy step. */\n skipSkills?: boolean;\n /** Don't run the verification call after install. */\n skipVerify?: boolean;\n /** Print the plan; don't write anything. */\n dryRun?: boolean;\n /** JSON output mode (for scripting). */\n json?: boolean;\n /** Override API URL (for staging / self-hosted). */\n apiUrl?: string;\n}\n\ninterface ConfigWriteResult {\n client: ClientId;\n name: string;\n ok: boolean;\n path?: string;\n manual?: boolean;\n steps?: string[];\n error?: string;\n}\n\ninterface InitSummary {\n authenticated: boolean;\n apiKeyPresent: boolean;\n apiUrl: string;\n clients: ConfigWriteResult[];\n skills: SkillInstallResult[];\n verified: boolean | null;\n dryRun: boolean;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────\n\nfunction w(line: string): void {\n process.stderr.write(line + \"\\n\");\n}\n\nfunction step(label: string): void {\n w(`\\n${bold(label)}`);\n}\n\nfunction ok(line: string): void {\n w(` ${green(\"✓\")} ${line}`);\n}\n\nfunction bad(line: string): void {\n w(` ${red(\"✗\")} ${line}`);\n}\n\nfunction warn(line: string): void {\n w(` ${yellow(\"!\")} ${line}`);\n}\n\nfunction info(line: string): void {\n w(` ${dim(line)}`);\n}\n\n// ─── Per-client config write dispatch ─────────────────────────────────\n\nfunction writeForClient(client: ClientInfo): ConfigWriteResult {\n const base: Pick<ConfigWriteResult, \"client\" | \"name\"> = {\n client: client.id,\n name: client.name,\n };\n\n if (!client.programmable) {\n if (client.id === \"chatgpt-desktop\") {\n const inst = printChatGptDesktopInstructions();\n return { ...base, ok: false, manual: true, steps: inst.steps };\n }\n return {\n ...base,\n ok: false,\n manual: true,\n error: client.hint || \"Manual setup required\",\n };\n }\n\n try {\n let result: { path: string; written: boolean };\n switch (client.id) {\n case \"claude-code\":\n result = writeClaudeCodeUserConfig();\n break;\n case \"claude-desktop\":\n result = writeClaudeDesktopConfig();\n break;\n case \"cursor\":\n result = writeCursorConfig();\n break;\n case \"vscode\":\n result = writeVscodeConfig();\n break;\n case \"windsurf\":\n result = writeWindsurfConfig();\n break;\n case \"gemini-cli\":\n result = writeGeminiCliConfig();\n break;\n case \"chatgpt-desktop\":\n return {\n ...base,\n ok: false,\n manual: true,\n steps: printChatGptDesktopInstructions().steps,\n };\n }\n return {\n ...base,\n ok: result.written,\n path: result.path,\n error: result.written\n ? undefined\n : \"No API key resolved — auth first or set HIVE_API_KEY\",\n };\n } catch (err) {\n return {\n ...base,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\n// ─── Verification ─────────────────────────────────────────────────────\n\nasync function verifyConnection(): Promise<boolean> {\n const apiKey = resolveApiKey();\n const apiUrl = resolveApiUrl();\n if (!apiKey) return false;\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 8000);\n const res = await fetch(`${apiUrl}/api/v1/tools?limit=1`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: controller.signal,\n });\n clearTimeout(timer);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n// ─── Main entrypoint ──────────────────────────────────────────────────\n\nexport async function runInitAll(opts: InitAllOptions = {}): Promise<number> {\n const summary: InitSummary = {\n authenticated: false,\n apiKeyPresent: Boolean(resolveApiKey()),\n apiUrl: opts.apiUrl || resolveApiUrl(),\n clients: [],\n skills: [],\n verified: null,\n dryRun: Boolean(opts.dryRun),\n };\n\n if (!opts.json) {\n w(bold(\"\\nHive Intelligence — Init\"));\n if (summary.dryRun) info(\"(dry-run — nothing will be written)\");\n }\n\n // ─── Step 1: authentication ─────────────────────────────────────────\n if (opts.browser) {\n step(\"Authenticating via browser\");\n if (summary.dryRun) {\n info(\"Would open browser for PKCE auth at /auth/cli\");\n summary.authenticated = false;\n } else {\n try {\n const result = await browserLogin({\n baseUrl:\n process.env.HIVE_AUTH_BASE_URL || \"https://hiveintelligence.xyz\",\n timeout: 300_000,\n });\n saveProfile(\"default\", result.key, summary.apiUrl);\n summary.authenticated = true;\n summary.apiKeyPresent = true;\n ok(`Signed in as ${result.email || \"(email unavailable)\"}`);\n } catch (err) {\n bad(`Browser auth failed: ${err instanceof Error ? err.message : err}`);\n if (!summary.apiKeyPresent) {\n warn(\"No saved key — clients will be configured with placeholder.\");\n warn(\"Run `hive auth login --manual` to paste a key by hand.\");\n }\n }\n }\n } else if (!summary.apiKeyPresent) {\n step(\"Authentication\");\n warn(\"No API key in env or saved profile.\");\n info(\"Run `hive init --browser` to authenticate via PKCE flow,\");\n info(\"or `hive auth login --manual` to paste a key by hand.\");\n } else {\n step(\"Authentication\");\n ok(\"Existing API key resolved (env or saved profile)\");\n summary.authenticated = true;\n }\n\n // ─── Step 2: detect clients ─────────────────────────────────────────\n step(\"Detecting MCP-capable clients\");\n const detected = detectClients();\n for (const c of detected) {\n if (c.detected) {\n ok(`${c.name} ${dim(\"(\" + c.configPath + \")\")}`);\n } else if (!opts.all) {\n // In non-`--all` mode we don't bother showing missing clients;\n // they'd just clutter the output.\n continue;\n } else {\n info(`${c.name} — not detected (${c.hint || \"skipped\"})`);\n }\n }\n\n // ─── Step 3: write client configs ───────────────────────────────────\n const targets: ClientInfo[] = opts.all\n ? detected.filter((c) => c.detected && c.programmable)\n : detected.filter((c) => c.detected && c.programmable); // interactive\n // mode would normally branch here; for the marketing path (`--all\n // --browser`) we just install everywhere we can.\n\n step(\"Writing client configs\");\n for (const client of targets) {\n if (summary.dryRun) {\n info(`Would write ${client.configPath}`);\n summary.clients.push({\n client: client.id,\n name: client.name,\n ok: true,\n path: client.configPath,\n });\n continue;\n }\n const result = writeForClient(client);\n summary.clients.push(result);\n if (result.ok && result.path) {\n ok(`${result.name} ${dim(\"→ \" + result.path)}`);\n } else if (result.manual && result.steps) {\n warn(`${result.name} — manual setup required:`);\n for (const stepText of result.steps) info(` • ${stepText}`);\n } else {\n bad(`${result.name} — ${result.error || \"unknown error\"}`);\n }\n }\n\n // ChatGPT instructions are always printed since it's never programmable.\n const chatgpt = detected.find((c) => c.id === \"chatgpt-desktop\");\n if (chatgpt && !summary.clients.some((c) => c.client === \"chatgpt-desktop\")) {\n const inst = printChatGptDesktopInstructions();\n summary.clients.push({\n client: \"chatgpt-desktop\",\n name: chatgpt.name,\n ok: false,\n manual: true,\n steps: inst.steps,\n });\n info(`${chatgpt.name} — manual setup (Settings → Connectors)`);\n }\n\n // ─── Step 4: skill packs ────────────────────────────────────────────\n if (!opts.skipSkills) {\n step(\"Installing skill packs\");\n if (summary.dryRun) {\n info(\"Would copy agent-skills/packs/ into per-client skills dirs\");\n } else {\n const skillTargets = targets.map((c) => c.id);\n const skillResults = installSkillsForClients(skillTargets);\n summary.skills = skillResults;\n for (const r of skillResults) {\n if (r.installed.length > 0) {\n ok(\n `${r.client}: ${r.installed.length} pack${\n r.installed.length === 1 ? \"\" : \"s\"\n } ${dim(\"→ \" + r.destination)}`,\n );\n } else if (r.reason) {\n info(`${r.client}: ${r.reason}`);\n }\n }\n }\n }\n\n // ─── Step 5: verify ─────────────────────────────────────────────────\n if (!opts.skipVerify && !summary.dryRun) {\n step(\"Verifying connection\");\n const verified = await verifyConnection();\n summary.verified = verified;\n if (verified) ok(\"Connection to Hive verified\");\n else\n warn(\n \"Could not verify — run `hive doctor` for details (this can be a transient network issue)\",\n );\n }\n\n // ─── Output ────────────────────────────────────────────────────────\n if (opts.json) {\n process.stdout.write(JSON.stringify(summary, null, 2) + \"\\n\");\n } else {\n w(\"\");\n w(bold(\"Next steps\"));\n w(dim(\" Try a query: \") + \"hive market price --ids bitcoin --vs usd\");\n w(dim(\" Open dashboard: \") + \"hive open dashboard\");\n w(dim(\" Health check: \") + \"hive doctor\");\n w(\"\");\n }\n\n // Exit code: 0 if at least one client wrote successfully OR the user\n // only asked for `--browser` auth and that succeeded. Otherwise 1.\n const anyClientOk = summary.clients.some((c) => c.ok);\n const browserOnly = opts.browser && !opts.all;\n if (browserOnly && summary.authenticated) return 0;\n if (!summary.dryRun && !anyClientOk) return 1;\n return 0;\n}\n"],"mappings":"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","names":[]}
@@ -1,20 +0,0 @@
1
- import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import {
3
- HiveMCPServer,
4
- SERVER_NAME,
5
- SERVER_VERSION,
6
- createHiveMcpServer,
7
- getSharedClients,
8
- getToolsForScope
9
- } from "./chunk-2X3U4DFK.js";
10
- import "./chunk-B6G222LS.js";
11
- import "./chunk-KBVPIZS4.js";
12
- export {
13
- HiveMCPServer,
14
- SERVER_NAME,
15
- SERVER_VERSION,
16
- createHiveMcpServer,
17
- getSharedClients,
18
- getToolsForScope
19
- };
20
- //# sourceMappingURL=mcpServer-AEX3RQ4U.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/open.ts"],"sourcesContent":["import { exec } from \"node:child_process\";\nimport { platform } from \"node:os\";\n\nconst URLS: Record<string, string> = {\n dashboard: \"https://www.hiveintelligence.xyz/dashboard\",\n docs: \"https://www.hiveintelligence.xyz/quick-start\",\n status: \"https://mcp.hiveintelligence.xyz/status\",\n github: \"https://github.com/sharpe-labs/hive-mcp2\",\n};\n\nfunction openUrl(url: string): void {\n const cmd =\n platform() === \"darwin\"\n ? \"open\"\n : platform() === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n exec(`${cmd} ${url}`, (err) => {\n if (err) process.stderr.write(`Open this URL manually: ${url}\\n`);\n });\n}\n\nexport function runOpen(target?: string): void {\n const key = target ?? \"dashboard\";\n const url = URLS[key];\n if (!url) {\n process.stderr.write(\n `Unknown target: \"${key}\". Available: ${Object.keys(URLS).join(\", \")}\\n`,\n );\n process.exit(2);\n }\n process.stderr.write(`Opening ${url}...\\n`);\n openUrl(url);\n}\n"],"mappings":";;;;AAAA,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,IAAM,OAA+B;AAAA,EACnC,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAEA,SAAS,QAAQ,KAAmB;AAClC,QAAM,MACJ,SAAS,MAAM,WACX,SACA,SAAS,MAAM,UACb,UACA;AACR,OAAK,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC7B,QAAI,IAAK,SAAQ,OAAO,MAAM,2BAA2B,GAAG;AAAA,CAAI;AAAA,EAClE,CAAC;AACH;AAEO,SAAS,QAAQ,QAAuB;AAC7C,QAAM,MAAM,UAAU;AACtB,QAAM,MAAM,KAAK,GAAG;AACpB,MAAI,CAAC,KAAK;AACR,YAAQ,OAAO;AAAA,MACb,oBAAoB,GAAG,iBAAiB,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA,IACtE;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,UAAQ,OAAO,MAAM,WAAW,GAAG;AAAA,CAAO;AAC1C,UAAQ,GAAG;AACb;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/serve.ts"],"sourcesContent":["import dotenv from \"dotenv\";\n\nexport async function startStdio(envFile?: string): Promise<void> {\n dotenv.config({ path: envFile || \".env\", quiet: true });\n // stdout is the JSON-RPC transport channel — redirect console.log to stderr\n console.log = (...args: unknown[]) => console.error(\"[LOG]\", ...args);\n\n const { StdioServerTransport } =\n await import(\"@modelcontextprotocol/sdk/server/stdio.js\");\n const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } =\n await import(\"../mcpServer.js\");\n\n const transport = new StdioServerTransport();\n const mcpServer = createHiveMcpServer({ kind: \"root\" });\n const server = mcpServer.getServer();\n\n let isShuttingDown = false;\n const shutdown = async () => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n const forceTimer = setTimeout(() => process.exit(1), 3_000);\n forceTimer.unref();\n try {\n await server.close();\n } catch {\n // swallow — exiting anyway\n }\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n process.stdin.on(\"end\", shutdown);\n\n await server.connect(transport);\n console.error(\n `Hive MCP stdio server connected (${SERVER_NAME} v${SERVER_VERSION})`,\n );\n}\n\nexport async function startHttp(port: number, envFile?: string): Promise<void> {\n dotenv.config({ path: envFile || \".env\", quiet: true });\n process.env.PORT = String(port);\n const { startHttpServer } = await import(\"../server.js\");\n await startHttpServer();\n}\n"],"mappings":";;;;AAAA,OAAO,YAAY;AAEnB,eAAsB,WAAW,SAAiC;AAChE,SAAO,OAAO,EAAE,MAAM,WAAW,QAAQ,OAAO,KAAK,CAAC;AAEtD,UAAQ,MAAM,IAAI,SAAoB,QAAQ,MAAM,SAAS,GAAG,IAAI;AAEpE,QAAM,EAAE,qBAAqB,IAC3B,MAAM,OAAO,2CAA2C;AAC1D,QAAM,EAAE,qBAAqB,aAAa,eAAe,IACvD,MAAM,OAAO,yBAAiB;AAEhC,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACtD,QAAM,SAAS,UAAU,UAAU;AAEnC,MAAI,iBAAiB;AACrB,QAAM,WAAW,YAAY;AAC3B,QAAI,eAAgB;AACpB,qBAAiB;AACjB,UAAM,aAAa,WAAW,MAAM,QAAQ,KAAK,CAAC,GAAG,GAAK;AAC1D,eAAW,MAAM;AACjB,QAAI;AACF,YAAM,OAAO,MAAM;AAAA,IACrB,QAAQ;AAAA,IAER;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAC9B,UAAQ,MAAM,GAAG,OAAO,QAAQ;AAEhC,QAAM,OAAO,QAAQ,SAAS;AAC9B,UAAQ;AAAA,IACN,oCAAoC,WAAW,KAAK,cAAc;AAAA,EACpE;AACF;AAEA,eAAsB,UAAU,MAAc,SAAiC;AAC7E,SAAO,OAAO,EAAE,MAAM,WAAW,QAAQ,OAAO,KAAK,CAAC;AACtD,UAAQ,IAAI,OAAO,OAAO,IAAI;AAC9B,QAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,aAAc;AACvD,QAAM,gBAAgB;AACxB;","names":[]}