hive-intelligence 0.3.1 → 0.4.1

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.
@@ -39,7 +39,7 @@ async function listTools(opts) {
39
39
  tools = tools.filter((t) => t.name.toLowerCase().startsWith(prefix + "_"));
40
40
  }
41
41
  if (opts.category) {
42
- const { NAMESPACE } = await import("./namespace-GWTS6U6J.js");
42
+ const { NAMESPACE } = await import("./namespace-7SBV4G7R.js");
43
43
  const cat = opts.category.toLowerCase();
44
44
  const ns = NAMESPACE.find(
45
45
  (d) => d.name === cat || d.description.toLowerCase().includes(cat)
@@ -175,4 +175,4 @@ export {
175
175
  searchTools,
176
176
  toolInfo
177
177
  };
178
- //# sourceMappingURL=tools-4W3GGCUC.js.map
178
+ //# sourceMappingURL=tools-WYOZZHHG.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hive-intelligence",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "MCP server and CLI for Hive Intelligence — crypto, DeFi, stocks, forex, and macro data",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/namespace.ts"],"sourcesContent":["interface SubCommand {\n name: string;\n description: string;\n tool: string;\n args?: Record<\n string,\n { flag: string; description: string; required?: boolean }\n >;\n}\n\ninterface DomainCommand {\n name: string;\n description: string;\n commands: SubCommand[];\n}\n\nexport type { SubCommand, DomainCommand };\n\nexport const NAMESPACE: DomainCommand[] = [\n {\n name: \"market\",\n description: \"Crypto market data — prices, charts, rankings, stablecoins\",\n commands: [\n {\n name: \"price\",\n description: \"Get token price\",\n tool: \"get_price\",\n args: {\n ids: {\n flag: \"--ids <tokens>\",\n description: \"Token IDs (comma-separated)\",\n required: true,\n },\n vs_currencies: {\n flag: \"--vs <currencies>\",\n description: \"Target currencies\",\n required: true,\n },\n },\n },\n {\n name: \"top\",\n description: \"Top coins by market cap\",\n tool: \"get_coins_market_data\",\n args: {\n vs_currency: {\n flag: \"--vs <currency>\",\n description: \"Quote currency\",\n required: true,\n },\n per_page: { flag: \"--limit <n>\", description: \"Number of results\" },\n },\n },\n { name: \"trending\", description: \"Trending coins\", tool: \"get_trending\" },\n {\n name: \"global\",\n description: \"Global market stats\",\n tool: \"get_global_stats\",\n },\n {\n name: \"ohlc\",\n description: \"OHLC candle data\",\n tool: \"get_coin_ohlc\",\n args: {\n id: { flag: \"--id <coin>\", description: \"Coin ID\", required: true },\n vs_currency: {\n flag: \"--vs <currency>\",\n description: \"Quote currency (default: usd)\",\n },\n days: { flag: \"--days <n>\", description: \"Number of days\" },\n },\n },\n {\n name: \"chart\",\n description: \"Price chart data\",\n tool: \"get_coin_market_chart_range\",\n args: {\n id: { flag: \"--id <coin>\", description: \"Coin ID\", required: true },\n vs_currency: {\n flag: \"--vs <currency>\",\n description: \"Quote currency (default: usd)\",\n },\n from: {\n flag: \"--from <timestamp>\",\n description: \"Start UNIX timestamp\",\n required: true,\n },\n to: {\n flag: \"--to <timestamp>\",\n description: \"End UNIX timestamp\",\n required: true,\n },\n },\n },\n {\n name: \"gainers\",\n description: \"Top gainers and losers\",\n tool: \"get_gainers_losers\",\n args: {\n vs_currency: {\n flag: \"--vs <currency>\",\n description: \"Quote currency (default: usd)\",\n },\n },\n },\n {\n name: \"gas\",\n description: \"Gas prices by chain\",\n tool: \"goldrush_get_gas_prices\",\n args: {\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"defi\",\n description: \"DeFi protocol analytics — TVL, fees, yields, bridges\",\n commands: [\n {\n name: \"tvl\",\n description: \"Protocol TVL\",\n tool: \"get_protocol_tvl\",\n args: {\n protocol: {\n flag: \"--protocol <name>\",\n description: \"Protocol slug\",\n required: true,\n },\n },\n },\n {\n name: \"protocols\",\n description: \"All DeFi protocols\",\n tool: \"get_protocols\",\n },\n {\n name: \"fees\",\n description: \"Protocol fee data\",\n tool: \"get_protocol_fees\",\n args: {\n protocol: {\n flag: \"--protocol <name>\",\n description: \"Protocol slug\",\n required: true,\n },\n },\n },\n {\n name: \"yields\",\n description: \"Yield farming pools\",\n tool: \"get_yield_pools\",\n },\n { name: \"chains\", description: \"Chain TVL rankings\", tool: \"get_chains\" },\n {\n name: \"bridges\",\n description: \"Cross-chain bridges\",\n tool: \"defillama_get_bridges\",\n },\n ],\n },\n {\n name: \"portfolio\",\n description: \"Wallet portfolios — balances, DeFi positions, NFTs, history\",\n commands: [\n {\n name: \"balance\",\n description: \"Wallet total balance\",\n tool: \"get_wallet_balance\",\n args: {\n id: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n },\n },\n {\n name: \"tokens\",\n description: \"Token holdings\",\n tool: \"get_wallet_token_balances\",\n args: {\n id: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n },\n },\n {\n name: \"positions\",\n description: \"DeFi positions\",\n tool: \"get_wallet_defi_positions\",\n args: {\n id: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n },\n },\n {\n name: \"nfts\",\n description: \"NFT holdings\",\n tool: \"get_wallet_nft_collections\",\n args: {\n id: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n },\n },\n {\n name: \"history\",\n description: \"Portfolio value history\",\n tool: \"goldrush_get_portfolio_history\",\n args: {\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"security\",\n description: \"Token and contract security — scans, approvals, simulations\",\n commands: [\n {\n name: \"scan\",\n description: \"Token security analysis\",\n tool: \"get_token_security\",\n args: {\n chain_id: {\n flag: \"--chain <id>\",\n description: \"Chain ID (1=ETH, 56=BSC)\",\n required: true,\n },\n contract_addresses: {\n flag: \"--address <addr>\",\n description: \"Token contract\",\n required: true,\n },\n },\n },\n {\n name: \"approve\",\n description: \"Audit token approvals\",\n tool: \"check_approval_security\",\n args: {\n chain_id: {\n flag: \"--chain <id>\",\n description: \"Chain ID\",\n required: true,\n },\n contract_addresses: {\n flag: \"--address <addr>\",\n description: \"Contract address\",\n required: true,\n },\n },\n },\n {\n name: \"simulate\",\n description: \"Simulate a transaction\",\n tool: \"simulate_evm_transaction\",\n args: {\n chain_id: {\n flag: \"--chain <id>\",\n description: \"Chain ID (1=ETH)\",\n required: true,\n },\n from: {\n flag: \"--from <addr>\",\n description: \"Sender address\",\n required: true,\n },\n to: {\n flag: \"--to <addr>\",\n description: \"Contract/recipient address\",\n required: true,\n },\n data: {\n flag: \"--data <hex>\",\n description: \"Transaction calldata (hex)\",\n },\n value: { flag: \"--value <wei>\", description: \"Value in wei\" },\n },\n },\n {\n name: \"rugpull\",\n description: \"Detect rug pull indicators\",\n tool: \"detect_rugpull\",\n args: {\n chain_id: {\n flag: \"--chain <id>\",\n description: \"Chain ID\",\n required: true,\n },\n contract_addresses: {\n flag: \"--address <addr>\",\n description: \"Contract\",\n required: true,\n },\n },\n },\n {\n name: \"hacks\",\n description: \"Recent DeFi hacks\",\n tool: \"defillama_get_hacks\",\n },\n ],\n },\n {\n name: \"stocks\",\n description:\n \"Stock market data — quotes, candles, financials, analyst ratings\",\n commands: [\n {\n name: \"quote\",\n description: \"Real-time stock quote\",\n tool: \"finnhub_get_stock_quote\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker (e.g. AAPL)\",\n required: true,\n },\n },\n },\n {\n name: \"candles\",\n description: \"Historical OHLCV\",\n tool: \"finnhub_get_stock_candles\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n resolution: {\n flag: \"--resolution <r>\",\n description: \"Timeframe (1,5,15,30,60,D,W,M)\",\n required: true,\n },\n from: {\n flag: \"--from <timestamp>\",\n description: \"Start UNIX timestamp\",\n required: true,\n },\n to: {\n flag: \"--to <timestamp>\",\n description: \"End UNIX timestamp\",\n required: true,\n },\n },\n },\n {\n name: \"profile\",\n description: \"Company profile\",\n tool: \"finnhub_get_company_profile\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n },\n },\n {\n name: \"financials\",\n description: \"Key financial metrics\",\n tool: \"finnhub_get_basic_financials\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n },\n },\n {\n name: \"recommendations\",\n description: \"Analyst recommendations\",\n tool: \"finnhub_get_stock_recommendations\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n },\n },\n {\n name: \"news\",\n description: \"Company news\",\n tool: \"finnhub_get_company_news\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n from: {\n flag: \"--from <date>\",\n description: \"From date (YYYY-MM-DD)\",\n required: true,\n },\n to: {\n flag: \"--to <date>\",\n description: \"To date (YYYY-MM-DD)\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"macro\",\n description:\n \"Macroeconomic indicators — GDP, CPI, rates, employment, calendar\",\n commands: [\n { name: \"gdp\", description: \"US GDP\", tool: \"fred_get_gdp\" },\n {\n name: \"cpi\",\n description: \"CPI inflation rate\",\n tool: \"fred_get_inflation\",\n },\n {\n name: \"fed-rate\",\n description: \"Federal funds rate\",\n tool: \"fred_get_fed_rate\",\n },\n {\n name: \"treasury\",\n description: \"10-year treasury yield\",\n tool: \"fred_get_treasury_10y\",\n },\n {\n name: \"unemployment\",\n description: \"Unemployment rate\",\n tool: \"fred_get_unemployment\",\n },\n { name: \"sp500\", description: \"S&P 500 index\", tool: \"fred_get_sp500\" },\n {\n name: \"calendar\",\n description: \"Economic event calendar\",\n tool: \"finnhub_get_economic_calendar\",\n },\n {\n name: \"search\",\n description: \"Search FRED series\",\n tool: \"fred_search_series\",\n args: {\n search_text: {\n flag: \"--query <text>\",\n description: \"Search term\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"social\",\n description:\n \"Social media analytics — sentiment, influencers, trending topics\",\n commands: [\n {\n name: \"trending\",\n description: \"Trending topics\",\n tool: \"get_trending_topics\",\n },\n {\n name: \"metrics\",\n description: \"Topic engagement metrics\",\n tool: \"get_topic_metrics\",\n args: {\n topic: {\n flag: \"--topic <name>\",\n description: \"Topic or coin name\",\n required: true,\n },\n },\n },\n {\n name: \"creators\",\n description: \"Top content creators\",\n tool: \"get_topic_creators\",\n args: {\n topic: {\n flag: \"--topic <name>\",\n description: \"Topic or coin name\",\n required: true,\n },\n },\n },\n {\n name: \"posts\",\n description: \"Social media posts\",\n tool: \"get_topic_posts\",\n args: {\n topic: {\n flag: \"--topic <name>\",\n description: \"Topic or coin name\",\n required: true,\n },\n },\n },\n {\n name: \"news\",\n description: \"Topic news articles\",\n tool: \"get_topic_news\",\n args: {\n topic: {\n flag: \"--topic <name>\",\n description: \"Topic or coin name\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"exchange\",\n description:\n \"Centralized exchange data — tickers, orderbooks, trades, funding\",\n commands: [\n {\n name: \"ticker\",\n description: \"Exchange ticker\",\n tool: \"get_ticker\",\n args: {\n exchange: {\n flag: \"--exchange <name>\",\n description: \"Exchange (binance, coinbase)\",\n required: true,\n },\n symbol: {\n flag: \"--symbol <pair>\",\n description: \"Trading pair (BTC/USDT)\",\n required: true,\n },\n },\n },\n {\n name: \"orderbook\",\n description: \"Order book depth\",\n tool: \"get_orderbook\",\n args: {\n exchange: {\n flag: \"--exchange <name>\",\n description: \"Exchange\",\n required: true,\n },\n symbol: {\n flag: \"--symbol <pair>\",\n description: \"Trading pair\",\n required: true,\n },\n },\n },\n {\n name: \"trades\",\n description: \"Recent trades\",\n tool: \"get_recent_trades\",\n args: {\n exchange: {\n flag: \"--exchange <name>\",\n description: \"Exchange\",\n required: true,\n },\n symbol: {\n flag: \"--symbol <pair>\",\n description: \"Trading pair\",\n required: true,\n },\n },\n },\n {\n name: \"funding\",\n description: \"Perpetual funding rates\",\n tool: \"get_funding_rate\",\n args: {\n exchange: {\n flag: \"--exchange <name>\",\n description: \"Exchange (binance, bybit)\",\n required: true,\n },\n symbol: {\n flag: \"--symbol <pair>\",\n description: \"Futures pair (e.g. BTC/USDT:USDT)\",\n required: true,\n },\n },\n },\n {\n name: \"list\",\n description: \"List all exchanges\",\n tool: \"get_exchanges\",\n },\n ],\n },\n {\n name: \"dex\",\n description: \"DEX analytics — pools, trending pairs, trades, volume\",\n commands: [\n {\n name: \"trending\",\n description: \"Trending DEX pools\",\n tool: \"get_trending_pools\",\n },\n {\n name: \"pools\",\n description: \"Pool search and filter\",\n tool: \"get_pools\",\n args: {\n network: {\n flag: \"--network <name>\",\n description: \"Network (eth, bsc, solana)\",\n required: true,\n },\n page: { flag: \"--page <n>\", description: \"Page number\" },\n },\n },\n {\n name: \"trades\",\n description: \"Token trading activity\",\n tool: \"get_token_trades\",\n args: {\n network: {\n flag: \"--network <name>\",\n description: \"Network (eth, bsc, solana)\",\n },\n pool_address: { flag: \"--pool <addr>\", description: \"Pool address\" },\n },\n },\n {\n name: \"volume\",\n description: \"DEX volume rankings\",\n tool: \"get_dex_volumes\",\n },\n {\n name: \"pairs\",\n description: \"Token trading pairs\",\n tool: \"get_token_pools\",\n args: {\n network: {\n flag: \"--network <name>\",\n description: \"Network\",\n required: true,\n },\n token_address: {\n flag: \"--token <addr>\",\n description: \"Token address\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"wallet\",\n description:\n \"On-chain wallet data — balances, transfers, transactions, approvals\",\n commands: [\n {\n name: \"balances\",\n description: \"Token balances across chains\",\n tool: \"goldrush_get_multichain_balances\",\n args: {\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n },\n },\n {\n name: \"transfers\",\n description: \"ERC-20 transfers\",\n tool: \"goldrush_get_erc20_transfers\",\n args: {\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n {\n name: \"transactions\",\n description: \"Recent transactions\",\n tool: \"goldrush_get_transactions_latest\",\n args: {\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n {\n name: \"approvals\",\n description: \"Token approval audit\",\n tool: \"goldrush_get_token_approvals\",\n args: {\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Wallet address\",\n required: true,\n },\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"nft\",\n description: \"NFT analytics — collections, markets, trends, holders\",\n commands: [\n {\n name: \"trending\",\n description: \"Trending NFT collections\",\n tool: \"get_nft_market_trends\",\n },\n {\n name: \"collection\",\n description: \"Collection details\",\n tool: \"get_nft_collection\",\n args: {\n slug: { flag: \"--slug <name>\", description: \"Collection slug\" },\n },\n },\n {\n name: \"markets\",\n description: \"NFT marketplace data\",\n tool: \"get_nft_markets\",\n },\n {\n name: \"search\",\n description: \"Search NFT collections\",\n tool: \"search_nfts\",\n args: {\n query: {\n flag: \"--query <text>\",\n description: \"Search term\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"network\",\n description:\n \"Blockchain infrastructure — chains, gas, blocks, transactions\",\n commands: [\n {\n name: \"chains\",\n description: \"List supported chains\",\n tool: \"goldrush_get_chains\",\n },\n {\n name: \"gas\",\n description: \"Gas prices\",\n tool: \"goldrush_get_gas_prices\",\n args: {\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n },\n },\n {\n name: \"block\",\n description: \"Block data\",\n tool: \"goldrush_get_block\",\n args: {\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n blockHeight: {\n flag: \"--height <n>\",\n description: \"Block height\",\n required: true,\n },\n },\n },\n {\n name: \"resolve\",\n description: \"Resolve ENS/DNS name\",\n tool: \"goldrush_resolve_address\",\n args: {\n chainName: {\n flag: \"--chain <name>\",\n description: \"Chain name\",\n required: true,\n },\n walletAddress: {\n flag: \"--address <addr>\",\n description: \"Address or ENS name\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"search\",\n description: \"Search across all data\",\n commands: [\n {\n name: \"tokens\",\n description: \"Search tokens\",\n tool: \"search_all\",\n args: {\n query: {\n flag: \"--query <text>\",\n description: \"Search term\",\n required: true,\n },\n },\n },\n {\n name: \"pools\",\n description: \"Search DEX pools\",\n tool: \"search_pools\",\n args: {\n query: {\n flag: \"--query <text>\",\n description: \"Search term\",\n required: true,\n },\n },\n },\n ],\n },\n {\n name: \"altdata\",\n description: \"Alternative data — insider trades, earnings, IPOs, sentiment\",\n commands: [\n {\n name: \"insider\",\n description: \"Insider trading transactions\",\n tool: \"finnhub_get_insider_transactions\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n },\n },\n {\n name: \"sentiment\",\n description: \"Insider sentiment score\",\n tool: \"finnhub_get_insider_sentiment\",\n args: {\n symbol: {\n flag: \"--symbol <ticker>\",\n description: \"Stock ticker\",\n required: true,\n },\n from: {\n flag: \"--from <date>\",\n description: \"From date (YYYY-MM-DD)\",\n required: true,\n },\n to: {\n flag: \"--to <date>\",\n description: \"To date (YYYY-MM-DD)\",\n required: true,\n },\n },\n },\n {\n name: \"earnings\",\n description: \"Earnings calendar\",\n tool: \"finnhub_get_earnings_calendar\",\n },\n {\n name: \"ipo\",\n description: \"IPO calendar\",\n tool: \"finnhub_get_ipo_calendar\",\n },\n ],\n },\n];\n\nexport function resolveCommand(\n domain: string,\n subcommand: string,\n): SubCommand | undefined {\n const d = NAMESPACE.find((n) => n.name === domain);\n return d?.commands.find((c) => c.name === subcommand);\n}\n\nexport function getAllDomainCommands(): DomainCommand[] {\n return NAMESPACE;\n}\n"],"mappings":"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","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 === \"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":[]}