hive-intelligence 1.13.1 → 1.15.0
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 +5 -3
- package/agent-skills/packs/hive/SKILL.md +2 -2
- package/agent-skills/packs/hive-prediction-markets/SKILL.md +9 -8
- package/build/{chunk-V7TBL47R.js → chunk-762ZUJ4Q.js} +1 -1
- package/build/{chunk-ZRAW5MXW.js → chunk-GNZGLVFE.js} +2688 -592
- package/build/cli.js +5 -5
- package/build/{doctor-DUXJWV3F.js → doctor-25WPHR4J.js} +1 -1
- package/build/{mcpServer-NWKQ4LCN.js → mcpServer-O4KXRE62.js} +1 -1
- package/build/monitor-worker.js +3 -154
- package/build/release.json +4 -4
- package/build/{serve-GVD5SX46.js → serve-V2KPPJCD.js} +2 -2
- package/build/server.js +9 -3
- package/build/stdio.js +1 -1
- package/package.json +5 -5
package/build/cli.js
CHANGED
|
@@ -3453,7 +3453,7 @@ program2.hook("preAction", (thisCommand) => {
|
|
|
3453
3453
|
setCliFlags({ apiKey: opts.apiKey, noRetry: opts.retry === false });
|
|
3454
3454
|
});
|
|
3455
3455
|
program2.action(async () => {
|
|
3456
|
-
const { startStdio } = await import("./serve-
|
|
3456
|
+
const { startStdio } = await import("./serve-V2KPPJCD.js");
|
|
3457
3457
|
await startStdio(program2.opts().envFile);
|
|
3458
3458
|
});
|
|
3459
3459
|
program2.command("serve").description(
|
|
@@ -3471,10 +3471,10 @@ program2.command("serve").description(
|
|
|
3471
3471
|
);
|
|
3472
3472
|
process.exit(ExitCode.INVALID_ARGS);
|
|
3473
3473
|
}
|
|
3474
|
-
const { startHttp } = await import("./serve-
|
|
3474
|
+
const { startHttp } = await import("./serve-V2KPPJCD.js");
|
|
3475
3475
|
await startHttp(port, program2.opts().envFile);
|
|
3476
3476
|
} else {
|
|
3477
|
-
const { startStdio } = await import("./serve-
|
|
3477
|
+
const { startStdio } = await import("./serve-V2KPPJCD.js");
|
|
3478
3478
|
await startStdio(program2.opts().envFile, { local: opts.local });
|
|
3479
3479
|
}
|
|
3480
3480
|
});
|
|
@@ -3742,7 +3742,7 @@ program2.command("doctor").description("Diagnose environment and server connecti
|
|
|
3742
3742
|
"--fix",
|
|
3743
3743
|
"Rewrite stale Hive entries in MCP client configs (backs each file up first)"
|
|
3744
3744
|
).action(async (opts) => {
|
|
3745
|
-
const { runDoctor } = await import("./doctor-
|
|
3745
|
+
const { runDoctor } = await import("./doctor-25WPHR4J.js");
|
|
3746
3746
|
await runDoctor(opts);
|
|
3747
3747
|
});
|
|
3748
3748
|
program2.command("upgrade").description("Update Hive to the latest published version").action(async () => {
|
|
@@ -3790,7 +3790,7 @@ program2.command("usage").description("Show your API usage and plan limits").act
|
|
|
3790
3790
|
await runUsage();
|
|
3791
3791
|
});
|
|
3792
3792
|
program2.command("status").description("Quick health and version check").action(async () => {
|
|
3793
|
-
const { runStatus } = await import("./doctor-
|
|
3793
|
+
const { runStatus } = await import("./doctor-25WPHR4J.js");
|
|
3794
3794
|
await runStatus();
|
|
3795
3795
|
});
|
|
3796
3796
|
program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
|
|
@@ -296,7 +296,7 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
|
|
|
296
296
|
if (fails > 0) process.exit(1);
|
|
297
297
|
}
|
|
298
298
|
async function runStatus() {
|
|
299
|
-
const { SERVER_VERSION } = await import("./mcpServer-
|
|
299
|
+
const { SERVER_VERSION } = await import("./mcpServer-O4KXRE62.js");
|
|
300
300
|
const { resolveApiKey, resolveApiUrl } = await import("./config-dir-2QLA5PXD.js");
|
|
301
301
|
const { getActiveProfile, maskKey } = await import("./auth-6XVL5CE3.js");
|
|
302
302
|
const apiUrl = resolveApiUrl();
|
package/build/monitor-worker.js
CHANGED
|
@@ -4,20 +4,17 @@ import {
|
|
|
4
4
|
executeToolByName,
|
|
5
5
|
refundCredits,
|
|
6
6
|
refundSettled
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-762ZUJ4Q.js";
|
|
8
8
|
import {
|
|
9
|
-
HyperliquidAPI,
|
|
10
9
|
MIN_MONITOR_CADENCE_MS,
|
|
11
10
|
closeRedisClient,
|
|
12
|
-
collectRwaRows,
|
|
13
|
-
getEnvVar,
|
|
14
11
|
getSupabaseAdmin,
|
|
15
12
|
isManualMonitorCadence,
|
|
16
13
|
isSupabaseConfigured,
|
|
17
14
|
monitorCadenceIntervalMs,
|
|
18
15
|
runScheduledHealthCanaries,
|
|
19
16
|
secureLogger
|
|
20
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GNZGLVFE.js";
|
|
21
18
|
import "./chunk-QYK3EWTE.js";
|
|
22
19
|
import "./chunk-EPF36Q3Z.js";
|
|
23
20
|
import "./chunk-ZXKFJQDE.js";
|
|
@@ -1251,152 +1248,6 @@ async function runDueMonitors(options = {}) {
|
|
|
1251
1248
|
};
|
|
1252
1249
|
}
|
|
1253
1250
|
|
|
1254
|
-
// src/services/rwa-snapshot.ts
|
|
1255
|
-
var INSERT_CHUNK_SIZE = 500;
|
|
1256
|
-
var SNAPSHOT_MIN_GAP_MS = 55 * 60 * 1e3;
|
|
1257
|
-
function snapshotRowFor(row, capturedAt) {
|
|
1258
|
-
return {
|
|
1259
|
-
venue: row.venue,
|
|
1260
|
-
symbol: row.symbol,
|
|
1261
|
-
underlying: row.underlying,
|
|
1262
|
-
asset_class: row.asset_class,
|
|
1263
|
-
funding_rate: row.funding_rate,
|
|
1264
|
-
annualized: row.funding_annualized,
|
|
1265
|
-
mark_price: row.mark_price,
|
|
1266
|
-
oi: row.open_interest_usd,
|
|
1267
|
-
mechanism: row.funding_mechanism,
|
|
1268
|
-
flags: {
|
|
1269
|
-
market: row.market,
|
|
1270
|
-
funding_interval_hours: row.funding_interval_hours,
|
|
1271
|
-
borrow_apr_annual: row.borrow_apr_annual,
|
|
1272
|
-
is_delisted: row.is_delisted,
|
|
1273
|
-
is_price_suspect: row.is_price_suspect,
|
|
1274
|
-
price_suspect_basis: row.price_suspect_basis,
|
|
1275
|
-
price_deviation_pct: row.price_deviation_pct,
|
|
1276
|
-
volume_24h_usd: row.volume_24h_usd
|
|
1277
|
-
},
|
|
1278
|
-
captured_at: capturedAt
|
|
1279
|
-
};
|
|
1280
|
-
}
|
|
1281
|
-
async function persistRwaSnapshot() {
|
|
1282
|
-
if (!isSupabaseConfigured()) {
|
|
1283
|
-
return {
|
|
1284
|
-
ok: true,
|
|
1285
|
-
skipped: true,
|
|
1286
|
-
reason: "supabase_not_configured",
|
|
1287
|
-
capturedRows: 0,
|
|
1288
|
-
venueResults: [],
|
|
1289
|
-
writeErrors: [],
|
|
1290
|
-
capturedAt: null
|
|
1291
|
-
};
|
|
1292
|
-
}
|
|
1293
|
-
const { results, rows } = await collectRwaRows({
|
|
1294
|
-
hyperliquidApi: new HyperliquidAPI()
|
|
1295
|
-
});
|
|
1296
|
-
if (rows.length === 0) {
|
|
1297
|
-
return {
|
|
1298
|
-
ok: false,
|
|
1299
|
-
skipped: false,
|
|
1300
|
-
reason: "no_rows_from_any_venue",
|
|
1301
|
-
capturedRows: 0,
|
|
1302
|
-
venueResults: results,
|
|
1303
|
-
writeErrors: [],
|
|
1304
|
-
capturedAt: null
|
|
1305
|
-
};
|
|
1306
|
-
}
|
|
1307
|
-
const supabase = getSupabaseAdmin();
|
|
1308
|
-
const capturedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
1309
|
-
const payload = rows.map((row) => snapshotRowFor(row, capturedAt));
|
|
1310
|
-
const writeErrors = [];
|
|
1311
|
-
let insertedCount = 0;
|
|
1312
|
-
for (let i = 0; i < payload.length; i += INSERT_CHUNK_SIZE) {
|
|
1313
|
-
const chunk = payload.slice(i, i + INSERT_CHUNK_SIZE);
|
|
1314
|
-
const { error } = await supabase.from("rwa_funding_snapshots").insert(chunk);
|
|
1315
|
-
if (error) {
|
|
1316
|
-
writeErrors.push(`insert chunk ${i}: ${error.message}`);
|
|
1317
|
-
} else {
|
|
1318
|
-
insertedCount += chunk.length;
|
|
1319
|
-
}
|
|
1320
|
-
}
|
|
1321
|
-
const ok = writeErrors.length === 0;
|
|
1322
|
-
if (!ok) {
|
|
1323
|
-
secureLogger.warn("RWA snapshot write errors", {
|
|
1324
|
-
errorCount: writeErrors.length
|
|
1325
|
-
});
|
|
1326
|
-
}
|
|
1327
|
-
return {
|
|
1328
|
-
ok,
|
|
1329
|
-
skipped: false,
|
|
1330
|
-
capturedRows: insertedCount,
|
|
1331
|
-
venueResults: results,
|
|
1332
|
-
writeErrors,
|
|
1333
|
-
capturedAt
|
|
1334
|
-
};
|
|
1335
|
-
}
|
|
1336
|
-
async function runScheduledRwaSnapshot() {
|
|
1337
|
-
try {
|
|
1338
|
-
if ((getEnvVar("HIVE_RWA_SNAPSHOT_ENABLED") ?? "true") === "false") {
|
|
1339
|
-
return {
|
|
1340
|
-
ok: true,
|
|
1341
|
-
skipped: true,
|
|
1342
|
-
reason: "disabled_by_env",
|
|
1343
|
-
capturedRows: 0,
|
|
1344
|
-
venueResults: [],
|
|
1345
|
-
writeErrors: [],
|
|
1346
|
-
capturedAt: null
|
|
1347
|
-
};
|
|
1348
|
-
}
|
|
1349
|
-
if (!isSupabaseConfigured()) {
|
|
1350
|
-
return {
|
|
1351
|
-
ok: true,
|
|
1352
|
-
skipped: true,
|
|
1353
|
-
reason: "supabase_not_configured",
|
|
1354
|
-
capturedRows: 0,
|
|
1355
|
-
venueResults: [],
|
|
1356
|
-
writeErrors: [],
|
|
1357
|
-
capturedAt: null
|
|
1358
|
-
};
|
|
1359
|
-
}
|
|
1360
|
-
const supabase = getSupabaseAdmin();
|
|
1361
|
-
const { data, error } = await supabase.from("rwa_funding_snapshots").select("captured_at").order("captured_at", { ascending: false }).limit(1);
|
|
1362
|
-
if (error) {
|
|
1363
|
-
return {
|
|
1364
|
-
ok: false,
|
|
1365
|
-
skipped: false,
|
|
1366
|
-
reason: `cadence check failed: ${error.message}`,
|
|
1367
|
-
capturedRows: 0,
|
|
1368
|
-
venueResults: [],
|
|
1369
|
-
writeErrors: [error.message],
|
|
1370
|
-
capturedAt: null
|
|
1371
|
-
};
|
|
1372
|
-
}
|
|
1373
|
-
const latest = data?.[0]?.captured_at ? Date.parse(String(data[0].captured_at)) : null;
|
|
1374
|
-
if (latest != null && Number.isFinite(latest) && Date.now() - latest < SNAPSHOT_MIN_GAP_MS) {
|
|
1375
|
-
return {
|
|
1376
|
-
ok: true,
|
|
1377
|
-
skipped: true,
|
|
1378
|
-
reason: "within_cadence_gap",
|
|
1379
|
-
capturedRows: 0,
|
|
1380
|
-
venueResults: [],
|
|
1381
|
-
writeErrors: [],
|
|
1382
|
-
capturedAt: null
|
|
1383
|
-
};
|
|
1384
|
-
}
|
|
1385
|
-
return await persistRwaSnapshot();
|
|
1386
|
-
} catch (error) {
|
|
1387
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
1388
|
-
return {
|
|
1389
|
-
ok: false,
|
|
1390
|
-
skipped: false,
|
|
1391
|
-
reason: message,
|
|
1392
|
-
capturedRows: 0,
|
|
1393
|
-
venueResults: [],
|
|
1394
|
-
writeErrors: [message],
|
|
1395
|
-
capturedAt: null
|
|
1396
|
-
};
|
|
1397
|
-
}
|
|
1398
|
-
}
|
|
1399
|
-
|
|
1400
1251
|
// src/monitor-worker.ts
|
|
1401
1252
|
function intEnv(name, fallback) {
|
|
1402
1253
|
const parsed = Number.parseInt(process.env[name] ?? "", 10);
|
|
@@ -1428,15 +1279,13 @@ async function runMonitorWorkerFromEnv() {
|
|
|
1428
1279
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
1429
1280
|
})
|
|
1430
1281
|
);
|
|
1431
|
-
const rwaSnapshot = await runScheduledRwaSnapshot();
|
|
1432
1282
|
console.log(
|
|
1433
1283
|
JSON.stringify(
|
|
1434
1284
|
{
|
|
1435
1285
|
service: "hive-monitor-worker",
|
|
1436
1286
|
worker_id: process.env.HIVE_MONITOR_WORKER_ID ?? null,
|
|
1437
1287
|
...result,
|
|
1438
|
-
scheduled_health_canaries: scheduledHealthCanaries
|
|
1439
|
-
rwa_snapshot: rwaSnapshot
|
|
1288
|
+
scheduled_health_canaries: scheduledHealthCanaries
|
|
1440
1289
|
},
|
|
1441
1290
|
null,
|
|
1442
1291
|
2
|
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.15.0",
|
|
4
|
+
"buildSha": "c4b93ccfe31b90d86d3b51ee24cb137624ba12b1",
|
|
5
|
+
"imageDigest": "sha256:31eee6b9b85495c0d351a24ab189b9523cc0d95286fb8c66c28c5f530d545b6a",
|
|
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.15.0/releases/v1.15.0.json"
|
|
8
8
|
}
|
|
@@ -49,7 +49,7 @@ async function startStdio(envFile, opts = {}) {
|
|
|
49
49
|
console.log = (...args) => console.error("[LOG]", ...args);
|
|
50
50
|
if (resolveStdioMode(opts) === "proxy") return startStdioProxy();
|
|
51
51
|
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
52
|
-
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-
|
|
52
|
+
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-O4KXRE62.js");
|
|
53
53
|
const { getPendingUpdateVersion } = await import("./update-check-36QU6PKA.js");
|
|
54
54
|
const transport = new StdioServerTransport();
|
|
55
55
|
const pendingUpdate = getPendingUpdateVersion();
|
|
@@ -98,7 +98,7 @@ async function startStdioProxy() {
|
|
|
98
98
|
notice: () => updateNotice(getPendingUpdateVersion(), SERVER_VERSION)
|
|
99
99
|
});
|
|
100
100
|
if (Object.keys(process.env).some(
|
|
101
|
-
(k) => /^(COINGECKO|ALCHEMY|GOPLUS|HELIUS|TENDERLY)_/.test(k)
|
|
101
|
+
(k) => /^(COINGECKO|ALCHEMY|GOPLUS|HELIUS|TENDERLY|GOLDSKY)_/.test(k)
|
|
102
102
|
)) {
|
|
103
103
|
console.error(
|
|
104
104
|
"Hive: provider keys found in env but ignored; hosted Hive serves every provider. Set HIVE_STDIO_MODE=local to run providers with your own keys."
|
package/build/server.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
getWalletStatus,
|
|
9
9
|
refundCredits,
|
|
10
10
|
refundSettled
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-762ZUJ4Q.js";
|
|
12
12
|
import {
|
|
13
13
|
CategoryEndpoints,
|
|
14
14
|
HERO_TOOL_NAMES,
|
|
@@ -105,7 +105,7 @@ import {
|
|
|
105
105
|
validateEndpointArgs,
|
|
106
106
|
verifyApiKey,
|
|
107
107
|
waitForRedisAvailability
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-GNZGLVFE.js";
|
|
109
109
|
import {
|
|
110
110
|
HIVE_AGENT_SKILLS
|
|
111
111
|
} from "./chunk-QYK3EWTE.js";
|
|
@@ -6628,6 +6628,10 @@ function createHttpApp() {
|
|
|
6628
6628
|
}
|
|
6629
6629
|
app.set("trust proxy", resolveTrustedProxies());
|
|
6630
6630
|
app.use(requestIdMiddleware);
|
|
6631
|
+
app.use((_req, res, next) => {
|
|
6632
|
+
res.setHeader("X-Robots-Tag", "noindex, nofollow");
|
|
6633
|
+
next();
|
|
6634
|
+
});
|
|
6631
6635
|
app.use((_req, res, next) => {
|
|
6632
6636
|
if (isShuttingDown) {
|
|
6633
6637
|
res.setHeader("Connection", "close");
|
|
@@ -8774,7 +8778,9 @@ async function setupServer() {
|
|
|
8774
8778
|
"GOPLUS_APP_SECRET",
|
|
8775
8779
|
"ALCHEMY_API_KEY",
|
|
8776
8780
|
"TENDERLY_API_KEY",
|
|
8777
|
-
"HELIUS_API_KEY"
|
|
8781
|
+
"HELIUS_API_KEY",
|
|
8782
|
+
"GOLDSKY_EDGE_API_KEY",
|
|
8783
|
+
"GOLDSKY_DATA_API_KEY"
|
|
8778
8784
|
];
|
|
8779
8785
|
const configured = [];
|
|
8780
8786
|
const degraded = [];
|
package/build/stdio.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hive-intelligence",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
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",
|
|
@@ -152,19 +152,19 @@
|
|
|
152
152
|
"swagger-ui-dist": "5.32.8",
|
|
153
153
|
"tsx": "4.23.0",
|
|
154
154
|
"winston": "3.19.0",
|
|
155
|
-
"zod": "^4.
|
|
155
|
+
"zod": "^4.6.7"
|
|
156
156
|
},
|
|
157
157
|
"overrides": {
|
|
158
158
|
"github-actionlint": {
|
|
159
159
|
"adm-zip": "0.6.1"
|
|
160
160
|
},
|
|
161
161
|
"esbuild": "0.28.1",
|
|
162
|
-
"fast-uri": "3.1.
|
|
162
|
+
"fast-uri": "3.1.9",
|
|
163
163
|
"hono": "4.13.13",
|
|
164
|
-
"ip-address": "10.7.
|
|
164
|
+
"ip-address": "10.7.4",
|
|
165
165
|
"qs": "6.16.0",
|
|
166
166
|
"proxy-addr": "2.0.8",
|
|
167
|
-
"undici": "7.
|
|
167
|
+
"undici": "7.30.1",
|
|
168
168
|
"source-map-js": "1.2.2"
|
|
169
169
|
},
|
|
170
170
|
"devDependencies": {
|