hive-intelligence 1.0.1 → 1.1.2

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 (42) hide show
  1. package/README.md +332 -108
  2. package/build/{auth-PVT4GTAD.js → auth-77MKFFBQ.js} +3 -3
  3. package/build/{auth-PVT4GTAD.js.map → auth-77MKFFBQ.js.map} +1 -1
  4. package/build/{chunk-X7ETBCBP.js → chunk-CGXVV6WR.js} +2 -196
  5. package/build/chunk-CGXVV6WR.js.map +1 -0
  6. package/build/{chunk-FAFUYZQS.js → chunk-CP3FXEQA.js} +6 -5
  7. package/build/chunk-CP3FXEQA.js.map +1 -0
  8. package/build/{chunk-N43VRMVB.js → chunk-DTUDM6HX.js} +2 -2
  9. package/build/{chunk-IWBWPHYY.js → chunk-RRI526CJ.js} +3 -3
  10. package/build/{chunk-IWBWPHYY.js.map → chunk-RRI526CJ.js.map} +1 -1
  11. package/build/cli.js +27 -26
  12. package/build/cli.js.map +1 -1
  13. package/build/{completion-SBTSXTR3.js → completion-J6HFY6PS.js} +2 -2
  14. package/build/{config-2VDB2ZHE.js → config-ANFERP7A.js} +4 -5
  15. package/build/config-ANFERP7A.js.map +1 -0
  16. package/build/{doctor-A76Q4U4K.js → doctor-7WZMCQC7.js} +4 -4
  17. package/build/{errors-HRGXEUZR.js → errors-U6UZWVSD.js} +2 -2
  18. package/build/format-CVLLK6GD.js +75 -0
  19. package/build/format-CVLLK6GD.js.map +1 -0
  20. package/build/{init-YOJK6CH2.js → init-CAVIFVSH.js} +2 -2
  21. package/build/{init-YOJK6CH2.js.map → init-CAVIFVSH.js.map} +1 -1
  22. package/build/{namespace-7SBV4G7R.js → namespace-7JWWBWBL.js} +2 -2
  23. package/build/{output-6TJ3JTZ7.js → output-7PGQWJY2.js} +2 -2
  24. package/build/server.js +1 -209
  25. package/build/server.js.map +1 -1
  26. package/build/{tools-WYOZZHHG.js → tools-VRRMBCZQ.js} +12 -12
  27. package/build/tools-VRRMBCZQ.js.map +1 -0
  28. package/build/{watch-P2QWGFYV.js → watch-A75SVIQ6.js} +3 -3
  29. package/package.json +41 -7
  30. package/build/chunk-FAFUYZQS.js.map +0 -1
  31. package/build/chunk-X7ETBCBP.js.map +0 -1
  32. package/build/config-2VDB2ZHE.js.map +0 -1
  33. package/build/format-4OIUGZKY.js +0 -43
  34. package/build/format-4OIUGZKY.js.map +0 -1
  35. package/build/tools-WYOZZHHG.js.map +0 -1
  36. /package/build/{chunk-N43VRMVB.js.map → chunk-DTUDM6HX.js.map} +0 -0
  37. /package/build/{completion-SBTSXTR3.js.map → completion-J6HFY6PS.js.map} +0 -0
  38. /package/build/{doctor-A76Q4U4K.js.map → doctor-7WZMCQC7.js.map} +0 -0
  39. /package/build/{errors-HRGXEUZR.js.map → errors-U6UZWVSD.js.map} +0 -0
  40. /package/build/{namespace-7SBV4G7R.js.map → namespace-7JWWBWBL.js.map} +0 -0
  41. /package/build/{output-6TJ3JTZ7.js.map → output-7PGQWJY2.js.map} +0 -0
  42. /package/build/{watch-P2QWGFYV.js.map → watch-A75SVIQ6.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  NAMESPACE
4
- } from "./chunk-X7ETBCBP.js";
4
+ } from "./chunk-CGXVV6WR.js";
5
5
  import "./chunk-QMRVH5ZP.js";
6
6
 
7
7
  // src/cli/completion.ts
@@ -271,4 +271,4 @@ export {
271
271
  generateCompletion,
272
272
  installCompletion
273
273
  };
274
- //# sourceMappingURL=completion-SBTSXTR3.js.map
274
+ //# sourceMappingURL=completion-J6HFY6PS.js.map
@@ -9,14 +9,13 @@ function getEnvBlock() {
9
9
  const keys = [
10
10
  "COINGECKO_PRO_API_KEY",
11
11
  "COINGECKO_DEMO_API_KEY",
12
- "DEBANK_API_KEY",
13
12
  "GOPLUS_APP_KEY",
14
13
  "GOPLUS_APP_SECRET",
15
- "LUNARCRUSH_API_KEY",
16
14
  "CODEX_API_KEY",
17
15
  "GOLDRUSH_API_KEY",
18
- "FINNHUB_API_KEY",
19
- "FRED_API_KEY"
16
+ "MORALIS_API_KEY",
17
+ "HELIUS_API_KEY",
18
+ "TENDERLY_ACCESS_KEY"
20
19
  ];
21
20
  for (const key of keys) {
22
21
  if (process.env[key]) envs[key] = process.env[key];
@@ -97,4 +96,4 @@ export {
97
96
  configHttpUrl,
98
97
  configVscode
99
98
  };
100
- //# sourceMappingURL=config-2VDB2ZHE.js.map
99
+ //# sourceMappingURL=config-ANFERP7A.js.map
@@ -0,0 +1 @@
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":[]}
@@ -8,7 +8,7 @@ import {
8
8
  shouldOutputJson,
9
9
  successEnvelope,
10
10
  writeOutput
11
- } from "./chunk-FAFUYZQS.js";
11
+ } from "./chunk-CP3FXEQA.js";
12
12
  import "./chunk-XQJ6PB2L.js";
13
13
  import "./chunk-QMRVH5ZP.js";
14
14
 
@@ -163,7 +163,7 @@ async function runDoctor(opts) {
163
163
  if (fails > 0) process.exit(1);
164
164
  return;
165
165
  }
166
- const { table } = await import("./format-4OIUGZKY.js");
166
+ const { table } = await import("./format-CVLLK6GD.js");
167
167
  info("\nHive MCP Doctor\n");
168
168
  info(
169
169
  table(
@@ -181,7 +181,7 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
181
181
  async function runStatus() {
182
182
  const { CLI_VERSION: SERVER_VERSION } = await import("./version-3TZ3U4IR.js");
183
183
  const { resolveApiKey, resolveApiUrl } = await import("./config-dir-IEOID7Q6.js");
184
- const { getActiveProfile, maskKey } = await import("./auth-PVT4GTAD.js");
184
+ const { getActiveProfile, maskKey } = await import("./auth-77MKFFBQ.js");
185
185
  const apiUrl = resolveApiUrl();
186
186
  const apiKey = resolveApiKey();
187
187
  const profile = getActiveProfile();
@@ -228,4 +228,4 @@ export {
228
228
  runDoctor,
229
229
  runStatus
230
230
  };
231
- //# sourceMappingURL=doctor-A76Q4U4K.js.map
231
+ //# sourceMappingURL=doctor-7WZMCQC7.js.map
@@ -5,7 +5,7 @@ import {
5
5
  ExitCode,
6
6
  classifyError,
7
7
  suggestSimilarTools
8
- } from "./chunk-IWBWPHYY.js";
8
+ } from "./chunk-RRI526CJ.js";
9
9
  import "./chunk-QMRVH5ZP.js";
10
10
  export {
11
11
  CliError,
@@ -14,4 +14,4 @@ export {
14
14
  classifyError,
15
15
  suggestSimilarTools
16
16
  };
17
- //# sourceMappingURL=errors-HRGXEUZR.js.map
17
+ //# sourceMappingURL=errors-U6UZWVSD.js.map
@@ -0,0 +1,75 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -94,9 +94,9 @@ Validating API key against ${baseUrl}...`);
94
94
  }
95
95
  writeFileSync(envPath, lines + "\n", "utf-8");
96
96
  console.log(`.env written to ${envPath}`);
97
- console.log("Run: hive-mcp doctor to verify connectivity\n");
97
+ console.log("Run: hive doctor to verify connectivity\n");
98
98
  }
99
99
  export {
100
100
  runInit
101
101
  };
102
- //# sourceMappingURL=init-YOJK6CH2.js.map
102
+ //# sourceMappingURL=init-CAVIFVSH.js.map
@@ -1 +1 @@
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-mcp doctor to verify connectivity\\n\");\n}\n"],"mappings":"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","names":[]}
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":[]}
@@ -3,11 +3,11 @@ import {
3
3
  NAMESPACE,
4
4
  getAllDomainCommands,
5
5
  resolveCommand
6
- } from "./chunk-X7ETBCBP.js";
6
+ } from "./chunk-CGXVV6WR.js";
7
7
  import "./chunk-QMRVH5ZP.js";
8
8
  export {
9
9
  NAMESPACE,
10
10
  getAllDomainCommands,
11
11
  resolveCommand
12
12
  };
13
- //# sourceMappingURL=namespace-7SBV4G7R.js.map
13
+ //# sourceMappingURL=namespace-7JWWBWBL.js.map
@@ -17,7 +17,7 @@ import {
17
17
  successEnvelope,
18
18
  writeOutput,
19
19
  yellow
20
- } from "./chunk-FAFUYZQS.js";
20
+ } from "./chunk-CP3FXEQA.js";
21
21
  import "./chunk-QMRVH5ZP.js";
22
22
  export {
23
23
  bold,
@@ -38,4 +38,4 @@ export {
38
38
  writeOutput,
39
39
  yellow
40
40
  };
41
- //# sourceMappingURL=output-6TJ3JTZ7.js.map
41
+ //# sourceMappingURL=output-7PGQWJY2.js.map
package/build/server.js CHANGED
@@ -12664,166 +12664,6 @@ var supportedTools = [
12664
12664
  "properties": {}
12665
12665
  }
12666
12666
  },
12667
- {
12668
- "name": "finnhub_get_stock_quote",
12669
- "description": "Execute the finnhub_get_stock_quote tool",
12670
- "inputSchema": {
12671
- "type": "object",
12672
- "properties": {}
12673
- }
12674
- },
12675
- {
12676
- "name": "finnhub_get_stock_candles",
12677
- "description": "Execute the finnhub_get_stock_candles tool",
12678
- "inputSchema": {
12679
- "type": "object",
12680
- "properties": {}
12681
- }
12682
- },
12683
- {
12684
- "name": "finnhub_get_company_profile",
12685
- "description": "Execute the finnhub_get_company_profile tool",
12686
- "inputSchema": {
12687
- "type": "object",
12688
- "properties": {}
12689
- }
12690
- },
12691
- {
12692
- "name": "finnhub_get_basic_financials",
12693
- "description": "Execute the finnhub_get_basic_financials tool",
12694
- "inputSchema": {
12695
- "type": "object",
12696
- "properties": {}
12697
- }
12698
- },
12699
- {
12700
- "name": "finnhub_get_stock_recommendations",
12701
- "description": "Execute the finnhub_get_stock_recommendations tool",
12702
- "inputSchema": {
12703
- "type": "object",
12704
- "properties": {}
12705
- }
12706
- },
12707
- {
12708
- "name": "finnhub_get_price_target",
12709
- "description": "Execute the finnhub_get_price_target tool",
12710
- "inputSchema": {
12711
- "type": "object",
12712
- "properties": {}
12713
- }
12714
- },
12715
- {
12716
- "name": "finnhub_search_symbol",
12717
- "description": "Execute the finnhub_search_symbol tool",
12718
- "inputSchema": {
12719
- "type": "object",
12720
- "properties": {}
12721
- }
12722
- },
12723
- {
12724
- "name": "finnhub_get_market_news",
12725
- "description": "Execute the finnhub_get_market_news tool",
12726
- "inputSchema": {
12727
- "type": "object",
12728
- "properties": {}
12729
- }
12730
- },
12731
- {
12732
- "name": "finnhub_get_forex_candles",
12733
- "description": "Execute the finnhub_get_forex_candles tool",
12734
- "inputSchema": {
12735
- "type": "object",
12736
- "properties": {}
12737
- }
12738
- },
12739
- {
12740
- "name": "finnhub_get_forex_symbols",
12741
- "description": "Execute the finnhub_get_forex_symbols tool",
12742
- "inputSchema": {
12743
- "type": "object",
12744
- "properties": {}
12745
- }
12746
- },
12747
- {
12748
- "name": "finnhub_get_forex_rates",
12749
- "description": "Execute the finnhub_get_forex_rates tool",
12750
- "inputSchema": {
12751
- "type": "object",
12752
- "properties": {}
12753
- }
12754
- },
12755
- {
12756
- "name": "finnhub_get_commodity_candles",
12757
- "description": "Execute the finnhub_get_commodity_candles tool",
12758
- "inputSchema": {
12759
- "type": "object",
12760
- "properties": {}
12761
- }
12762
- },
12763
- {
12764
- "name": "finnhub_get_insider_transactions",
12765
- "description": "Execute the finnhub_get_insider_transactions tool",
12766
- "inputSchema": {
12767
- "type": "object",
12768
- "properties": {}
12769
- }
12770
- },
12771
- {
12772
- "name": "finnhub_get_insider_sentiment",
12773
- "description": "Execute the finnhub_get_insider_sentiment tool",
12774
- "inputSchema": {
12775
- "type": "object",
12776
- "properties": {}
12777
- }
12778
- },
12779
- {
12780
- "name": "finnhub_get_company_news",
12781
- "description": "Execute the finnhub_get_company_news tool",
12782
- "inputSchema": {
12783
- "type": "object",
12784
- "properties": {}
12785
- }
12786
- },
12787
- {
12788
- "name": "finnhub_get_earnings_calendar",
12789
- "description": "Execute the finnhub_get_earnings_calendar tool",
12790
- "inputSchema": {
12791
- "type": "object",
12792
- "properties": {}
12793
- }
12794
- },
12795
- {
12796
- "name": "finnhub_get_ipo_calendar",
12797
- "description": "Execute the finnhub_get_ipo_calendar tool",
12798
- "inputSchema": {
12799
- "type": "object",
12800
- "properties": {}
12801
- }
12802
- },
12803
- {
12804
- "name": "finnhub_get_economic_calendar",
12805
- "description": "Execute the finnhub_get_economic_calendar tool",
12806
- "inputSchema": {
12807
- "type": "object",
12808
- "properties": {}
12809
- }
12810
- },
12811
- {
12812
- "name": "finnhub_get_market_status",
12813
- "description": "Execute the finnhub_get_market_status tool",
12814
- "inputSchema": {
12815
- "type": "object",
12816
- "properties": {}
12817
- }
12818
- },
12819
- {
12820
- "name": "finnhub_get_country_list",
12821
- "description": "Execute the finnhub_get_country_list tool",
12822
- "inputSchema": {
12823
- "type": "object",
12824
- "properties": {}
12825
- }
12826
- },
12827
12667
  {
12828
12668
  "name": "goldrush_get_xyk_pools",
12829
12669
  "description": "Get all XY=K (AMM DEX) pools for a chain using GoldRush (Covalent). Returns pool addresses, token pairs, reserves, and liquidity data.",
@@ -14128,58 +13968,10 @@ var ToolRegistry = [
14128
13968
  "search_tokens"
14129
13969
  ]
14130
13970
  },
14131
- {
14132
- "category": "Stocks & Equities",
14133
- "name": "get_stocks_equities_endpoints",
14134
- "description": "Endpoints for stock market data including real-time quotes, historical OHLCV candles, company profiles, basic financial metrics (P/E, EPS, market cap), analyst recommendations and price targets, symbol search, and market news. Provider guide: Use finnhub_ tools for real-time US stock quotes, historical price data, analyst consensus, company profiles, and financial news.",
14135
- "tools": [
14136
- "finnhub_get_stock_quote",
14137
- "finnhub_get_stock_candles",
14138
- "finnhub_get_company_profile",
14139
- "finnhub_get_basic_financials",
14140
- "finnhub_get_stock_recommendations",
14141
- "finnhub_get_price_target",
14142
- "finnhub_search_symbol",
14143
- "finnhub_get_market_news"
14144
- ]
14145
- },
14146
- {
14147
- "category": "Forex & Commodities",
14148
- "name": "get_forex_commodities_endpoints",
14149
- "description": "Endpoints for foreign exchange rates, currency pair historical candles, available forex symbols, and commodity price data (gold, silver, platinum). Provider guide: Use finnhub_ tools for real-time forex rates, currency pair OHLCV data, and commodity prices via XAU/XAG/XPT pairs.",
14150
- "tools": [
14151
- "finnhub_get_forex_candles",
14152
- "finnhub_get_forex_symbols",
14153
- "finnhub_get_forex_rates",
14154
- "finnhub_get_commodity_candles"
14155
- ]
14156
- },
14157
- {
14158
- "category": "Economic Indicators",
14159
- "name": "get_economic_indicators_endpoints",
14160
- "description": "Endpoints for economic event calendars, market open/close status, and country data. Provider guide: Use finnhub_ tools for upcoming economic events, market status, and country listings.",
14161
- "tools": [
14162
- "finnhub_get_economic_calendar",
14163
- "finnhub_get_market_status",
14164
- "finnhub_get_country_list"
14165
- ]
14166
- },
14167
- {
14168
- "category": "Alternative Data",
14169
- "name": "get_alternative_data_endpoints",
14170
- "description": "Endpoints for alternative financial data including insider (executive) trading transactions, insider sentiment scores, company-specific news, earnings calendar, and IPO calendar. Provider guide: Use finnhub_ tools for SEC-filed insider buy/sell data, insider sentiment (MSPR), upcoming earnings reports, IPO schedules, and company news.",
14171
- "tools": [
14172
- "finnhub_get_insider_transactions",
14173
- "finnhub_get_insider_sentiment",
14174
- "finnhub_get_company_news",
14175
- "finnhub_get_earnings_calendar",
14176
- "finnhub_get_ipo_calendar"
14177
- ]
14178
- },
14179
13971
  {
14180
13972
  "category": "Prediction Markets",
14181
13973
  "name": "get_prediction_markets_endpoints",
14182
- "description": "Endpoints for prediction market data including event/market/trader stats, outcome prices, trade history, bar charts, token holders, and filtering. Provider: Codex (Defined.fi) covering Polymarket and Kalshi.",
13974
+ "description": "Endpoints for prediction market data including event/market/trader stats, outcome prices, trade history, bar charts, token holders, and filtering. Provider: Codex covering Polymarket and Kalshi.",
14183
13975
  "tools": [
14184
13976
  "codex_prediction_market_stats",
14185
13977
  "codex_prediction_event_stats",