hive-intelligence 1.5.3 → 1.6.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.
- package/README.md +12 -14
- package/agent-skills/.claude-plugin/plugin.json +1 -6
- package/agent-skills/README.md +0 -1
- package/agent-skills/SKILL.md +2 -3
- package/agent-skills/evals/trigger-queries.json +0 -27
- package/agent-skills/package.json +1 -2
- package/agent-skills/packs/hive-mcp/references/clients.md +1 -1
- package/agent-skills/packs/hive-network-infrastructure/SKILL.md +2 -2
- package/agent-skills/packs/hive-query/SKILL.md +2 -2
- package/agent-skills/packs/hive-query/evals/evals.json +4 -4
- package/agent-skills/packs/hive-query/evals/triggers.json +1 -1
- package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +1 -1
- package/agent-skills/packs/hive-stateful-monitoring/SKILL.md +3 -3
- package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +1 -1
- package/agent-skills/references/agents-routing.md +1 -4
- package/agent-skills/scripts/validate-agent-skills-package.mjs +0 -1
- package/agent-skills/skills.sh.json +1 -2
- package/build/{alias-BKAVOYQV.js → alias-PRRZPOJH.js} +1 -1
- package/build/{api-client-WMWFWXC7.js → api-client-6AM3HVHQ.js} +1 -1
- package/build/{auth-Y4GXW376.js → auth-4LPSQJXD.js} +2 -2
- package/build/{browser-auth-F62BMD7W.js → browser-auth-SYALZF3A.js} +1 -1
- package/build/{cache-TBDQ7QBU.js → cache-IDP4TLKY.js} +1 -1
- package/build/{chunk-7VSK46QO.js → chunk-2SPCKQBJ.js} +13 -18
- package/build/{chunk-WF34ZD5I.js → chunk-32NRUWXA.js} +4 -4
- package/build/{chunk-L326MQZP.js → chunk-GADPH72D.js} +0 -19
- package/build/{chunk-TVBPCELA.js → chunk-GYVF75XB.js} +1 -1
- package/build/{chunk-SFN772RL.js → chunk-KUF754NT.js} +2 -2
- package/build/{chunk-725R3KLJ.js → chunk-LP5ECG7A.js} +6 -1
- package/build/{chunk-GB4XMTDE.js → chunk-LW2DHE32.js} +1 -1
- package/build/{chunk-ILVPOLA7.js → chunk-OMO7XLC5.js} +2 -27
- package/build/{chunk-R6YZTFQL.js → chunk-S4HBVZ7O.js} +3 -1
- package/build/{chunk-VZBDTSWA.js → chunk-XZXLLPF5.js} +1 -1
- package/build/chunk-YDX4SHSC.js +67908 -0
- package/build/cli.js +45 -45
- package/build/{completion-L3TDZ7ZK.js → completion-YVSWWF6D.js} +2 -2
- package/build/{config-KAEUX6RM.js → config-VQYP57AF.js} +1 -1
- package/build/{config-dir-5IH7MOOT.js → config-dir-2QLA5PXD.js} +1 -1
- package/build/{doctor-VRZYKQGL.js → doctor-LRDKXJYD.js} +8 -8
- package/build/{errors-HGHUF575.js → errors-EL6UMXNJ.js} +2 -2
- package/build/{format-H7FOQSYY.js → format-O2WH35IA.js} +1 -1
- package/build/{init-COHA3VZI.js → init-5NULBKGZ.js} +1 -1
- package/build/{init-all-YTQJLPLR.js → init-all-54G3CVZA.js} +6 -6
- package/build/{mcpServer-DARSGHUH.js → mcpServer-NWKN7FWC.js} +3 -3
- package/build/monitor-worker.js +42 -71
- package/build/{namespace-XLMRFH5E.js → namespace-PA2IDNRT.js} +2 -2
- package/build/{open-V2RNA3QT.js → open-CAEDG67G.js} +1 -1
- package/build/{output-ITGLBKIG.js → output-XGTE4EWJ.js} +2 -2
- package/build/release.json +4 -4
- package/build/{serve-NCMFZSMB.js → serve-2XXMJPIH.js} +3 -3
- package/build/server.js +62 -21
- package/build/{setup-PTYFMTK5.js → setup-MYXN2YN3.js} +2 -2
- package/build/stdio.js +3 -3
- package/build/{telemetry-HPLDYR7U.js → telemetry-TSZ32EEI.js} +1 -1
- package/build/{tools-SIOAOXW6.js → tools-FNPMELSU.js} +12 -12
- package/build/{uninstall-TKDP6C4F.js → uninstall-P3JJZCXT.js} +4 -4
- package/build/{update-check-IEXPOYYR.js → update-check-36QU6PKA.js} +1 -1
- package/build/{upgrade-ODPKMIDC.js → upgrade-ATIFZANV.js} +3 -3
- package/build/{version-Z4HJL4VV.js → version-ITRM4X2U.js} +1 -1
- package/build/{watch-MXJSNGL2.js → watch-FG2C5Y2Z.js} +3 -3
- package/package.json +6 -12
- package/agent-skills/packs/hive-prediction-markets/SKILL.md +0 -131
- package/agent-skills/packs/hive-prediction-markets/evals/evals.json +0 -29
- package/agent-skills/packs/hive-prediction-markets/evals/triggers.json +0 -50
- package/build/chunk-Y5XA3SFY.js +0 -100524
package/build/release.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "hive-intelligence",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"buildSha": "
|
|
5
|
-
"imageDigest": "sha256:
|
|
3
|
+
"version": "1.6.2",
|
|
4
|
+
"buildSha": "31b6c1881c32943ad54a1382f8edd172c9fdfc61",
|
|
5
|
+
"imageDigest": "sha256:5eb3488df2a3f56cf225b7c4cd9afb43a7e14fa87a3c3446676b265a9144b69b",
|
|
6
6
|
"deployedUrl": "https://mcp.hiveintelligence.xyz",
|
|
7
|
-
"manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.
|
|
7
|
+
"manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.6.2/releases/v1.6.2.json"
|
|
8
8
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-OMO7XLC5.js";
|
|
3
3
|
|
|
4
4
|
// src/cli/serve.ts
|
|
5
5
|
import dotenv from "dotenv";
|
|
@@ -7,8 +7,8 @@ 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-
|
|
11
|
-
const { getPendingUpdateVersion } = await import("./update-check-
|
|
10
|
+
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-NWKN7FWC.js");
|
|
11
|
+
const { getPendingUpdateVersion } = await import("./update-check-36QU6PKA.js");
|
|
12
12
|
const transport = new StdioServerTransport();
|
|
13
13
|
const pendingUpdate = getPendingUpdateVersion();
|
|
14
14
|
const instructionsSuffix = pendingUpdate ? `A newer Hive version (${pendingUpdate}) is available; this server is running ${SERVER_VERSION}. Tell the user to run "hive upgrade" and restart this client to get the latest tools and data.` : void 0;
|
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-XZXLLPF5.js";
|
|
10
10
|
import {
|
|
11
11
|
CategoryEndpoints,
|
|
12
12
|
HERO_TOOL_NAMES,
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
createApiKey,
|
|
34
34
|
createHiveMcpServer,
|
|
35
35
|
createOAuthStore,
|
|
36
|
+
createToolNotFoundResult,
|
|
36
37
|
endpointAllowedForInvoker,
|
|
37
38
|
executeEndpoint,
|
|
38
39
|
getAllWrappedEndpoints,
|
|
@@ -95,10 +96,10 @@ import {
|
|
|
95
96
|
validateEndpointArgs,
|
|
96
97
|
verifyApiKey,
|
|
97
98
|
waitForRedisAvailability
|
|
98
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-YDX4SHSC.js";
|
|
99
100
|
import {
|
|
100
101
|
HIVE_AGENT_SKILLS
|
|
101
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-GADPH72D.js";
|
|
102
103
|
import "./chunk-EPF36Q3Z.js";
|
|
103
104
|
import {
|
|
104
105
|
PUBLIC_MCP_REGISTRY_ID,
|
|
@@ -108,7 +109,7 @@ import {
|
|
|
108
109
|
import {
|
|
109
110
|
__commonJS,
|
|
110
111
|
__toESM
|
|
111
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-OMO7XLC5.js";
|
|
112
113
|
|
|
113
114
|
// node_modules/ipaddr.js/lib/ipaddr.js
|
|
114
115
|
var require_ipaddr = __commonJS({
|
|
@@ -7953,6 +7954,9 @@ app.get(
|
|
|
7953
7954
|
);
|
|
7954
7955
|
var REST_EXECUTE_STATUS_CODES = {
|
|
7955
7956
|
TOOL_NOT_FOUND: 404,
|
|
7957
|
+
// Gone, not missing: a retired name never comes back, and 410 is outside
|
|
7958
|
+
// every client's retry class (5xx / 429).
|
|
7959
|
+
TOOL_RETIRED: 410,
|
|
7956
7960
|
VALIDATION_ERROR: 422,
|
|
7957
7961
|
PROVIDER_UNAVAILABLE: 503,
|
|
7958
7962
|
TOOL_ERROR: 400,
|
|
@@ -7985,7 +7989,11 @@ function buildRestExecutionMeta(toolName, durationMs, meta) {
|
|
|
7985
7989
|
source: meta.source,
|
|
7986
7990
|
origin_source: meta.origin_source,
|
|
7987
7991
|
truncated: meta.truncated,
|
|
7988
|
-
warnings: meta.warnings
|
|
7992
|
+
warnings: meta.warnings,
|
|
7993
|
+
// Agent-actionable copy travels on every transport, not only MCP: REST and
|
|
7994
|
+
// CLI callers were getting "not found" with no replacement (2026-09-14).
|
|
7995
|
+
...meta.cause !== void 0 && { cause: meta.cause },
|
|
7996
|
+
...meta.next_action !== void 0 && { next_action: meta.next_action }
|
|
7989
7997
|
};
|
|
7990
7998
|
}
|
|
7991
7999
|
var restHeroEndpointsByName = null;
|
|
@@ -8032,13 +8040,20 @@ var anonymousHeroExecuteMiddleware = asyncHandler(
|
|
|
8032
8040
|
return;
|
|
8033
8041
|
}
|
|
8034
8042
|
if (!HERO_TOOL_NAMES.has(toolName) && !isKnownRestToolName(toolName)) {
|
|
8035
|
-
|
|
8036
|
-
|
|
8037
|
-
|
|
8038
|
-
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
|
|
8043
|
+
const notFound = createToolNotFoundResult(toolName);
|
|
8044
|
+
const notFoundError = notFound.error;
|
|
8045
|
+
res.status(REST_EXECUTE_STATUS_CODES[notFoundError.code] ?? 404).json({
|
|
8046
|
+
...apiError(
|
|
8047
|
+
notFoundError.type,
|
|
8048
|
+
notFoundError.code,
|
|
8049
|
+
notFoundError.message,
|
|
8050
|
+
{ requestId: req.requestId }
|
|
8051
|
+
),
|
|
8052
|
+
meta: buildRestExecutionMeta(
|
|
8053
|
+
toolName,
|
|
8054
|
+
notFound.durationMs,
|
|
8055
|
+
notFound.hive
|
|
8056
|
+
)
|
|
8042
8057
|
});
|
|
8043
8058
|
return;
|
|
8044
8059
|
}
|
|
@@ -8310,15 +8325,42 @@ app.use((_req, res) => {
|
|
|
8310
8325
|
});
|
|
8311
8326
|
app.use(
|
|
8312
8327
|
(err, _req, res, _next) => {
|
|
8313
|
-
|
|
8328
|
+
const carried = err;
|
|
8329
|
+
const status = typeof carried.status === "number" ? carried.status : typeof carried.statusCode === "number" ? carried.statusCode : 500;
|
|
8330
|
+
if (status >= 500) {
|
|
8331
|
+
secureLogger.error("Unhandled express error", err, {});
|
|
8332
|
+
} else {
|
|
8333
|
+
secureLogger.warn("Express request rejected", {
|
|
8334
|
+
status,
|
|
8335
|
+
errorMessage: err.message
|
|
8336
|
+
});
|
|
8337
|
+
}
|
|
8314
8338
|
if (!res.headersSent) {
|
|
8315
|
-
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
|
|
8319
|
-
|
|
8320
|
-
|
|
8321
|
-
|
|
8339
|
+
if (status === 404) {
|
|
8340
|
+
res.status(404).json(
|
|
8341
|
+
apiError(
|
|
8342
|
+
"not_found_error",
|
|
8343
|
+
"ENDPOINT_NOT_FOUND",
|
|
8344
|
+
"Endpoint not found."
|
|
8345
|
+
)
|
|
8346
|
+
);
|
|
8347
|
+
} else if (status < 500) {
|
|
8348
|
+
res.status(status).json(
|
|
8349
|
+
apiError(
|
|
8350
|
+
"invalid_request_error",
|
|
8351
|
+
status === 413 ? "PAYLOAD_TOO_LARGE" : "INVALID_REQUEST",
|
|
8352
|
+
status === 413 ? "Request body is too large." : "The request could not be processed. Check the body and headers."
|
|
8353
|
+
)
|
|
8354
|
+
);
|
|
8355
|
+
} else {
|
|
8356
|
+
res.status(500).json(
|
|
8357
|
+
apiError(
|
|
8358
|
+
"internal_error",
|
|
8359
|
+
"INTERNAL_ERROR",
|
|
8360
|
+
"An unexpected error occurred."
|
|
8361
|
+
)
|
|
8362
|
+
);
|
|
8363
|
+
}
|
|
8322
8364
|
}
|
|
8323
8365
|
}
|
|
8324
8366
|
);
|
|
@@ -8339,7 +8381,6 @@ async function setupServer() {
|
|
|
8339
8381
|
});
|
|
8340
8382
|
const optionalApiKeys = [
|
|
8341
8383
|
"COINGECKO_PRO_API_KEY",
|
|
8342
|
-
"CODEX_API_KEY",
|
|
8343
8384
|
"GOPLUS_APP_KEY",
|
|
8344
8385
|
"GOPLUS_APP_SECRET",
|
|
8345
8386
|
"ALCHEMY_API_KEY",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-OMO7XLC5.js";
|
|
3
3
|
|
|
4
4
|
// src/cli/setup.ts
|
|
5
5
|
import { createInterface } from "readline";
|
|
@@ -52,7 +52,7 @@ Choice (1-${CLIENTS.length}): `, resolve)
|
|
|
52
52
|
writeCursorConfig,
|
|
53
53
|
writeVscodeConfig,
|
|
54
54
|
writeClaudeCodeConfig
|
|
55
|
-
} = await import("./config-
|
|
55
|
+
} = await import("./config-VQYP57AF.js");
|
|
56
56
|
switch (selectedClient) {
|
|
57
57
|
case "claude-desktop": {
|
|
58
58
|
configClaudeDesktop();
|
package/build/stdio.js
CHANGED
|
@@ -6,15 +6,15 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
createHiveMcpServer,
|
|
8
8
|
secureLogger
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-YDX4SHSC.js";
|
|
10
|
+
import "./chunk-GADPH72D.js";
|
|
11
11
|
import "./chunk-EPF36Q3Z.js";
|
|
12
12
|
import {
|
|
13
13
|
SERVER_NAME,
|
|
14
14
|
SERVER_VERSION
|
|
15
15
|
} from "./chunk-ZXKFJQDE.js";
|
|
16
16
|
import "./chunk-6PC3HUAK.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-OMO7XLC5.js";
|
|
18
18
|
|
|
19
19
|
// src/stdio.ts
|
|
20
20
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
@@ -8,20 +8,20 @@ import {
|
|
|
8
8
|
shouldOutputJson,
|
|
9
9
|
successEnvelope,
|
|
10
10
|
writeOutput
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LP5ECG7A.js";
|
|
12
12
|
import "./chunk-6PC3HUAK.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-OMO7XLC5.js";
|
|
14
14
|
|
|
15
15
|
// src/cli/tools.ts
|
|
16
16
|
async function loadToolCatalog() {
|
|
17
|
-
const { getCachedTools, setCachedTools } = await import("./cache-
|
|
17
|
+
const { getCachedTools, setCachedTools } = await import("./cache-IDP4TLKY.js");
|
|
18
18
|
const cached = getCachedTools();
|
|
19
19
|
if (cached) return cached;
|
|
20
20
|
const response = await fetchToolCatalog();
|
|
21
21
|
if (!response.ok) {
|
|
22
22
|
const msg = response.error && typeof response.error === "object" && "message" in response.error ? String(response.error.message) : "Failed to fetch tool catalog";
|
|
23
|
-
const { CliError } = await import("./errors-
|
|
24
|
-
const { outputError } = await import("./output-
|
|
23
|
+
const { CliError } = await import("./errors-EL6UMXNJ.js");
|
|
24
|
+
const { outputError } = await import("./output-XGTE4EWJ.js");
|
|
25
25
|
await outputError(
|
|
26
26
|
new CliError("API_ERROR", msg, "Check: hive doctor"),
|
|
27
27
|
{}
|
|
@@ -40,7 +40,7 @@ async function listTools(opts) {
|
|
|
40
40
|
tools = tools.filter((t) => t.name.toLowerCase().startsWith(prefix + "_"));
|
|
41
41
|
}
|
|
42
42
|
if (opts.category) {
|
|
43
|
-
const { NAMESPACE } = await import("./namespace-
|
|
43
|
+
const { NAMESPACE } = await import("./namespace-PA2IDNRT.js");
|
|
44
44
|
const cat = opts.category.toLowerCase();
|
|
45
45
|
const ns = NAMESPACE.find(
|
|
46
46
|
(d) => d.name === cat || d.description.toLowerCase().includes(cat)
|
|
@@ -74,7 +74,7 @@ async function listTools(opts) {
|
|
|
74
74
|
await writeOutput(successEnvelope(data, {}));
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
const { table } = await import("./format-
|
|
77
|
+
const { table } = await import("./format-O2WH35IA.js");
|
|
78
78
|
const rangeStart = totalFiltered === 0 ? 0 : offset + 1;
|
|
79
79
|
const rangeEnd = offset + items.length;
|
|
80
80
|
info(`
|
|
@@ -103,7 +103,7 @@ async function searchTools(query) {
|
|
|
103
103
|
await writeOutput(successEnvelope(data, {}));
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
|
-
const { table } = await import("./format-
|
|
106
|
+
const { table } = await import("./format-O2WH35IA.js");
|
|
107
107
|
info(`
|
|
108
108
|
${matches.length} matches for "${query}"
|
|
109
109
|
`);
|
|
@@ -122,8 +122,8 @@ async function toolInfo(name) {
|
|
|
122
122
|
const allTools = await loadToolCatalog();
|
|
123
123
|
const tool = allTools.find((t2) => t2.name === name);
|
|
124
124
|
if (!tool) {
|
|
125
|
-
const { CliError, suggestSimilarTools } = await import("./errors-
|
|
126
|
-
const { outputError } = await import("./output-
|
|
125
|
+
const { CliError, suggestSimilarTools } = await import("./errors-EL6UMXNJ.js");
|
|
126
|
+
const { outputError } = await import("./output-XGTE4EWJ.js");
|
|
127
127
|
const similar = suggestSimilarTools(
|
|
128
128
|
name,
|
|
129
129
|
allTools.map((t2) => t2.name)
|
|
@@ -162,8 +162,8 @@ ${t.description}
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
async function refreshTools() {
|
|
165
|
-
const { clearCache } = await import("./cache-
|
|
166
|
-
const { info: printInfo } = await import("./output-
|
|
165
|
+
const { clearCache } = await import("./cache-IDP4TLKY.js");
|
|
166
|
+
const { info: printInfo } = await import("./output-XGTE4EWJ.js");
|
|
167
167
|
clearCache();
|
|
168
168
|
printInfo("Cache cleared. Fetching fresh tool catalog...\n");
|
|
169
169
|
const tools = await loadToolCatalog();
|
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
detectClients,
|
|
4
4
|
removeSkillsForClients
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GYVF75XB.js";
|
|
6
6
|
import {
|
|
7
7
|
removeClaudeCodeUserConfig,
|
|
8
8
|
removeClaudeDesktopConfig,
|
|
@@ -12,15 +12,15 @@ import {
|
|
|
12
12
|
removeVscodeConfig,
|
|
13
13
|
removeWindsurfConfig
|
|
14
14
|
} from "./chunk-QDZ7MAVN.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-GADPH72D.js";
|
|
16
16
|
import {
|
|
17
17
|
bold,
|
|
18
18
|
dim,
|
|
19
19
|
green,
|
|
20
20
|
yellow
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-LP5ECG7A.js";
|
|
22
22
|
import "./chunk-6PC3HUAK.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-OMO7XLC5.js";
|
|
24
24
|
|
|
25
25
|
// src/cli/uninstall.ts
|
|
26
26
|
function w(line) {
|
|
@@ -2,12 +2,12 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
detectInstallMode,
|
|
4
4
|
runUpgrade
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LW2DHE32.js";
|
|
6
6
|
import "./chunk-M6REON2I.js";
|
|
7
7
|
import "./chunk-ZXKFJQDE.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-LP5ECG7A.js";
|
|
9
9
|
import "./chunk-6PC3HUAK.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-OMO7XLC5.js";
|
|
11
11
|
export {
|
|
12
12
|
detectInstallMode,
|
|
13
13
|
runUpgrade
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
executeTool
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KUF754NT.js";
|
|
5
5
|
import "./chunk-P7NLFSZQ.js";
|
|
6
6
|
import "./chunk-RU6QOFHH.js";
|
|
7
7
|
import "./chunk-EPF36Q3Z.js";
|
|
8
8
|
import "./chunk-ZXKFJQDE.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-LP5ECG7A.js";
|
|
10
10
|
import "./chunk-6PC3HUAK.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-OMO7XLC5.js";
|
|
12
12
|
|
|
13
13
|
// src/cli/watch.ts
|
|
14
14
|
var MAX_CONSECUTIVE_FAILURES = 10;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hive-intelligence",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.2",
|
|
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",
|
|
@@ -104,7 +104,6 @@
|
|
|
104
104
|
"security",
|
|
105
105
|
"dex",
|
|
106
106
|
"nft",
|
|
107
|
-
"prediction-markets",
|
|
108
107
|
"ai-tools",
|
|
109
108
|
"ai-agents",
|
|
110
109
|
"llm",
|
|
@@ -131,16 +130,15 @@
|
|
|
131
130
|
},
|
|
132
131
|
"dependencies": {
|
|
133
132
|
"@cloudflare/cabidela": "^0.2.4",
|
|
134
|
-
"@
|
|
135
|
-
"@coingecko/coingecko-typescript": "^7.1.0",
|
|
133
|
+
"@coingecko/coingecko-typescript": "^8.0.0",
|
|
136
134
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
137
|
-
"@supabase/supabase-js": "^2.
|
|
135
|
+
"@supabase/supabase-js": "^2.115.0",
|
|
138
136
|
"@types/compression": "^1.8.1",
|
|
139
137
|
"@unkey/api": "2.5.0",
|
|
140
138
|
"ajv": "^8.18.0",
|
|
141
139
|
"ajv-formats": "^3.0.1",
|
|
142
|
-
"axios": "^1.
|
|
143
|
-
"ccxt": "^4.5.
|
|
140
|
+
"axios": "^1.20.0",
|
|
141
|
+
"ccxt": "^4.5.77",
|
|
144
142
|
"commander": "^15.0.0",
|
|
145
143
|
"compression": "^1.8.1",
|
|
146
144
|
"cors": "2.8.6",
|
|
@@ -148,7 +146,6 @@
|
|
|
148
146
|
"express": "^5.2.1",
|
|
149
147
|
"express-rate-limit": "^8.5.2",
|
|
150
148
|
"fastest-levenshtein": "^1.0.16",
|
|
151
|
-
"graphql": "16.14.2",
|
|
152
149
|
"helmet": "^8.2.0",
|
|
153
150
|
"ioredis": "^5.11.1",
|
|
154
151
|
"ora": "^9.4.1",
|
|
@@ -156,12 +153,9 @@
|
|
|
156
153
|
"swagger-ui-dist": "5.32.8",
|
|
157
154
|
"tsx": "4.23.0",
|
|
158
155
|
"winston": "3.19.0",
|
|
159
|
-
"zod": "^4.4
|
|
156
|
+
"zod": "^4.5.4"
|
|
160
157
|
},
|
|
161
158
|
"overrides": {
|
|
162
|
-
"@codex-data/sdk": {
|
|
163
|
-
"graphql-request": "7.4.0"
|
|
164
|
-
},
|
|
165
159
|
"github-actionlint": {
|
|
166
160
|
"adm-zip": "0.6.0"
|
|
167
161
|
},
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: hive-prediction-markets
|
|
3
|
-
description: Use this skill when the user asks about prediction markets — Polymarket or Kalshi events, markets, outcomes, odds, prices, liquidity, stats, traders, holders, or trades — including "what are the odds of X", "find markets about Y", or comparing venues. Use it whenever live prediction-market evidence is needed. Never present market probability as ground truth.
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
package: "@hiveintelligence/agent-skills"
|
|
7
|
-
category: "prediction-markets"
|
|
8
|
-
requires_network: "true"
|
|
9
|
-
version: 1.4.0
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# hive-prediction-markets — Prediction Markets
|
|
13
|
-
|
|
14
|
-
Discover and analyze prediction markets — Polymarket, Kalshi — with prices,
|
|
15
|
-
liquidity, outcomes, traders, and trades, always framed as market-implied
|
|
16
|
-
odds rather than truth.
|
|
17
|
-
|
|
18
|
-
## Task toolset and identifiers
|
|
19
|
-
|
|
20
|
-
Toolset: `prediction_markets`. Read `hive://toolsets/prediction_markets` before
|
|
21
|
-
execution; it is authoritative for the current output schema, material-call
|
|
22
|
-
budget, phases, fallback condition, and stop conditions.
|
|
23
|
-
|
|
24
|
-
- Required: market id, event id, token id, trader address, or a search query —
|
|
25
|
-
depending on the request.
|
|
26
|
-
- Optional: status filter, limit, date range, outcome, liquidity threshold.
|
|
27
|
-
|
|
28
|
-
If the user starts with a topic, search candidates first and ask for selection
|
|
29
|
-
when multiple markets match — similar markets can have different resolution
|
|
30
|
-
criteria.
|
|
31
|
-
|
|
32
|
-
Before choosing endpoints, select exactly one matching entry from the exact
|
|
33
|
-
workflow's routes[]. Follow its ordered steps, use a fallback only under that
|
|
34
|
-
step's published condition, stop at four material calls, and preserve the
|
|
35
|
-
selected route_id in the typed result. The broad coverageCatalog is discovery
|
|
36
|
-
coverage, not an execution plan.
|
|
37
|
-
|
|
38
|
-
## Procedure
|
|
39
|
-
|
|
40
|
-
1. Call `search_tools` for prediction-market search, event, market, stats,
|
|
41
|
-
holder, trader, or trade capabilities.
|
|
42
|
-
2. Call `get_api_endpoint_schema` for each endpoint before calling it.
|
|
43
|
-
3. Search events/markets for topic prompts; resolve exact market/event/token
|
|
44
|
-
ids before pulling stats, holders, or trades.
|
|
45
|
-
4. Add liquidity/volume and freshness context before interpreting prices.
|
|
46
|
-
5. Report market price, volume/liquidity, outcomes, provider/source, and
|
|
47
|
-
freshness — and never present probability as ground truth.
|
|
48
|
-
|
|
49
|
-
## Bounded calls
|
|
50
|
-
|
|
51
|
-
- Use small search limits and page through only when needed.
|
|
52
|
-
- Do not fetch all trades or holders unless the user asks for a deep dive.
|
|
53
|
-
- Keep outcome-token prices separate from event-level interpretation.
|
|
54
|
-
|
|
55
|
-
## Worked example
|
|
56
|
-
|
|
57
|
-
User: "What are the odds on the next Fed rate decision? Compare Polymarket
|
|
58
|
-
and Kalshi if both have markets."
|
|
59
|
-
|
|
60
|
-
1. `search_tools` → `{"query": "prediction markets search events fed rate decision", "limit": 5}`
|
|
61
|
-
2. `get_api_endpoint_schema` for the market-search endpoint returned, then
|
|
62
|
-
`invoke_api_endpoint` with a bounded search per venue.
|
|
63
|
-
3. If several markets match, list candidates with resolution criteria and ask
|
|
64
|
-
which to inspect — or pick the highest-liquidity exact match and say so.
|
|
65
|
-
4. Report outcome prices with volume/liquidity and freshness, framed as
|
|
66
|
-
market-implied odds.
|
|
67
|
-
|
|
68
|
-
## Report template
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
## Summary
|
|
72
|
-
[Market/event read and top outcomes in one or two sentences.]
|
|
73
|
-
|
|
74
|
-
## Calls made
|
|
75
|
-
- Toolset: prediction_markets
|
|
76
|
-
- Endpoint(s): [exact endpoint names]
|
|
77
|
-
- Identifiers: [market/event/token/trader ids]
|
|
78
|
-
|
|
79
|
-
## Evidence
|
|
80
|
-
- Outcomes and prices: [per outcome, per venue]
|
|
81
|
-
- Liquidity/volume: [values + as-of]
|
|
82
|
-
- Provenance: [provider, fetched_at, observed_at/cache_age_ms, runtime status per call]
|
|
83
|
-
|
|
84
|
-
## Caveats
|
|
85
|
-
[Market probability is not truth, thin liquidity, stale stats, candidate ambiguity.]
|
|
86
|
-
|
|
87
|
-
## Next action
|
|
88
|
-
[Inspect selected market, holders, trades, or related events — only if needed.]
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Gotchas
|
|
92
|
-
|
|
93
|
-
- Market prices reflect trading and liquidity, not verified probability.
|
|
94
|
-
- Similar markets can have different resolution criteria — quote them when
|
|
95
|
-
comparing venues.
|
|
96
|
-
- Event-level and outcome-token-level data are not interchangeable.
|
|
97
|
-
|
|
98
|
-
## Evidence receipt (required)
|
|
99
|
-
|
|
100
|
-
End every Hive-backed answer with a compact receipt built from the `_hive`
|
|
101
|
-
object on each material tool response:
|
|
102
|
-
|
|
103
|
-
- `provider`, `tool`, `fetched_at`, `observed_at`, `cache_age_ms`, and `runtime_status`
|
|
104
|
-
- `receipt_id`, `receipt_version`, server/build version, and SHA-256 input/result
|
|
105
|
-
digests when present (self-checks, not signatures)
|
|
106
|
-
- `source`, `cache_status`, `truncated`, and any warnings
|
|
107
|
-
- canonical chain/entity identifiers plus block, slot, transaction, or query ids
|
|
108
|
-
present in provider data
|
|
109
|
-
- material provider disagreements and how they were handled
|
|
110
|
-
- checks that were unavailable, gated, stale, truncated, or intentionally not run
|
|
111
|
-
- a `claims[]` citation from each material statement to exact receipt IDs
|
|
112
|
-
- one `coverage[]` entry for every canonical evidence phase, with each gap explained
|
|
113
|
-
|
|
114
|
-
Never turn missing evidence into a clean result, silently merge conflicting
|
|
115
|
-
provider values, or omit a degraded/fallback call from the receipt.
|
|
116
|
-
`observed_at` is Hive's first-observation/original cache-population time, and
|
|
117
|
-
`cache_age_ms: 0` only means newly retrieved by Hive. Use provider time, block,
|
|
118
|
-
slot, transaction, or candle close for source recency; if absent, mark it
|
|
119
|
-
unknown. Run `validate_task_result` before presenting the typed workflow result;
|
|
120
|
-
it checks structure but cannot authenticate an invented receipt.
|
|
121
|
-
|
|
122
|
-
## Runtime status handling
|
|
123
|
-
|
|
124
|
-
If a market search succeeds but stats are `degraded`, return the candidates
|
|
125
|
-
and label the missing market details clearly.
|
|
126
|
-
|
|
127
|
-
## Hand-offs
|
|
128
|
-
|
|
129
|
-
- General crypto market prices → `hive-market-research`.
|
|
130
|
-
- A trader's full wallet activity → `hive-wallet-investigation`.
|
|
131
|
-
- Standing "alert me when odds move" requests → `hive-stateful-monitoring`.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skill_name": "hive-prediction-markets",
|
|
3
|
-
"evals": [
|
|
4
|
-
{
|
|
5
|
-
"id": 1,
|
|
6
|
-
"prompt": "Find active prediction markets about the next Fed decision and show the top outcomes with liquidity caveats.",
|
|
7
|
-
"expected_output": "Uses prediction_markets, searches markets/events first, resolves candidate ids, bounds results, reports price/liquidity/freshness caveats, and ends with a runtime evidence receipt.",
|
|
8
|
-
"files": [],
|
|
9
|
-
"assertions": [
|
|
10
|
-
"Chooses prediction_markets.",
|
|
11
|
-
"Selects event_landscape for event discovery or market_odds for an exact market and preserves route_id.",
|
|
12
|
-
"Searches markets/events before stats.",
|
|
13
|
-
"States market price is not ground truth.",
|
|
14
|
-
"Includes receipt ids and missing evidence."
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": 2,
|
|
19
|
-
"prompt": "For this Polymarket market id, summarize traders, holders, and recent trades.",
|
|
20
|
-
"expected_output": "Uses exact market/token identifiers, fetches bounded traders/holders/trades, and reports provider/runtime status.",
|
|
21
|
-
"files": [],
|
|
22
|
-
"assertions": [
|
|
23
|
-
"Uses exact market or token id.",
|
|
24
|
-
"Bounds traders/holders/trades.",
|
|
25
|
-
"Reports provider and runtime status."
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"query": "what are the odds on the next fed rate cut on polymarket",
|
|
4
|
-
"should_trigger": true
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
"query": "find prediction markets about the 2026 world cup winner",
|
|
8
|
-
"should_trigger": true
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"query": "compare polymarket vs kalshi on the CPI print markets",
|
|
12
|
-
"should_trigger": true
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"query": "who are the biggest holders in this polymarket market",
|
|
16
|
-
"should_trigger": true
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"query": "that 70% odds number — how much liquidity is actually behind it",
|
|
20
|
-
"should_trigger": true
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"query": "show recent trades on this market id",
|
|
24
|
-
"should_trigger": true
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"query": "whats the POL token trading at",
|
|
28
|
-
"should_trigger": false
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"query": "what does this trader's wallet hold outside polymarket",
|
|
32
|
-
"should_trigger": false
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"query": "explain how prediction markets resolve disputes",
|
|
36
|
-
"should_trigger": false
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"query": "alert me when these odds move 10 points",
|
|
40
|
-
"should_trigger": false
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"query": "is using polymarket legal in my country",
|
|
44
|
-
"should_trigger": false
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"query": "top defi protocols by tvl",
|
|
48
|
-
"should_trigger": false
|
|
49
|
-
}
|
|
50
|
-
]
|