hive-intelligence 1.6.3 → 1.6.7
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.
- package/README.md +1 -1
- package/build/{chunk-XZJICKAL.js → chunk-G23ZAW36.js} +2 -2
- package/build/{chunk-IJ5KOZH5.js → chunk-J2PXISXW.js} +167 -17
- package/build/cli.js +5 -5
- package/build/{doctor-YBCU5FLQ.js → doctor-AM6QST7Z.js} +1 -1
- package/build/{mcpServer-V4XUSCX7.js → mcpServer-NWOKFR7Q.js} +1 -1
- package/build/monitor-worker.js +2 -2
- package/build/release.json +4 -4
- package/build/{serve-SU67DIY3.js → serve-XRNMHIJX.js} +1 -1
- package/build/server.js +2 -2
- package/build/stdio.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,7 +109,7 @@ Expected output shape:
|
|
|
109
109
|
"source": "live",
|
|
110
110
|
"receipt_id": "00000000-0000-4000-8000-000000000000",
|
|
111
111
|
"receipt_version": "1.0",
|
|
112
|
-
"server_version": "1.6.
|
|
112
|
+
"server_version": "1.6.7",
|
|
113
113
|
"build_sha": null,
|
|
114
114
|
"digest_algorithm": "sha256",
|
|
115
115
|
"input_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
getSupabaseAdmin,
|
|
8
8
|
resolveEndpoint,
|
|
9
9
|
secureLogger
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-J2PXISXW.js";
|
|
11
11
|
|
|
12
12
|
// src/services/wallet-service.ts
|
|
13
13
|
async function consumeCredits(args) {
|
|
@@ -112,7 +112,7 @@ async function executeToolByName(toolName, args, options) {
|
|
|
112
112
|
const result2 = createToolNotFoundResult(toolName);
|
|
113
113
|
secureLogger.toolCall(toolName, false, result2.durationMs, {
|
|
114
114
|
transport: "rest",
|
|
115
|
-
runtimeStatus:
|
|
115
|
+
runtimeStatus: result2.runtimeStatus,
|
|
116
116
|
errorClass: "not_found",
|
|
117
117
|
receiptId: result2.hive.receipt_id,
|
|
118
118
|
receiptVersion: result2.hive.receipt_version,
|
|
@@ -3472,6 +3472,8 @@ Args:
|
|
|
3472
3472
|
- "dex": Include DEX information
|
|
3473
3473
|
- "network": Include network information
|
|
3474
3474
|
- page (number, optional): Page number for pagination. Default: 1.
|
|
3475
|
+
- network (string, optional): GeckoTerminal network id to scope the results to one network.
|
|
3476
|
+
- duration (string, optional): accepted for parity with the trending-pools tool; ignored.
|
|
3475
3477
|
|
|
3476
3478
|
Returns:
|
|
3477
3479
|
JSON object with new pool data from all networks:
|
|
@@ -3521,6 +3523,14 @@ Error Handling:
|
|
|
3521
3523
|
inputSchema: {
|
|
3522
3524
|
type: "object",
|
|
3523
3525
|
properties: {
|
|
3526
|
+
network: {
|
|
3527
|
+
type: "string",
|
|
3528
|
+
description: 'Optional GeckoTerminal network id ("eth", "base", "solana", ...). When set, returns the newest pools on that network only (same data as coingecko_get_onchain_network_new_pools).'
|
|
3529
|
+
},
|
|
3530
|
+
duration: {
|
|
3531
|
+
type: "string",
|
|
3532
|
+
description: "Accepted for parity with coingecko_get_onchain_trending_pools and ignored: new pools are always ordered by creation time, newest first."
|
|
3533
|
+
},
|
|
3524
3534
|
include: {
|
|
3525
3535
|
type: "string",
|
|
3526
3536
|
description: "Additional data to include: base_token, quote_token, dex, network. Comma-separated."
|
|
@@ -3536,7 +3546,11 @@ Error Handling:
|
|
|
3536
3546
|
annotations: VOLATILE_READ_ANNOTATIONS
|
|
3537
3547
|
};
|
|
3538
3548
|
var handler33 = async (client2, args) => {
|
|
3539
|
-
const body = args;
|
|
3549
|
+
const { network, duration: _duration, ...body } = args ?? {};
|
|
3550
|
+
void _duration;
|
|
3551
|
+
if (typeof network === "string" && network.trim()) {
|
|
3552
|
+
return asTextContentResult(await client2.onchain.networks.newPools.getNetwork(network.trim(), body));
|
|
3553
|
+
}
|
|
3540
3554
|
return asTextContentResult(await client2.onchain.networks.newPools.get(body));
|
|
3541
3555
|
};
|
|
3542
3556
|
var get_networks_onchain_new_pools_default = { metadata: metadata33, tool: tool33, handler: handler33 };
|
|
@@ -7805,7 +7819,21 @@ Error Handling:
|
|
|
7805
7819
|
};
|
|
7806
7820
|
var handler79 = async (client2, args) => {
|
|
7807
7821
|
const { address, network, ...body } = args;
|
|
7808
|
-
|
|
7822
|
+
try {
|
|
7823
|
+
return asTextContentResult(await client2.onchain.networks.tokens.topTraders.get(address, { network_id: network, ...body }));
|
|
7824
|
+
} catch (error) {
|
|
7825
|
+
if (error?.status === 404) {
|
|
7826
|
+
return asTextContentResult(
|
|
7827
|
+
{
|
|
7828
|
+
error: `Invalid arguments: trader tracking is not available for ${address} on network "${network}" on the CoinGecko tier this account is on (404). Use coingecko_get_onchain_token_top_holders or get_token_top_holders for this token; traders are served on networks such as base.`,
|
|
7829
|
+
code: "VALIDATION_ERROR",
|
|
7830
|
+
suggestion: "Call coingecko_get_onchain_token_top_holders with the same network and address."
|
|
7831
|
+
},
|
|
7832
|
+
true
|
|
7833
|
+
);
|
|
7834
|
+
}
|
|
7835
|
+
throw error;
|
|
7836
|
+
}
|
|
7809
7837
|
};
|
|
7810
7838
|
var get_tokens_networks_onchain_top_traders_default = { metadata: metadata79, tool: tool79, handler: handler79 };
|
|
7811
7839
|
|
|
@@ -14802,10 +14830,18 @@ var wrapper = {
|
|
|
14802
14830
|
{
|
|
14803
14831
|
tool: {
|
|
14804
14832
|
name: "get_new_pools",
|
|
14805
|
-
description: "This endpoint allows you to **query all the latest pools across all networks on HIVE_DATASOURCE_ONE_CONSOLE
|
|
14833
|
+
description: "This endpoint allows you to **query all the latest pools across all networks on HIVE_DATASOURCE_ONE_CONSOLE**. Pass `network` to scope the list to one network.",
|
|
14806
14834
|
inputSchema: {
|
|
14807
14835
|
type: "object",
|
|
14808
14836
|
properties: {
|
|
14837
|
+
network: {
|
|
14838
|
+
type: "string",
|
|
14839
|
+
description: 'Optional GeckoTerminal network id ("eth", "base", "solana", ...). When set, returns the newest pools on that network only.'
|
|
14840
|
+
},
|
|
14841
|
+
duration: {
|
|
14842
|
+
type: "string",
|
|
14843
|
+
description: "Accepted for parity with get_trending_pools and ignored: new pools are always ordered by creation time, newest first."
|
|
14844
|
+
},
|
|
14809
14845
|
include: {
|
|
14810
14846
|
type: "string",
|
|
14811
14847
|
description: "attributes to include, comma-separated if more than one to include <br> Available values: `base_token`, `quote_token`, `dex`, `network`"
|
|
@@ -26449,6 +26485,12 @@ function runtimeStatusForConfiguredKey(hasKey) {
|
|
|
26449
26485
|
function classifyRuntimeStatusFromError(error) {
|
|
26450
26486
|
const normalized = (error ?? "").toLowerCase();
|
|
26451
26487
|
if (!normalized) return "failing";
|
|
26488
|
+
if (normalized.includes("was retired") || normalized.includes("tool_retired") || normalized.includes("tool_not_found") || normalized.includes("does not resolve to a hive endpoint") || // Hive's own caller-error convention. A message that starts this way may
|
|
26489
|
+
// go on to mention a plan, a tier, or an address (2026-09-16: "not
|
|
26490
|
+
// available ... on the current plan" was read as plan_required).
|
|
26491
|
+
normalized.includes("invalid arguments")) {
|
|
26492
|
+
return "invalid_input";
|
|
26493
|
+
}
|
|
26452
26494
|
if (normalized.includes("rate limit") || normalized.includes("rate_limited") || normalized.includes("429") || normalized.includes("too many requests")) {
|
|
26453
26495
|
return "rate_limited";
|
|
26454
26496
|
}
|
|
@@ -26466,7 +26508,10 @@ function classifyRuntimeStatusFromError(error) {
|
|
|
26466
26508
|
if (normalized.includes("is not supported") || normalized.includes("does not support") || normalized.includes("not supported yet") || normalized.includes("is required") || normalized.includes("must be one of") || normalized.includes("invalid symbol") || normalized.includes("bad symbol") || normalized.includes("badsymbol") || normalized.includes("badrequest") || normalized.includes("invalid parameter") || normalized.includes("invalid argument") || // Hero-tool caller mistakes and unknown/retired tool names (2026-09-14):
|
|
26467
26509
|
// a name that does not resolve is fixable by the caller, never a provider
|
|
26468
26510
|
// outage, so it must not read as "failing" (which automated callers retry).
|
|
26469
|
-
normalized.includes("unknown chain") ||
|
|
26511
|
+
normalized.includes("unknown chain") || // Provider-side rejections of a malformed identifier (GoPlus "Address
|
|
26512
|
+
// format error!", "invalid address", "not a valid address") are the
|
|
26513
|
+
// caller's to fix, not an outage (2026-09-16 audit).
|
|
26514
|
+
normalized.includes("address format") || normalized.includes("invalid address") || normalized.includes("not a valid address") || normalized.includes("malformed address")) {
|
|
26470
26515
|
return "invalid_input";
|
|
26471
26516
|
}
|
|
26472
26517
|
if (normalized.includes("timed out") || normalized.includes("timeout") || normalized.includes("temporarily") || normalized.includes("service unavailable") || normalized.includes("502") || normalized.includes("503") || normalized.includes("504")) {
|
|
@@ -26477,7 +26522,8 @@ function classifyRuntimeStatusFromError(error) {
|
|
|
26477
26522
|
function aggregateRuntimeStatus(statuses) {
|
|
26478
26523
|
if (statuses.length === 0) return "degraded";
|
|
26479
26524
|
if (statuses.some((status) => status === "failing")) return "failing";
|
|
26480
|
-
if (statuses.some((status) => status === "rate_limited"))
|
|
26525
|
+
if (statuses.some((status) => status === "rate_limited"))
|
|
26526
|
+
return "rate_limited";
|
|
26481
26527
|
if (statuses.some((status) => status === "degraded")) return "degraded";
|
|
26482
26528
|
if (statuses.some((status) => status === "plan_required")) {
|
|
26483
26529
|
return "plan_required";
|
|
@@ -51587,6 +51633,24 @@ function createSafeHandler(handler96, metadata100, toolName) {
|
|
|
51587
51633
|
} catch {
|
|
51588
51634
|
}
|
|
51589
51635
|
}
|
|
51636
|
+
if (result2.isError && text.trimStart().startsWith("{")) {
|
|
51637
|
+
try {
|
|
51638
|
+
const parsedObject = JSON.parse(text);
|
|
51639
|
+
if (parsedObject && typeof parsedObject === "object" && !Array.isArray(parsedObject) && typeof parsedObject.error === "string") {
|
|
51640
|
+
return asTextContentResult(
|
|
51641
|
+
{
|
|
51642
|
+
suggestion: "Check input parameters and try again.",
|
|
51643
|
+
alternatives: getAlternativeTools(toolName),
|
|
51644
|
+
documentation: `Use the category endpoint to discover related tools.`,
|
|
51645
|
+
tool: toolName,
|
|
51646
|
+
...parsedObject
|
|
51647
|
+
},
|
|
51648
|
+
true
|
|
51649
|
+
);
|
|
51650
|
+
}
|
|
51651
|
+
} catch {
|
|
51652
|
+
}
|
|
51653
|
+
}
|
|
51590
51654
|
if (result2.isError || /^(\*\*Error:\*\*|Error\b)/i.test(text.trim())) {
|
|
51591
51655
|
const normalizedError = text.replace(/\s+/g, " ").trim();
|
|
51592
51656
|
return asTextContentResult(
|
|
@@ -51652,7 +51716,11 @@ function createSafeHandler(handler96, metadata100, toolName) {
|
|
|
51652
51716
|
function getAlternativeTools(toolName) {
|
|
51653
51717
|
const name = toolName.toLowerCase();
|
|
51654
51718
|
if (name.includes("price") || name.includes("ticker"))
|
|
51655
|
-
return [
|
|
51719
|
+
return [
|
|
51720
|
+
"get_coins_market_data",
|
|
51721
|
+
"alchemy_get_token_prices_by_address",
|
|
51722
|
+
"get_price"
|
|
51723
|
+
];
|
|
51656
51724
|
if (name.includes("pool"))
|
|
51657
51725
|
return ["get_trending_pools", "get_pools_by_dex", "filter_pools"];
|
|
51658
51726
|
if (name.includes("token") || name.includes("coin"))
|
|
@@ -52794,7 +52862,8 @@ function normalizeErrorText(text, toolName, args) {
|
|
|
52794
52862
|
} catch {
|
|
52795
52863
|
}
|
|
52796
52864
|
if (errorMsg) {
|
|
52797
|
-
|
|
52865
|
+
const bareErrorMsg = errorMsg.replace(/^(?:\s*\*\*Error:\*\*\s*)+/, "");
|
|
52866
|
+
let normalized = `**Error:** ${bareErrorMsg}`;
|
|
52798
52867
|
normalized += `
|
|
52799
52868
|
|
|
52800
52869
|
**Code:** ${code || "API_ERROR"}`;
|
|
@@ -53684,9 +53753,9 @@ var RETIRED_TOOL_REPLACEMENTS = {
|
|
|
53684
53753
|
get_wallet_stats: "Use alchemy_get_token_balances_by_wallet, alchemy_get_asset_transfers, or moralis_get_wallet_profitability_summary for wallet balances, transfers, and PnL.",
|
|
53685
53754
|
get_wallet_token_events: "Use alchemy_get_token_balances_by_wallet, alchemy_get_asset_transfers, or moralis_get_wallet_profitability_summary for wallet balances, transfers, and PnL.",
|
|
53686
53755
|
// holders
|
|
53687
|
-
get_token_holders: "Use get_token_top_holders,
|
|
53688
|
-
get_token_top_traders: "Use get_token_top_holders,
|
|
53689
|
-
get_top_holders_percentage: "Use get_token_top_holders,
|
|
53756
|
+
get_token_holders: "Use get_token_top_holders for holders on any network, coingecko_get_onchain_token_top_traders for traders where CoinGecko serves them (base and similar; not Ethereum on the current plan), or moralis_get_token_holder_metrics for holder metrics.",
|
|
53757
|
+
get_token_top_traders: "Use get_token_top_holders for holders on any network, coingecko_get_onchain_token_top_traders for traders where CoinGecko serves them (base and similar; not Ethereum on the current plan), or moralis_get_token_holder_metrics for holder metrics.",
|
|
53758
|
+
get_top_holders_percentage: "Use get_token_top_holders for holders on any network, coingecko_get_onchain_token_top_traders for traders where CoinGecko serves them (base and similar; not Ethereum on the current plan), or moralis_get_token_holder_metrics for holder metrics.",
|
|
53690
53759
|
// pairs
|
|
53691
53760
|
codex_get_detailed_token_stats: "Use get_token_pools, get_pool_info, get_pools_by_address, moralis_get_pair_stats, or get_new_pools for pool and pair data.",
|
|
53692
53761
|
codex_get_windowed_pair_stats: "Use get_token_pools, get_pool_info, get_pools_by_address, moralis_get_pair_stats, or get_new_pools for pool and pair data.",
|
|
@@ -53960,16 +54029,91 @@ function attachStructuredContent(result2, hasOutputSchema = false) {
|
|
|
53960
54029
|
return result2;
|
|
53961
54030
|
}
|
|
53962
54031
|
function declaredErrorCode(rawErrorText) {
|
|
54032
|
+
const parsed = parseEmbeddedJsonObject(rawErrorText);
|
|
54033
|
+
if (typeof parsed?.code === "string") return parsed.code;
|
|
54034
|
+
const nested = typeof parsed?.error === "string" ? parseEmbeddedJsonObject(parsed.error) : void 0;
|
|
54035
|
+
return typeof nested?.code === "string" ? nested.code : void 0;
|
|
54036
|
+
}
|
|
54037
|
+
function parseEmbeddedJsonObject(text) {
|
|
54038
|
+
if (!text) return void 0;
|
|
54039
|
+
const start = text.indexOf("{");
|
|
54040
|
+
if (start < 0) return void 0;
|
|
54041
|
+
let depth = 0;
|
|
54042
|
+
let inString = false;
|
|
54043
|
+
for (let i = start; i < text.length; i += 1) {
|
|
54044
|
+
const ch = text[i];
|
|
54045
|
+
if (inString) {
|
|
54046
|
+
if (ch === "\\") i += 1;
|
|
54047
|
+
else if (ch === '"') inString = false;
|
|
54048
|
+
continue;
|
|
54049
|
+
}
|
|
54050
|
+
if (ch === '"') inString = true;
|
|
54051
|
+
else if (ch === "{") depth += 1;
|
|
54052
|
+
else if (ch === "}") {
|
|
54053
|
+
depth -= 1;
|
|
54054
|
+
if (depth === 0) {
|
|
54055
|
+
try {
|
|
54056
|
+
const parsed = JSON.parse(text.slice(start, i + 1));
|
|
54057
|
+
return parsed && typeof parsed === "object" ? parsed : void 0;
|
|
54058
|
+
} catch {
|
|
54059
|
+
return void 0;
|
|
54060
|
+
}
|
|
54061
|
+
}
|
|
54062
|
+
}
|
|
54063
|
+
}
|
|
54064
|
+
return void 0;
|
|
54065
|
+
}
|
|
54066
|
+
function handlerErrorCopy(payload) {
|
|
54067
|
+
if (!payload || typeof payload !== "object") return void 0;
|
|
54068
|
+
const top = payload;
|
|
54069
|
+
const inner = top._hive && typeof top._hive === "object" ? top._hive : {};
|
|
54070
|
+
const pick = (key) => typeof top[key] === "string" ? top[key] : typeof inner[key] === "string" ? inner[key] : void 0;
|
|
54071
|
+
const cause = pick("cause");
|
|
54072
|
+
const next_action = pick("next_action");
|
|
54073
|
+
return cause || next_action ? { cause, next_action } : void 0;
|
|
54074
|
+
}
|
|
54075
|
+
var PROVIDER_PREFIXES = [
|
|
54076
|
+
["moralis_", "Moralis"],
|
|
54077
|
+
["alchemy_", "Alchemy"],
|
|
54078
|
+
["helius_", "Helius"],
|
|
54079
|
+
["coingecko_", "CoinGecko"],
|
|
54080
|
+
["hyperliquid_", "Hyperliquid"],
|
|
54081
|
+
["tenderly_", "Tenderly"],
|
|
54082
|
+
["goplus_", "GoPlus"],
|
|
54083
|
+
["ccxt_", "CCXT"],
|
|
54084
|
+
["defillama_", "DeFiLlama"]
|
|
54085
|
+
];
|
|
54086
|
+
var replacementAvailability = null;
|
|
54087
|
+
function setRetiredReplacementAvailabilityProvider(provider) {
|
|
54088
|
+
replacementAvailability = provider;
|
|
54089
|
+
}
|
|
54090
|
+
function unavailableReplacementNote(guidance) {
|
|
54091
|
+
let snapshot = {};
|
|
53963
54092
|
try {
|
|
53964
|
-
|
|
53965
|
-
return typeof parsed?.code === "string" ? parsed.code : void 0;
|
|
54093
|
+
snapshot = replacementAvailability?.() ?? {};
|
|
53966
54094
|
} catch {
|
|
53967
|
-
return
|
|
54095
|
+
return "";
|
|
53968
54096
|
}
|
|
54097
|
+
const notes = /* @__PURE__ */ new Map();
|
|
54098
|
+
for (const name of guidance.match(/[a-z0-9]+_[a-z0-9_]+/g) ?? []) {
|
|
54099
|
+
for (const [prefix, provider] of PROVIDER_PREFIXES) {
|
|
54100
|
+
if (!name.startsWith(prefix)) continue;
|
|
54101
|
+
const status = snapshot[provider];
|
|
54102
|
+
if (!status || status === "ok") continue;
|
|
54103
|
+
const list = notes.get(provider) ?? [];
|
|
54104
|
+
if (!list.includes(name)) list.push(name);
|
|
54105
|
+
notes.set(provider, list);
|
|
54106
|
+
}
|
|
54107
|
+
}
|
|
54108
|
+
if (notes.size === 0) return "";
|
|
54109
|
+
return " " + [...notes].map(
|
|
54110
|
+
([provider, tools5]) => `${tools5.join(", ")} ${tools5.length > 1 ? "are" : "is"} unavailable right now (${provider}: ${snapshot[provider]}); start with the other replacement${tools5.length > 1 ? "s" : ""}.`
|
|
54111
|
+
).join(" ");
|
|
53969
54112
|
}
|
|
53970
54113
|
function createToolNotFoundResult(toolName, durationMs = 0) {
|
|
53971
54114
|
const retired = getRetiredToolReplacement(toolName);
|
|
53972
|
-
const
|
|
54115
|
+
const availabilityNote = retired ? unavailableReplacementNote(retired) : "";
|
|
54116
|
+
const message = retired ? `Tool '${toolName}' was retired on ${RETIRED_TOOLS_DATE}. ${retired}${availabilityNote}` : `Tool '${toolName}' not found.`;
|
|
53973
54117
|
const errorCode = retired ? "TOOL_RETIRED" : "TOOL_NOT_FOUND";
|
|
53974
54118
|
const mcpResult = createErrorResponse7(errorCode, message);
|
|
53975
54119
|
const hive = {
|
|
@@ -53998,7 +54142,7 @@ function createToolNotFoundResult(toolName, durationMs = 0) {
|
|
|
53998
54142
|
retired ? "Tool name was retired; the replacement is named in the message." : "Tool name did not resolve to a Hive endpoint."
|
|
53999
54143
|
],
|
|
54000
54144
|
cause: retired ? `Tool '${toolName}' was retired on ${RETIRED_TOOLS_DATE} when the Codex.io provider was removed; nothing was executed.` : `Tool '${toolName}' does not resolve to a Hive endpoint; nothing was executed.`,
|
|
54001
|
-
next_action: retired ? `${retired} Call search_tools with your task if that tool does not fit.` : "Call search_tools (or a category endpoint tools/list) to find the exact endpoint name, then retry with that name."
|
|
54145
|
+
next_action: retired ? `${retired}${availabilityNote} Call search_tools with your task if that tool does not fit.` : "Call search_tools (or a category endpoint tools/list) to find the exact endpoint name, then retry with that name."
|
|
54002
54146
|
};
|
|
54003
54147
|
const enrichedMcpResult = attachHiveMetadata(mcpResult, hive);
|
|
54004
54148
|
return {
|
|
@@ -54280,7 +54424,10 @@ async function executeEndpoint(endpoint, args, context) {
|
|
|
54280
54424
|
);
|
|
54281
54425
|
logToolCall(endpoint, context, result2.hive, false, durationMs, args, {
|
|
54282
54426
|
runtimeStatus: result2.runtimeStatus,
|
|
54283
|
-
errorClass: "validation"
|
|
54427
|
+
errorClass: "validation",
|
|
54428
|
+
// Field names only (never values): the 2026-09-16 audit could not tell
|
|
54429
|
+
// which argument an integrator was sending wrong for two weeks.
|
|
54430
|
+
validationFields: validationErrors.map((error) => error.field)
|
|
54284
54431
|
});
|
|
54285
54432
|
return result2;
|
|
54286
54433
|
}
|
|
@@ -54393,7 +54540,7 @@ async function executeEndpoint(endpoint, args, context) {
|
|
|
54393
54540
|
applyRouteFallbackAnnotation(hive, context.routeFallback);
|
|
54394
54541
|
}
|
|
54395
54542
|
if (normalized.isError) {
|
|
54396
|
-
applyAgentErrorCopy(hive);
|
|
54543
|
+
applyAgentErrorCopy(hive, handlerErrorCopy(unwrapMcpContent(rawResult)));
|
|
54397
54544
|
}
|
|
54398
54545
|
const enriched = attachHiveMetadata(bounded, hive);
|
|
54399
54546
|
const mcpResult = attachStructuredContent(
|
|
@@ -65085,6 +65232,9 @@ function getProviderAvailabilitySnapshot() {
|
|
|
65085
65232
|
}
|
|
65086
65233
|
|
|
65087
65234
|
// src/tools/dynamic-tools.ts
|
|
65235
|
+
setRetiredReplacementAvailabilityProvider(
|
|
65236
|
+
() => getProviderAvailabilitySnapshot().byProviderName
|
|
65237
|
+
);
|
|
65088
65238
|
var DEFAULT_SEARCH_LIMIT = 20;
|
|
65089
65239
|
var MAX_SEARCH_LIMIT = 50;
|
|
65090
65240
|
var DEFAULT_TOOLSET_LIMIT = 3;
|
package/build/cli.js
CHANGED
|
@@ -3440,7 +3440,7 @@ program2.hook("preAction", (thisCommand) => {
|
|
|
3440
3440
|
setCliFlags({ apiKey: opts.apiKey, noRetry: opts.retry === false });
|
|
3441
3441
|
});
|
|
3442
3442
|
program2.action(async () => {
|
|
3443
|
-
const { startStdio } = await import("./serve-
|
|
3443
|
+
const { startStdio } = await import("./serve-XRNMHIJX.js");
|
|
3444
3444
|
await startStdio(program2.opts().envFile);
|
|
3445
3445
|
});
|
|
3446
3446
|
program2.command("serve").description("Start the MCP server").option("--http", "Start HTTP server instead of stdio").option("--port <number>", "HTTP server port", "8080").action(async (opts) => {
|
|
@@ -3453,10 +3453,10 @@ program2.command("serve").description("Start the MCP server").option("--http", "
|
|
|
3453
3453
|
);
|
|
3454
3454
|
process.exit(ExitCode.INVALID_ARGS);
|
|
3455
3455
|
}
|
|
3456
|
-
const { startHttp } = await import("./serve-
|
|
3456
|
+
const { startHttp } = await import("./serve-XRNMHIJX.js");
|
|
3457
3457
|
await startHttp(port, program2.opts().envFile);
|
|
3458
3458
|
} else {
|
|
3459
|
-
const { startStdio } = await import("./serve-
|
|
3459
|
+
const { startStdio } = await import("./serve-XRNMHIJX.js");
|
|
3460
3460
|
await startStdio(program2.opts().envFile);
|
|
3461
3461
|
}
|
|
3462
3462
|
});
|
|
@@ -3666,7 +3666,7 @@ program2.command("uninstall").description(
|
|
|
3666
3666
|
if (exitCode !== 0) process.exit(exitCode);
|
|
3667
3667
|
});
|
|
3668
3668
|
program2.command("doctor").description("Diagnose environment and server connectivity").option("--probe", "Run live API probes (slower)").action(async (opts) => {
|
|
3669
|
-
const { runDoctor } = await import("./doctor-
|
|
3669
|
+
const { runDoctor } = await import("./doctor-AM6QST7Z.js");
|
|
3670
3670
|
await runDoctor(opts);
|
|
3671
3671
|
});
|
|
3672
3672
|
program2.command("upgrade").description("Update Hive to the latest published version").action(async () => {
|
|
@@ -3714,7 +3714,7 @@ program2.command("usage").description("Show your API usage and plan limits").act
|
|
|
3714
3714
|
await runUsage();
|
|
3715
3715
|
});
|
|
3716
3716
|
program2.command("status").description("Quick health and version check").action(async () => {
|
|
3717
|
-
const { runStatus } = await import("./doctor-
|
|
3717
|
+
const { runStatus } = await import("./doctor-AM6QST7Z.js");
|
|
3718
3718
|
await runStatus();
|
|
3719
3719
|
});
|
|
3720
3720
|
program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
|
|
@@ -204,7 +204,7 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
|
|
|
204
204
|
if (fails > 0) process.exit(1);
|
|
205
205
|
}
|
|
206
206
|
async function runStatus() {
|
|
207
|
-
const { SERVER_VERSION } = await import("./mcpServer-
|
|
207
|
+
const { SERVER_VERSION } = await import("./mcpServer-NWOKFR7Q.js");
|
|
208
208
|
const { resolveApiKey, resolveApiUrl } = await import("./config-dir-2QLA5PXD.js");
|
|
209
209
|
const { getActiveProfile, maskKey } = await import("./auth-4LPSQJXD.js");
|
|
210
210
|
const apiUrl = resolveApiUrl();
|
package/build/monitor-worker.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
consumeCredits,
|
|
4
4
|
executeToolByName
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-G23ZAW36.js";
|
|
6
6
|
import {
|
|
7
7
|
HyperliquidAPI,
|
|
8
8
|
MIN_MONITOR_CADENCE_MS,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
monitorCadenceIntervalMs,
|
|
16
16
|
runScheduledHealthCanaries,
|
|
17
17
|
secureLogger
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-J2PXISXW.js";
|
|
19
19
|
import "./chunk-GADPH72D.js";
|
|
20
20
|
import "./chunk-EPF36Q3Z.js";
|
|
21
21
|
import "./chunk-ZXKFJQDE.js";
|
package/build/release.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "hive-intelligence",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"buildSha": "
|
|
5
|
-
"imageDigest": "sha256:
|
|
3
|
+
"version": "1.6.7",
|
|
4
|
+
"buildSha": "4fddf62cb6f56b0b14c162c88632cb746c8affe5",
|
|
5
|
+
"imageDigest": "sha256:609f7a3dbed5ab6375db4d985a2a6729e55810fae71f69836aad5c62d55f7b84",
|
|
6
6
|
"deployedUrl": "https://mcp.hiveintelligence.xyz",
|
|
7
|
-
"manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.6.
|
|
7
|
+
"manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.6.7/releases/v1.6.7.json"
|
|
8
8
|
}
|
|
@@ -7,7 +7,7 @@ async function startStdio(envFile) {
|
|
|
7
7
|
dotenv.config({ path: envFile || ".env", quiet: true });
|
|
8
8
|
console.log = (...args) => console.error("[LOG]", ...args);
|
|
9
9
|
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
10
|
-
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-
|
|
10
|
+
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-NWOKFR7Q.js");
|
|
11
11
|
const { getPendingUpdateVersion } = await import("./update-check-36QU6PKA.js");
|
|
12
12
|
const transport = new StdioServerTransport();
|
|
13
13
|
const pendingUpdate = getPendingUpdateVersion();
|
package/build/server.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ensureWallet,
|
|
7
7
|
executeToolByName,
|
|
8
8
|
getWalletStatus
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-G23ZAW36.js";
|
|
10
10
|
import {
|
|
11
11
|
CategoryEndpoints,
|
|
12
12
|
HERO_TOOL_NAMES,
|
|
@@ -96,7 +96,7 @@ import {
|
|
|
96
96
|
validateEndpointArgs,
|
|
97
97
|
verifyApiKey,
|
|
98
98
|
waitForRedisAvailability
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-J2PXISXW.js";
|
|
100
100
|
import {
|
|
101
101
|
HIVE_AGENT_SKILLS
|
|
102
102
|
} from "./chunk-GADPH72D.js";
|
package/build/stdio.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hive-intelligence",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.7",
|
|
4
4
|
"description": "Evidence-backed crypto due diligence for AI agents, with sources, freshness, and a runtime receipt on every call.",
|
|
5
5
|
"mcpName": "xyz.hiveintelligence/mcp",
|
|
6
6
|
"type": "module",
|