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
@@ -1,99 +0,0 @@
1
- import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import "./chunk-QMRVH5ZP.js";
3
-
4
- // src/cli/config.ts
5
- import { homedir, platform } from "os";
6
- import { join } from "path";
7
- function getEnvBlock() {
8
- const envs = {};
9
- const keys = [
10
- "COINGECKO_PRO_API_KEY",
11
- "COINGECKO_DEMO_API_KEY",
12
- "GOPLUS_APP_KEY",
13
- "GOPLUS_APP_SECRET",
14
- "CODEX_API_KEY",
15
- "GOLDRUSH_API_KEY",
16
- "MORALIS_API_KEY",
17
- "HELIUS_API_KEY",
18
- "TENDERLY_ACCESS_KEY"
19
- ];
20
- for (const key of keys) {
21
- if (process.env[key]) envs[key] = process.env[key];
22
- }
23
- return envs;
24
- }
25
- function configClaudeDesktop() {
26
- const env = getEnvBlock();
27
- const config = {
28
- "hive-mcp": {
29
- command: "npx",
30
- args: ["-y", "hive-mcp"],
31
- env
32
- }
33
- };
34
- const p = platform() === "darwin" ? join(
35
- homedir(),
36
- "Library",
37
- "Application Support",
38
- "Claude",
39
- "claude_desktop_config.json"
40
- ) : platform() === "win32" ? join(
41
- homedir(),
42
- "AppData",
43
- "Roaming",
44
- "Claude",
45
- "claude_desktop_config.json"
46
- ) : join(homedir(), ".config", "claude", "claude_desktop_config.json");
47
- console.log(
48
- '\nAdd this to your claude_desktop_config.json under "mcpServers":\n'
49
- );
50
- console.log(`Config file: ${p}
51
- `);
52
- console.log(JSON.stringify(config, null, 2));
53
- }
54
- function configCursor() {
55
- const env = getEnvBlock();
56
- const config = {
57
- mcpServers: {
58
- "hive-mcp": { command: "npx", args: ["-y", "hive-mcp"], env }
59
- }
60
- };
61
- console.log("\nAdd to .cursor/mcp.json:\n");
62
- console.log(JSON.stringify(config, null, 2));
63
- }
64
- function configVscode() {
65
- const env = getEnvBlock();
66
- const config = {
67
- servers: {
68
- "hive-mcp": {
69
- type: "stdio",
70
- command: "npx",
71
- args: ["-y", "hive-mcp"],
72
- env
73
- }
74
- }
75
- };
76
- console.log("\nAdd to .vscode/mcp.json:\n");
77
- console.log(JSON.stringify(config, null, 2));
78
- }
79
- function configClaudeCode() {
80
- const envFlags = Object.entries(getEnvBlock()).map(([k, v]) => `-e ${k}=${v}`).join(" ");
81
- console.log("\nRun this command:\n");
82
- console.log(`claude mcp add ${envFlags} hive-mcp -- npx -y hive-mcp`);
83
- }
84
- function configHttpUrl(url) {
85
- console.log(`
86
- Remote MCP server URL: ${url}/mcp`);
87
- console.log("\nFor Claude Code:");
88
- console.log(` claude mcp add --transport http hive-mcp ${url}/mcp`);
89
- console.log("\nFor clients without HTTP support:");
90
- console.log(` npx mcp-remote ${url}/mcp`);
91
- }
92
- export {
93
- configClaudeCode,
94
- configClaudeDesktop,
95
- configCursor,
96
- configHttpUrl,
97
- configVscode
98
- };
99
- //# sourceMappingURL=config-ANFERP7A.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/config.ts"],"sourcesContent":["import { homedir, platform } from \"node:os\";\nimport { join } from \"node:path\";\n\nfunction getEnvBlock(): Record<string, string> {\n const envs: Record<string, string> = {};\n const keys = [\n \"COINGECKO_PRO_API_KEY\",\n \"COINGECKO_DEMO_API_KEY\",\n \"GOPLUS_APP_KEY\",\n \"GOPLUS_APP_SECRET\",\n \"CODEX_API_KEY\",\n \"GOLDRUSH_API_KEY\",\n \"MORALIS_API_KEY\",\n \"HELIUS_API_KEY\",\n \"TENDERLY_ACCESS_KEY\",\n ];\n for (const key of keys) {\n if (process.env[key]) envs[key] = process.env[key]!;\n }\n return envs;\n}\n\nexport function configClaudeDesktop(): void {\n const env = getEnvBlock();\n const config = {\n \"hive-mcp\": {\n command: \"npx\",\n args: [\"-y\", \"hive-mcp\"],\n env,\n },\n };\n const p =\n 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 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}\n\nexport function configCursor(): void {\n const env = getEnvBlock();\n const config = {\n mcpServers: {\n \"hive-mcp\": { command: \"npx\", args: [\"-y\", \"hive-mcp\"], env },\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 env = getEnvBlock();\n const config = {\n servers: {\n \"hive-mcp\": {\n type: \"stdio\",\n command: \"npx\",\n args: [\"-y\", \"hive-mcp\"],\n env,\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 envFlags = Object.entries(getEnvBlock())\n .map(([k, v]) => `-e ${k}=${v}`)\n .join(\" \");\n console.log(\"\\nRun this command:\\n\");\n console.log(`claude mcp add ${envFlags} hive-mcp -- npx -y hive-mcp`);\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(` claude mcp add --transport http hive-mcp ${url}/mcp`);\n console.log(\"\\nFor clients without HTTP support:\");\n console.log(` npx mcp-remote ${url}/mcp`);\n}\n"],"mappings":";;;;AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,YAAY;AAErB,SAAS,cAAsC;AAC7C,QAAM,OAA+B,CAAC;AACtC,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,aAAW,OAAO,MAAM;AACtB,QAAI,QAAQ,IAAI,GAAG,EAAG,MAAK,GAAG,IAAI,QAAQ,IAAI,GAAG;AAAA,EACnD;AACA,SAAO;AACT;AAEO,SAAS,sBAA4B;AAC1C,QAAM,MAAM,YAAY;AACxB,QAAM,SAAS;AAAA,IACb,YAAY;AAAA,MACV,SAAS;AAAA,MACT,MAAM,CAAC,MAAM,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACA,QAAM,IACJ,SAAS,MAAM,WACX;AAAA,IACE,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA,SAAS,MAAM,UACb;AAAA,IACE,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA,KAAK,QAAQ,GAAG,WAAW,UAAU,4BAA4B;AACzE,UAAQ;AAAA,IACN;AAAA,EACF;AACA,UAAQ,IAAI,gBAAgB,CAAC;AAAA,CAAI;AACjC,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEO,SAAS,eAAqB;AACnC,QAAM,MAAM,YAAY;AACxB,QAAM,SAAS;AAAA,IACb,YAAY;AAAA,MACV,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI;AAAA,IAC9D;AAAA,EACF;AACA,UAAQ,IAAI,8BAA8B;AAC1C,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEO,SAAS,eAAqB;AACnC,QAAM,MAAM,YAAY;AACxB,QAAM,SAAS;AAAA,IACb,SAAS;AAAA,MACP,YAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM,CAAC,MAAM,UAAU;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,UAAQ,IAAI,8BAA8B;AAC1C,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEO,SAAS,mBAAyB;AACvC,QAAM,WAAW,OAAO,QAAQ,YAAY,CAAC,EAC1C,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAC9B,KAAK,GAAG;AACX,UAAQ,IAAI,uBAAuB;AACnC,UAAQ,IAAI,kBAAkB,QAAQ,8BAA8B;AACtE;AAEO,SAAS,cAAc,KAAmB;AAC/C,UAAQ,IAAI;AAAA,yBAA4B,GAAG,MAAM;AACjD,UAAQ,IAAI,oBAAoB;AAChC,UAAQ,IAAI,8CAA8C,GAAG,MAAM;AACnE,UAAQ,IAAI,qCAAqC;AACjD,UAAQ,IAAI,oBAAoB,GAAG,MAAM;AAC3C;","names":[]}
@@ -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 (required)\n const apiKey = process.env.HIVE_API_KEY;\n checks.push({\n check: \"HIVE_API_KEY\",\n status: apiKey ? \"PASS\" : \"FAIL\",\n detail: apiKey\n ? `Set (${apiKey.slice(0, 4)}...)`\n : \"Not set — required. Get a key at https://hiveintelligence.xyz\",\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 === \"healthy\" ||\n status === \"passed\" ||\n status === \"partial\";\n checks.push({\n check: `Probe: ${name}`,\n status: pass ? \"PASS\" : status === \"inactive\" ? \"SKIP\" : \"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 { CLI_VERSION: SERVER_VERSION } = await import(\"../version.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":";;;;;;;;;;;;;;;AASA,IAAM,kBACJ;AAEF,SAAS,YAAoB;AAC3B,SAAO,QAAQ,IAAI,gBAAgB;AACrC;AAEA,eAAsB,UAAU,MAA0C;AACxE,QAAM,SAA8D,CAAC;AAGrE,QAAM,SAAS,QAAQ,IAAI;AAC3B,SAAO,KAAK;AAAA,IACV,OAAO;AAAA,IACP,QAAQ,SAAS,SAAS;AAAA,IAC1B,QAAQ,SACJ,QAAQ,OAAO,MAAM,GAAG,CAAC,CAAC,SAC1B;AAAA,EACN,CAAC;AAGD,QAAM,SAAS,QAAQ,IAAI;AAC3B,SAAO,KAAK;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ,SAAS,WAAW,MAAM,KAAK,YAAY,eAAe;AAAA,EACpE,CAAC;AAGD,QAAM,YAAY,GAAG,UAAU,CAAC;AAChC,QAAM,OAAO,SAAS,EAAE;AACxB,MAAI;AACF,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,GAAK;AACxD,UAAM,OAAO,MAAM,MAAM,WAAW;AAAA,MAClC,SAAS,SAAS,EAAE,eAAe,UAAU,MAAM,GAAG,IAAI,CAAC;AAAA,MAC3D,QAAQ,WAAW;AAAA,IACrB,CAAC;AACD,iBAAa,KAAK;AAElB,QAAI,KAAK,IAAI;AACX,YAAM,OAAO,MAAM,KAAK,KAAK,EAAE,MAAM,MAAM,IAAI;AAC/C,YAAM,eACJ,QAAQ,OAAO,SAAS,YAAY,YAAY,OAC5C,OAAQ,KAAiC,MAAM,IAC/C;AACN,aAAO,KAAK;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,GAAG,KAAK,MAAM,WAAM,YAAY;AAAA,MAC1C,CAAC;AAAA,IACH,OAAO;AACL,aAAO,KAAK;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,QAAQ,KAAK,MAAM,IAAI,KAAK,UAAU;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,UAAM,YAAY,eAAe,SAAS,IAAI,SAAS;AACvD,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,YACJ,yBAAyB,UAAU,CAAC,KACpC,sBAAsB,GAAG;AAAA,IAC/B,CAAC;AAAA,EACH;AAGA;AACE,UAAM,0BAA0B;AAChC,QAAI;AACF,YAAM,UAAU,MAAM,iBAAiB;AACvC,YAAM,YAAY,QAAQ;AAG1B,YAAM,YAAY,MAAM,QAAQ,SAAS,IACrC,UAAU,SACV,OAAO,cAAc,YACnB,cAAc,QACd,gBAAgB,YACf,UAAqC,aACtC;AACN,UAAI,QAAQ,IAAI;AACd,eAAO,KAAK;AAAA,UACV,OAAO;AAAA,UACP,QAAQ,YAAY,IAAI,SAAS;AAAA,UACjC,QAAQ,GAAG,SAAS;AAAA,QACtB,CAAC;AAAA,MACH,OAAO;AACL,cAAM,SACJ,QAAQ,SACR,OAAO,QAAQ,UAAU,YACzB,aAAa,QAAQ,QACjB,OAAO,QAAQ,MAAM,OAAO,IAC5B;AACN,eAAO,KAAK;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,aAAO,KAAK;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,oBAAoB,GAAG;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF;AAGA,MAAI,KAAK,OAAO;AACd,UAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,UAAM,cAAc,QAAQ,EAAE;AAC9B,QAAI;AACF,YAAM,aAAa,IAAI,gBAAgB;AACvC,YAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,GAAK;AACxD,YAAM,OAAO,MAAM,MAAM,UAAU;AAAA,QACjC,SAAS;AAAA,UACP,GAAI,SAAS,EAAE,eAAe,UAAU,MAAM,GAAG,IAAI,CAAC;AAAA,QACxD;AAAA,QACA,QAAQ,WAAW;AAAA,MACrB,CAAC;AACD,mBAAa,KAAK;AAElB,UAAI,KAAK,IAAI;AACX,cAAM,OAAO,MAAM,KAAK,KAAK,EAAE,MAAM,MAAM,IAAI;AAC/C,YAAI,QAAQ,OAAO,SAAS,YAAY,eAAe,MAAM;AAC3D,gBAAM,YAAa,KAAiC;AACpD,cAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,uBAAW,KAAK,WAAW;AACzB,oBAAM,OAAO;AACb,oBAAM,OAAO,OAAO,KAAK,QAAQ,KAAK,YAAY,SAAS;AAC3D,oBAAM,SAAS,OAAO,KAAK,UAAU,SAAS;AAC9C,oBAAM,OACJ,WAAW,aACX,WAAW,YACX,WAAW;AACb,qBAAO,KAAK;AAAA,gBACV,OAAO,UAAU,IAAI;AAAA,gBACrB,QAAQ,OAAO,SAAS,WAAW,aAAa,SAAS;AAAA,gBACzD,QAAQ;AAAA,cACV,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,OAAO;AACL,iBAAO,KAAK;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ,oBAAoB,KAAK,MAAM;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,eAAO,KAAK;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ,QAAQ,KAAK,MAAM,IAAI,KAAK,UAAU;AAAA,QAChD,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,aAAO,KAAK;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,WAAW,GAAG;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AACxD,QAAM,QAAQ,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AACxD,QAAM,OAAO;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE;AAAA,MAChD,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,iBAAiB,GAAG;AACtB,UAAM,YAAY,gBAAgB,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAI,QAAQ,EAAG,SAAQ,KAAK,CAAC;AAC7B;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,sBAAa;AAC5C,OAAK,qBAAqB;AAC1B;AAAA,IACE;AAAA,MACE,CAAC,SAAS,UAAU,QAAQ;AAAA,MAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AAAA,IACjD;AAAA,EACF;AACA;AAAA,IACE;AAAA,EAAK,UAAU,IAAI,sBAAsB,GAAG,KAAK,eAAe,GAAG,QAAQ,KAAK,KAAK,eAAe,EAAE;AAAA;AAAA,EACxG;AAEA,MAAI,QAAQ,EAAG,SAAQ,KAAK,CAAC;AAC/B;AAEA,eAAsB,YAA2B;AAC/C,QAAM,EAAE,aAAa,eAAe,IAAI,MAAM,OAAO,uBAAe;AACpE,QAAM,EAAE,eAAe,cAAc,IAAI,MAAM,OAAO,0BAAiB;AACvE,QAAM,EAAE,kBAAkB,QAAQ,IAAI,MAAM,OAAO,oBAAW;AAE9D,QAAM,SAAS,cAAc;AAC7B,QAAM,SAAS,cAAc;AAC7B,QAAM,UAAU,iBAAiB;AAEjC,MAAI,YAAY;AAChB,MAAI;AACF,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,GAAI;AACvD,UAAM,OAAO,MAAM,MAAM,GAAG,MAAM,SAAS;AAAA,MACzC,SAAS,SAAS,EAAE,eAAe,UAAU,MAAM,GAAG,IAAI,CAAC;AAAA,MAC3D,QAAQ,WAAW;AAAA,IACrB,CAAC;AACD,iBAAa,KAAK;AAClB,gBAAY,KAAK,KAAK,YAAY,QAAQ,KAAK,MAAM;AAAA,EACvD,QAAQ;AACN,gBAAY;AAAA,EACd;AAEA,MAAI,iBAAiB,GAAG;AACtB,UAAM;AAAA,MACJ;AAAA,QACE;AAAA,UACE,SAAS;AAAA,UACT,SAAS,SAAS,QAAQ;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,QAAQ,CAAC,CAAC;AAAA,QACZ;AAAA,QACA,CAAC;AAAA,MACH;AAAA,IACF;AACA;AAAA,EACF;AAEA,UAAQ,OAAO,MAAM;AAAA,YAAe,cAAc;AAAA,CAAI;AACtD,UAAQ,OAAO;AAAA,IACb,YAAY,UAAU,GAAG,QAAQ,IAAI,KAAK,QAAQ,QAAQ,MAAM,CAAC,MAAM,iBAAiB;AAAA;AAAA,EAC1F;AACA,UAAQ,OAAO,MAAM,YAAY,MAAM,KAAK,SAAS;AAAA;AAAA,CAAO;AAC9D;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,75 +0,0 @@
1
- import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import "./chunk-QMRVH5ZP.js";
3
-
4
- // src/cli/format.ts
5
- function pad(str, width) {
6
- return str.length >= width ? str.slice(0, width) : str + " ".repeat(width - str.length);
7
- }
8
- function table(headers, rows) {
9
- const widths = headers.map(
10
- (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || "").length)) + 2
11
- );
12
- const headerLine = headers.map((h, i) => pad(h, widths[i])).join("");
13
- const separator = widths.map((w) => "-".repeat(w)).join("");
14
- const dataLines = rows.map(
15
- (row) => row.map((cell, i) => pad(cell, widths[i])).join("")
16
- );
17
- return [headerLine, separator, ...dataLines].join("\n");
18
- }
19
- var LABEL_KEYS = ["name", "title", "slug", "symbol", "label", "id"];
20
- function pickLabel(obj) {
21
- for (const k of LABEL_KEYS) {
22
- const v = obj[k];
23
- if (typeof v === "string" && v) return v;
24
- if (typeof v === "number" || typeof v === "boolean") return String(v);
25
- }
26
- return null;
27
- }
28
- function formatCell(v) {
29
- if (v == null) return "";
30
- if (typeof v === "string") return v;
31
- if (typeof v === "number" || typeof v === "boolean") return String(v);
32
- if (Array.isArray(v)) {
33
- if (v.length === 0) return "";
34
- if (v.every((x) => x == null || typeof x !== "object")) {
35
- return v.map((x) => x == null ? "" : String(x)).join(", ");
36
- }
37
- const labels = v.map(
38
- (x) => x && typeof x === "object" ? pickLabel(x) : null
39
- ).filter((x) => x !== null);
40
- if (labels.length === v.length) return labels.join(", ");
41
- return `[${v.length} items]`;
42
- }
43
- if (typeof v === "object") {
44
- const label = pickLabel(v);
45
- if (label) return label;
46
- return `{${Object.keys(v).length} keys}`;
47
- }
48
- return String(v);
49
- }
50
- function formatTable(data) {
51
- if (data.length === 0) return "(empty result)";
52
- const maxCols = 8;
53
- const maxWidth = 40;
54
- const allKeys = [...new Set(data.flatMap(Object.keys))];
55
- const cols = allKeys.slice(0, maxCols);
56
- const cells = data.map(
57
- (row) => cols.map((col) => formatCell(row[col]).slice(0, maxWidth))
58
- );
59
- const widths = cols.map(
60
- (col, i) => Math.max(col.length, ...cells.map((r) => r[i].length))
61
- );
62
- const header = cols.map((col, i) => col.padEnd(widths[i])).join(" ");
63
- const separator = widths.map((w) => "-".repeat(w)).join(" ");
64
- const rows = cells.map(
65
- (row) => row.map((cell, i) => cell.padEnd(widths[i])).join(" ")
66
- );
67
- return [header, separator, ...rows].join("\n");
68
- }
69
- export {
70
- formatCell,
71
- formatTable,
72
- pad,
73
- table
74
- };
75
- //# sourceMappingURL=format-CVLLK6GD.js.map
@@ -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\nconst LABEL_KEYS = [\"name\", \"title\", \"slug\", \"symbol\", \"label\", \"id\"];\n\nfunction pickLabel(obj: Record<string, unknown>): string | null {\n for (const k of LABEL_KEYS) {\n const v = obj[k];\n if (typeof v === \"string\" && v) return v;\n if (typeof v === \"number\" || typeof v === \"boolean\") return String(v);\n }\n return null;\n}\n\n/** Render any value to a compact cell string — avoids \"[object Object]\". */\nexport function formatCell(v: unknown): string {\n if (v == null) return \"\";\n if (typeof v === \"string\") return v;\n if (typeof v === \"number\" || typeof v === \"boolean\") return String(v);\n if (Array.isArray(v)) {\n if (v.length === 0) return \"\";\n if (v.every((x) => x == null || typeof x !== \"object\")) {\n return v.map((x) => (x == null ? \"\" : String(x))).join(\", \");\n }\n const labels = v\n .map((x) =>\n x && typeof x === \"object\"\n ? pickLabel(x as Record<string, unknown>)\n : null,\n )\n .filter((x): x is string => x !== null);\n if (labels.length === v.length) return labels.join(\", \");\n return `[${v.length} items]`;\n }\n if (typeof v === \"object\") {\n const label = pickLabel(v as Record<string, unknown>);\n if (label) return label;\n return `{${Object.keys(v as object).length} keys}`;\n }\n return String(v);\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 cells = data.map((row) =>\n cols.map((col) => formatCell(row[col]).slice(0, maxWidth)),\n );\n\n const widths = cols.map((col, i) =>\n Math.max(col.length, ...cells.map((r) => r[i].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 = cells.map((row) =>\n row.map((cell, i) => cell.padEnd(widths[i])).join(\" \"),\n );\n\n return [header, separator, ...rows].join(\"\\n\");\n}\n"],"mappings":"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","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 +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://hiveintelligence.xyz\",\n docs: \"https://docs.hiveintelligence.xyz\",\n status: \"https://status.hiveintelligence.xyz\",\n github: \"https://github.com/hive-intelligence/hive-mcp\",\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":[]}