hive-intelligence 1.4.0 → 1.5.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.
- package/README.md +2 -2
- package/build/{auth-HRFQWQMZ.js → auth-Y4GXW376.js} +1 -1
- package/build/{browser-auth-KXIO5BHM.js → browser-auth-F62BMD7W.js} +1 -1
- package/build/{chunk-TNQ7GJ6Q.js → chunk-7VSK46QO.js} +73 -44
- package/build/{chunk-UFTNBCSA.js → chunk-AGM2CIRL.js} +86 -16
- package/build/{chunk-AQQAPAER.js → chunk-BDO27NIP.js} +2 -2
- package/build/{chunk-GHCYCBA3.js → chunk-GB4XMTDE.js} +2 -2
- package/build/{chunk-7DYHWY4Y.js → chunk-SFN772RL.js} +4 -4
- package/build/{chunk-AEU43ACS.js → chunk-TVBPCELA.js} +2 -2
- package/build/{chunk-TVQJY47C.js → chunk-WF34ZD5I.js} +6 -6
- package/build/{chunk-3OZFBWFK.js → chunk-XQPEFCSY.js} +1 -1
- package/build/cli.js +43 -29
- package/build/{completion-7KBW243H.js → completion-L3TDZ7ZK.js} +1 -1
- package/build/{doctor-GHUAUFS2.js → doctor-XG5IQCXK.js} +4 -4
- package/build/{init-UCTCUYFA.js → init-COHA3VZI.js} +3 -3
- package/build/{init-all-RG542NWG.js → init-all-YTQJLPLR.js} +14 -14
- package/build/{mcpServer-D7OXUDU5.js → mcpServer-XHIN5JER.js} +1 -1
- package/build/monitor-worker.js +2 -2
- package/build/{namespace-L5DGCY7K.js → namespace-XLMRFH5E.js} +1 -1
- package/build/release.json +4 -4
- package/build/{serve-K3IT7DS4.js → serve-PWMT5IRU.js} +1 -1
- package/build/server.js +22 -13
- package/build/stdio.js +1 -1
- package/build/{tools-D72ZH6P5.js → tools-SIOAOXW6.js} +1 -1
- package/build/{uninstall-SAOIPL6K.js → uninstall-TKDP6C4F.js} +7 -7
- package/build/{upgrade-4S5XT5JG.js → upgrade-ODPKMIDC.js} +1 -1
- package/build/{watch-IOSRSCFE.js → watch-MXJSNGL2.js} +1 -1
- package/package.json +1 -1
package/build/cli.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
executeTool
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SFN772RL.js";
|
|
6
6
|
import {
|
|
7
7
|
ExitCode
|
|
8
8
|
} from "./chunk-R6YZTFQL.js";
|
|
9
9
|
import {
|
|
10
10
|
NAMESPACE
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7VSK46QO.js";
|
|
12
12
|
import "./chunk-P7NLFSZQ.js";
|
|
13
13
|
import "./chunk-RU6QOFHH.js";
|
|
14
14
|
import {
|
|
@@ -3414,7 +3414,7 @@ process.on("SIGINT", () => process.exit(130));
|
|
|
3414
3414
|
process.on("SIGTERM", () => process.exit(143));
|
|
3415
3415
|
var program2 = new Command();
|
|
3416
3416
|
program2.name("hive").version(SERVER_VERSION).description(
|
|
3417
|
-
"Hive Intelligence
|
|
3417
|
+
"Hive Intelligence: managed crypto market data, DeFi, wallets, security, DEX, NFTs, and prediction markets for AI agents and developers"
|
|
3418
3418
|
).exitOverride().configureOutput({
|
|
3419
3419
|
writeErr: (str) => process.stderr.write(str),
|
|
3420
3420
|
outputError: (str, write) => {
|
|
@@ -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-PWMT5IRU.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-PWMT5IRU.js");
|
|
3457
3457
|
await startHttp(port, program2.opts().envFile);
|
|
3458
3458
|
} else {
|
|
3459
|
-
const { startStdio } = await import("./serve-
|
|
3459
|
+
const { startStdio } = await import("./serve-PWMT5IRU.js");
|
|
3460
3460
|
await startStdio(program2.opts().envFile);
|
|
3461
3461
|
}
|
|
3462
3462
|
});
|
|
@@ -3474,10 +3474,10 @@ for (const domain of NAMESPACE) {
|
|
|
3474
3474
|
}
|
|
3475
3475
|
subCmd.option("--args <json>", "Pass all arguments as JSON");
|
|
3476
3476
|
subCmd.action(async (opts) => {
|
|
3477
|
-
let args = {};
|
|
3477
|
+
let args = { ...sub.fixedArgs ?? {} };
|
|
3478
3478
|
if (opts.args) {
|
|
3479
3479
|
try {
|
|
3480
|
-
args = JSON.parse(opts.args);
|
|
3480
|
+
args = { ...args, ...JSON.parse(opts.args) };
|
|
3481
3481
|
} catch {
|
|
3482
3482
|
process.stderr.write("Error: Invalid JSON in --args\n");
|
|
3483
3483
|
process.exit(ExitCode.INVALID_ARGS);
|
|
@@ -3487,7 +3487,19 @@ for (const domain of NAMESPACE) {
|
|
|
3487
3487
|
for (const [paramName, argDef] of Object.entries(sub.args)) {
|
|
3488
3488
|
const optKey = argDef.flag.replace(/^--/, "").split(/[\s<]/)[0].replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
3489
3489
|
if (opts[optKey] !== void 0) {
|
|
3490
|
-
|
|
3490
|
+
if (argDef.type === "number") {
|
|
3491
|
+
const numeric = Number(opts[optKey]);
|
|
3492
|
+
if (Number.isNaN(numeric)) {
|
|
3493
|
+
process.stderr.write(
|
|
3494
|
+
`Error: ${argDef.flag.split(/[\s<]/)[0]} expects a number, got '${opts[optKey]}'
|
|
3495
|
+
`
|
|
3496
|
+
);
|
|
3497
|
+
process.exit(ExitCode.INVALID_ARGS);
|
|
3498
|
+
}
|
|
3499
|
+
args[paramName] = numeric;
|
|
3500
|
+
} else {
|
|
3501
|
+
args[paramName] = opts[optKey];
|
|
3502
|
+
}
|
|
3491
3503
|
}
|
|
3492
3504
|
}
|
|
3493
3505
|
}
|
|
@@ -3505,7 +3517,9 @@ for (const domain of NAMESPACE) {
|
|
|
3505
3517
|
const ask = (q) => new Promise((resolve) => rl.question(q, resolve));
|
|
3506
3518
|
for (const [paramName, argDef] of missingRequired) {
|
|
3507
3519
|
const answer = await ask(`${argDef.description || paramName}: `);
|
|
3508
|
-
if (answer.trim())
|
|
3520
|
+
if (answer.trim()) {
|
|
3521
|
+
args[paramName] = argDef.type === "number" && !Number.isNaN(Number(answer)) ? Number(answer) : answer.trim();
|
|
3522
|
+
}
|
|
3509
3523
|
}
|
|
3510
3524
|
rl.close();
|
|
3511
3525
|
}
|
|
@@ -3529,15 +3543,15 @@ for (const domain of NAMESPACE) {
|
|
|
3529
3543
|
}
|
|
3530
3544
|
var toolsCmd = program2.command("tools").description("Discover and execute tools");
|
|
3531
3545
|
toolsCmd.command("list").description("List all registered tools").option("--category <name>", "Filter by category").option("--provider <name>", "Filter by provider prefix").option("--limit <n>", "Max tools to show", "50").option("--offset <n>", "Skip first N tools", "0").action(async (opts) => {
|
|
3532
|
-
const { listTools } = await import("./tools-
|
|
3546
|
+
const { listTools } = await import("./tools-SIOAOXW6.js");
|
|
3533
3547
|
await listTools(opts);
|
|
3534
3548
|
});
|
|
3535
3549
|
toolsCmd.command("search <query>").description("Search tools by name or description").action(async (query) => {
|
|
3536
|
-
const { searchTools } = await import("./tools-
|
|
3550
|
+
const { searchTools } = await import("./tools-SIOAOXW6.js");
|
|
3537
3551
|
await searchTools(query);
|
|
3538
3552
|
});
|
|
3539
3553
|
toolsCmd.command("info <name>").description("Show detailed tool schema and description").action(async (name) => {
|
|
3540
|
-
const { toolInfo } = await import("./tools-
|
|
3554
|
+
const { toolInfo } = await import("./tools-SIOAOXW6.js");
|
|
3541
3555
|
await toolInfo(name);
|
|
3542
3556
|
});
|
|
3543
3557
|
toolsCmd.command("call <name>").description("Execute a tool by name").option("--args <json>", "Tool arguments as JSON (or pipe JSON via stdin)").action(async (name, opts) => {
|
|
@@ -3566,7 +3580,7 @@ toolsCmd.command("call <name>").description("Execute a tool by name").option("--
|
|
|
3566
3580
|
await executeTool(name, args, timeout);
|
|
3567
3581
|
});
|
|
3568
3582
|
toolsCmd.command("refresh").description("Force-refresh the tool catalog cache").action(async () => {
|
|
3569
|
-
const { refreshTools } = await import("./tools-
|
|
3583
|
+
const { refreshTools } = await import("./tools-SIOAOXW6.js");
|
|
3570
3584
|
await refreshTools();
|
|
3571
3585
|
});
|
|
3572
3586
|
var configCmd = program2.command("config").description("Generate configuration for MCP clients");
|
|
@@ -3616,7 +3630,7 @@ program2.command("init").description(
|
|
|
3616
3630
|
"Override the Hive API URL (e.g. for staging or self-hosted)"
|
|
3617
3631
|
).action(async (opts) => {
|
|
3618
3632
|
if (opts.minimal && !opts.all && !opts.browser) {
|
|
3619
|
-
const { runInit } = await import("./init-
|
|
3633
|
+
const { runInit } = await import("./init-COHA3VZI.js");
|
|
3620
3634
|
await runInit(opts);
|
|
3621
3635
|
return;
|
|
3622
3636
|
}
|
|
@@ -3625,7 +3639,7 @@ program2.command("init").description(
|
|
|
3625
3639
|
await runSetup();
|
|
3626
3640
|
return;
|
|
3627
3641
|
}
|
|
3628
|
-
const { runInitAll } = await import("./init-all-
|
|
3642
|
+
const { runInitAll } = await import("./init-all-YTQJLPLR.js");
|
|
3629
3643
|
const exitCode = await runInitAll({
|
|
3630
3644
|
all: Boolean(opts.all),
|
|
3631
3645
|
browser: Boolean(opts.browser),
|
|
@@ -3643,7 +3657,7 @@ program2.command("uninstall").description(
|
|
|
3643
3657
|
"--all",
|
|
3644
3658
|
"Clean every known client (default; explicit flag for symmetry with `init --all`)"
|
|
3645
3659
|
).option("--dry-run", "Preview removals without changing anything").action(async (opts) => {
|
|
3646
|
-
const { runUninstall } = await import("./uninstall-
|
|
3660
|
+
const { runUninstall } = await import("./uninstall-TKDP6C4F.js");
|
|
3647
3661
|
const exitCode = await runUninstall({
|
|
3648
3662
|
all: opts.all !== false,
|
|
3649
3663
|
dryRun: Boolean(opts.dryRun),
|
|
@@ -3652,19 +3666,19 @@ program2.command("uninstall").description(
|
|
|
3652
3666
|
if (exitCode !== 0) process.exit(exitCode);
|
|
3653
3667
|
});
|
|
3654
3668
|
program2.command("doctor").description("Diagnose environment and server connectivity").option("--probe", "Run live API probes (slower)").action(async (opts) => {
|
|
3655
|
-
const { runDoctor } = await import("./doctor-
|
|
3669
|
+
const { runDoctor } = await import("./doctor-XG5IQCXK.js");
|
|
3656
3670
|
await runDoctor(opts);
|
|
3657
3671
|
});
|
|
3658
3672
|
program2.command("upgrade").description("Update Hive to the latest published version").action(async () => {
|
|
3659
|
-
const { runUpgrade } = await import("./upgrade-
|
|
3673
|
+
const { runUpgrade } = await import("./upgrade-ODPKMIDC.js");
|
|
3660
3674
|
await runUpgrade();
|
|
3661
3675
|
});
|
|
3662
3676
|
program2.command("completion <shell>").description("Generate shell completion script (bash, zsh, fish, powershell)").option("--install", "Auto-install to shell rc file").action(async (shell, opts) => {
|
|
3663
3677
|
if (opts.install) {
|
|
3664
|
-
const { installCompletion } = await import("./completion-
|
|
3678
|
+
const { installCompletion } = await import("./completion-L3TDZ7ZK.js");
|
|
3665
3679
|
await installCompletion(shell);
|
|
3666
3680
|
} else {
|
|
3667
|
-
const { generateCompletion } = await import("./completion-
|
|
3681
|
+
const { generateCompletion } = await import("./completion-L3TDZ7ZK.js");
|
|
3668
3682
|
await generateCompletion(shell);
|
|
3669
3683
|
}
|
|
3670
3684
|
});
|
|
@@ -3676,31 +3690,31 @@ program2.command("keys").description("Retired \u2014 manage API keys in the dash
|
|
|
3676
3690
|
});
|
|
3677
3691
|
var authCmd = program2.command("auth").description("Manage authentication profiles");
|
|
3678
3692
|
authCmd.command("login").description("Log in via browser (or --manual to paste API key)").option("--profile <name>", "Profile name", "default").option("--manual", "Manually paste API key instead of browser login").action(async (opts) => {
|
|
3679
|
-
const { runLogin } = await import("./auth-
|
|
3693
|
+
const { runLogin } = await import("./auth-Y4GXW376.js");
|
|
3680
3694
|
await runLogin(opts);
|
|
3681
3695
|
});
|
|
3682
3696
|
authCmd.command("logout").description("Remove stored credentials").action(async () => {
|
|
3683
|
-
const { runLogout } = await import("./auth-
|
|
3697
|
+
const { runLogout } = await import("./auth-Y4GXW376.js");
|
|
3684
3698
|
await runLogout();
|
|
3685
3699
|
});
|
|
3686
3700
|
authCmd.command("whoami").description("Show current profile").action(async () => {
|
|
3687
|
-
const { runWhoami } = await import("./auth-
|
|
3701
|
+
const { runWhoami } = await import("./auth-Y4GXW376.js");
|
|
3688
3702
|
await runWhoami();
|
|
3689
3703
|
});
|
|
3690
3704
|
authCmd.command("profiles").description("List all profiles").action(async () => {
|
|
3691
|
-
const { runProfiles } = await import("./auth-
|
|
3705
|
+
const { runProfiles } = await import("./auth-Y4GXW376.js");
|
|
3692
3706
|
await runProfiles();
|
|
3693
3707
|
});
|
|
3694
3708
|
authCmd.command("switch <name>").description("Switch active profile").action(async (name) => {
|
|
3695
|
-
const { runSwitch } = await import("./auth-
|
|
3709
|
+
const { runSwitch } = await import("./auth-Y4GXW376.js");
|
|
3696
3710
|
await runSwitch(name);
|
|
3697
3711
|
});
|
|
3698
3712
|
program2.command("usage").description("Show your API usage and plan limits").action(async () => {
|
|
3699
|
-
const { runUsage } = await import("./auth-
|
|
3713
|
+
const { runUsage } = await import("./auth-Y4GXW376.js");
|
|
3700
3714
|
await runUsage();
|
|
3701
3715
|
});
|
|
3702
3716
|
program2.command("status").description("Quick health and version check").action(async () => {
|
|
3703
|
-
const { runStatus } = await import("./doctor-
|
|
3717
|
+
const { runStatus } = await import("./doctor-XG5IQCXK.js");
|
|
3704
3718
|
await runStatus();
|
|
3705
3719
|
});
|
|
3706
3720
|
program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
|
|
@@ -3731,7 +3745,7 @@ program2.command("watch <domain> <command>").description("Poll a tool on interva
|
|
|
3731
3745
|
}
|
|
3732
3746
|
const interval = parseInt(opts.interval, 10);
|
|
3733
3747
|
const timeout = parseInt(program2.opts().timeout, 10);
|
|
3734
|
-
const { runWatch } = await import("./watch-
|
|
3748
|
+
const { runWatch } = await import("./watch-MXJSNGL2.js");
|
|
3735
3749
|
await runWatch(cmdDef.tool, args, interval, timeout);
|
|
3736
3750
|
});
|
|
3737
3751
|
var aliasCmd = program2.command("alias").description("Manage command aliases");
|
|
@@ -48,7 +48,7 @@ async function runDoctor(opts) {
|
|
|
48
48
|
checks.push({
|
|
49
49
|
check: "Server health",
|
|
50
50
|
status: "PASS",
|
|
51
|
-
detail: `${resp.status}
|
|
51
|
+
detail: `${resp.status}: ${serverStatus}`
|
|
52
52
|
});
|
|
53
53
|
} else {
|
|
54
54
|
checks.push({
|
|
@@ -109,7 +109,7 @@ async function runDoctor(opts) {
|
|
|
109
109
|
checks.push({
|
|
110
110
|
check: "Updates",
|
|
111
111
|
status: "WARN",
|
|
112
|
-
detail: `v${SERVER_VERSION} -> v${latest} available
|
|
112
|
+
detail: `v${SERVER_VERSION} -> v${latest} available. Run: hive upgrade`
|
|
113
113
|
});
|
|
114
114
|
} else {
|
|
115
115
|
checks.push({
|
|
@@ -204,9 +204,9 @@ ${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-XHIN5JER.js");
|
|
208
208
|
const { resolveApiKey, resolveApiUrl } = await import("./config-dir-5IH7MOOT.js");
|
|
209
|
-
const { getActiveProfile, maskKey } = await import("./auth-
|
|
209
|
+
const { getActiveProfile, maskKey } = await import("./auth-Y4GXW376.js");
|
|
210
210
|
const apiUrl = resolveApiUrl();
|
|
211
211
|
const apiKey = resolveApiKey();
|
|
212
212
|
const profile = getActiveProfile();
|
|
@@ -112,7 +112,7 @@ Validating API key against ${baseUrl}...`);
|
|
|
112
112
|
console.log("API key validated successfully.\n");
|
|
113
113
|
} else if (resp.status === 401 || resp.status === 403) {
|
|
114
114
|
console.log(
|
|
115
|
-
`Warning: Server returned ${resp.status}
|
|
115
|
+
`Warning: Server returned ${resp.status}; the key may be invalid.
|
|
116
116
|
`
|
|
117
117
|
);
|
|
118
118
|
} else {
|
|
@@ -123,14 +123,14 @@ Validating API key against ${baseUrl}...`);
|
|
|
123
123
|
}
|
|
124
124
|
} catch {
|
|
125
125
|
console.log(
|
|
126
|
-
`Warning: Could not reach ${baseUrl}
|
|
126
|
+
`Warning: Could not reach ${baseUrl}; check the URL and try again.
|
|
127
127
|
`
|
|
128
128
|
);
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
const lines = Object.entries(existing).map(([k, v]) => `${k}=${v}`).join("\n");
|
|
132
132
|
if (opts.dryRun) {
|
|
133
|
-
console.log("Dry run
|
|
133
|
+
console.log("Dry run: would write to .env:\n");
|
|
134
134
|
console.log(redactEnvForDisplay(lines));
|
|
135
135
|
console.log("");
|
|
136
136
|
return;
|
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
detectClients,
|
|
4
4
|
installSkillsForClients
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TVBPCELA.js";
|
|
6
6
|
import {
|
|
7
7
|
getClaudeDesktopInstructions,
|
|
8
8
|
getCodexInstructions,
|
|
@@ -19,13 +19,13 @@ import {
|
|
|
19
19
|
} from "./chunk-QDZ7MAVN.js";
|
|
20
20
|
import {
|
|
21
21
|
browserLogin
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-BDO27NIP.js";
|
|
23
23
|
import {
|
|
24
24
|
saveProfile
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-WF34ZD5I.js";
|
|
26
26
|
import {
|
|
27
27
|
detectInstallMode
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-GB4XMTDE.js";
|
|
29
29
|
import "./chunk-M6REON2I.js";
|
|
30
30
|
import "./chunk-L326MQZP.js";
|
|
31
31
|
import "./chunk-ZXKFJQDE.js";
|
|
@@ -205,7 +205,7 @@ async function verifyConnection(apiUrlOverride) {
|
|
|
205
205
|
if (res.status === 401) {
|
|
206
206
|
return {
|
|
207
207
|
ok: true,
|
|
208
|
-
detail: "Hosted MCP reachable
|
|
208
|
+
detail: "Hosted MCP reachable: server answered with an auth challenge; finish sign-in inside each client."
|
|
209
209
|
};
|
|
210
210
|
}
|
|
211
211
|
if (!res.ok) {
|
|
@@ -229,12 +229,12 @@ async function verifyConnection(apiUrlOverride) {
|
|
|
229
229
|
const code = body.error.data?.code || "classified error";
|
|
230
230
|
return {
|
|
231
231
|
ok: true,
|
|
232
|
-
detail: `Hosted MCP reachable
|
|
232
|
+
detail: `Hosted MCP reachable: server answered with a classified response (${code})`
|
|
233
233
|
};
|
|
234
234
|
}
|
|
235
235
|
return {
|
|
236
236
|
ok: true,
|
|
237
|
-
detail: "Hosted MCP reachable
|
|
237
|
+
detail: "Hosted MCP reachable: anonymous hero call answered"
|
|
238
238
|
};
|
|
239
239
|
} catch {
|
|
240
240
|
return {
|
|
@@ -255,8 +255,8 @@ async function runInitAll(opts = {}) {
|
|
|
255
255
|
dryRun: Boolean(opts.dryRun)
|
|
256
256
|
};
|
|
257
257
|
if (!opts.json) {
|
|
258
|
-
w(bold("\nHive Intelligence
|
|
259
|
-
if (summary.dryRun) info("(dry-run
|
|
258
|
+
w(bold("\nHive Intelligence: Init"));
|
|
259
|
+
if (summary.dryRun) info("(dry-run: nothing will be written)");
|
|
260
260
|
}
|
|
261
261
|
if (opts.browser) {
|
|
262
262
|
step("Authenticating via browser");
|
|
@@ -304,7 +304,7 @@ async function runInitAll(opts = {}) {
|
|
|
304
304
|
} else if (!opts.all) {
|
|
305
305
|
continue;
|
|
306
306
|
} else {
|
|
307
|
-
info(`${c.name}
|
|
307
|
+
info(`${c.name}: not detected (${c.hint || "skipped"})`);
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
const browserOnly = Boolean(opts.browser && !opts.all);
|
|
@@ -327,10 +327,10 @@ async function runInitAll(opts = {}) {
|
|
|
327
327
|
ok(`${result.name} ${dim("\u2192 " + result.path)}`);
|
|
328
328
|
if (result.restartHint) info(result.restartHint);
|
|
329
329
|
} else if (result.manual && result.steps) {
|
|
330
|
-
warn(`${result.name}
|
|
330
|
+
warn(`${result.name}: manual setup required:`);
|
|
331
331
|
for (const stepText of result.steps) info(` \u2022 ${stepText}`);
|
|
332
332
|
} else {
|
|
333
|
-
bad(`${result.name}
|
|
333
|
+
bad(`${result.name}: ${result.error || "unknown error"}`);
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
336
|
for (const manualId of ["chatgpt-desktop", "grok"]) {
|
|
@@ -347,7 +347,7 @@ async function runInitAll(opts = {}) {
|
|
|
347
347
|
steps
|
|
348
348
|
});
|
|
349
349
|
info(
|
|
350
|
-
`${client.name}
|
|
350
|
+
`${client.name}: manual setup (${manualId === "grok" ? "grok.com/connectors" : "Settings \u2192 Apps"})`
|
|
351
351
|
);
|
|
352
352
|
}
|
|
353
353
|
if (!opts.skipSkills && !browserOnly) {
|
|
@@ -377,7 +377,7 @@ async function runInitAll(opts = {}) {
|
|
|
377
377
|
ok(verified.detail);
|
|
378
378
|
} else {
|
|
379
379
|
warn(
|
|
380
|
-
`Could not verify (${verified.detail})
|
|
380
|
+
`Could not verify (${verified.detail}). Run \`hive doctor\` for details; this can be a transient network issue`
|
|
381
381
|
);
|
|
382
382
|
}
|
|
383
383
|
}
|
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-XQPEFCSY.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-AGM2CIRL.js";
|
|
19
19
|
import "./chunk-L326MQZP.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.
|
|
4
|
-
"buildSha": "
|
|
5
|
-
"imageDigest": "sha256:
|
|
3
|
+
"version": "1.5.1",
|
|
4
|
+
"buildSha": "ab8276f834ef8b08bda9d320387e4390e9ab55b6",
|
|
5
|
+
"imageDigest": "sha256:9ef23428cc9d7da797e21152f4823f021ee8f0d3f3db94cf28410c8e1a72a124",
|
|
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.5.1/releases/v1.5.1.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-XHIN5JER.js");
|
|
11
11
|
const { getPendingUpdateVersion } = await import("./update-check-IEXPOYYR.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-XQPEFCSY.js";
|
|
10
10
|
import {
|
|
11
11
|
CategoryEndpoints,
|
|
12
12
|
HERO_TOOL_NAMES,
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
validateEndpointArgs,
|
|
96
96
|
verifyApiKey,
|
|
97
97
|
waitForRedisAvailability
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-AGM2CIRL.js";
|
|
99
99
|
import {
|
|
100
100
|
HIVE_AGENT_SKILLS
|
|
101
101
|
} from "./chunk-L326MQZP.js";
|
|
@@ -735,6 +735,15 @@ var require_ipaddr = __commonJS({
|
|
|
735
735
|
|
|
736
736
|
// src/server.ts
|
|
737
737
|
import dotenv from "dotenv";
|
|
738
|
+
|
|
739
|
+
// src/config/trustProxy.ts
|
|
740
|
+
var DEFAULT_TRUSTED_PROXY_ADDRESSES = "34.102.187.55";
|
|
741
|
+
function resolveTrustedProxies(raw = getEnvVar("TRUSTED_PROXY_ADDRESSES")) {
|
|
742
|
+
const addresses = (raw ?? DEFAULT_TRUSTED_PROXY_ADDRESSES).split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
743
|
+
return [...addresses, "loopback", "uniquelocal", "169.254.0.0/16"];
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
// src/server.ts
|
|
738
747
|
import { randomUUID as randomUUID4, timingSafeEqual as timingSafeEqual6 } from "crypto";
|
|
739
748
|
import { resolve } from "path";
|
|
740
749
|
import { fileURLToPath } from "url";
|
|
@@ -3185,7 +3194,7 @@ function replayResponse(res, cached) {
|
|
|
3185
3194
|
error: {
|
|
3186
3195
|
type: "invalid_request_error",
|
|
3187
3196
|
code: "SECRET_ALREADY_ISSUED",
|
|
3188
|
-
message: "This request was already completed and its one-time secret was returned only in the original response. It cannot be retrieved again
|
|
3197
|
+
message: "This request was already completed and its one-time secret was returned only in the original response. It cannot be retrieved again; create a new key if you no longer have it."
|
|
3189
3198
|
}
|
|
3190
3199
|
});
|
|
3191
3200
|
return;
|
|
@@ -3341,7 +3350,7 @@ router3.post(
|
|
|
3341
3350
|
plan: planId,
|
|
3342
3351
|
b2b_subjects_enabled: b2b_subjects_enabled ?? false,
|
|
3343
3352
|
...result.subjectSigningSecret ? { subject_signing_secret: result.subjectSigningSecret } : {},
|
|
3344
|
-
warning: "Save this key
|
|
3353
|
+
warning: "Save this key; it will not be shown again."
|
|
3345
3354
|
}
|
|
3346
3355
|
});
|
|
3347
3356
|
} catch (err) {
|
|
@@ -4122,13 +4131,13 @@ async function releaseCheckoutLock(userId) {
|
|
|
4122
4131
|
var CHECKOUT_RACE_LOST = apiError(
|
|
4123
4132
|
"invalid_request_error",
|
|
4124
4133
|
"CHECKOUT_IN_PROGRESS",
|
|
4125
|
-
"Another checkout request for this account is still being created. Next action: wait a couple of seconds and retry
|
|
4134
|
+
"Another checkout request for this account is still being created. Next action: wait a couple of seconds and retry; two simultaneous requests can only ever produce one charge."
|
|
4126
4135
|
);
|
|
4127
4136
|
function checkoutAlreadyOpen(chargeId) {
|
|
4128
4137
|
return apiError(
|
|
4129
4138
|
"invalid_request_error",
|
|
4130
4139
|
"CHECKOUT_IN_PROGRESS",
|
|
4131
|
-
`A payment page for this account is already open${chargeId ? ` (charge ${chargeId})` : ""}. Next action: finish that payment, or release the hold with POST /api/v1/billing/checkout/abandon if that page was abandoned
|
|
4140
|
+
`A payment page for this account is already open${chargeId ? ` (charge ${chargeId})` : ""}. Next action: finish that payment, or release the hold with POST /api/v1/billing/checkout/abandon if that page was abandoned; otherwise it clears on its own ${OPEN_CHARGE_WINDOW_MINUTES} minutes after the page was opened.`
|
|
4132
4141
|
);
|
|
4133
4142
|
}
|
|
4134
4143
|
function withCheckoutLock(req, res, next) {
|
|
@@ -5451,9 +5460,9 @@ import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types.js";
|
|
|
5451
5460
|
// src/services/anon-quota.ts
|
|
5452
5461
|
import { createHash as createHash4 } from "crypto";
|
|
5453
5462
|
import { z as z3 } from "zod";
|
|
5454
|
-
var ANON_QUOTA_EXHAUSTED_MESSAGE = "Anonymous free quota reached (resets 00:00 UTC). For continued access set HIVE_API_KEY
|
|
5455
|
-
var ANON_GLOBAL_CAP_MESSAGE = "Hive's shared anonymous allowance for today is spent (resets 00:00 UTC). This is a service-wide cap, not your personal one, and a key is not rate-limited by it: set HIVE_API_KEY
|
|
5456
|
-
var ANON_QUOTA_UNAVAILABLE_MESSAGE = "Anonymous access is temporarily unavailable because the quota backend is unreachable. Retry in a moment, or set HIVE_API_KEY
|
|
5463
|
+
var ANON_QUOTA_EXHAUSTED_MESSAGE = "Anonymous free quota reached (resets 00:00 UTC). For continued access set HIVE_API_KEY (create one free at https://hiveintelligence.xyz/dashboard/keys) or sign in via OAuth.";
|
|
5464
|
+
var ANON_GLOBAL_CAP_MESSAGE = "Hive's shared anonymous allowance for today is spent (resets 00:00 UTC). This is a service-wide cap, not your personal one, and a key is not rate-limited by it: set HIVE_API_KEY (create one free at https://hiveintelligence.xyz/dashboard/keys) or sign in via OAuth.";
|
|
5465
|
+
var ANON_QUOTA_UNAVAILABLE_MESSAGE = "Anonymous access is temporarily unavailable because the quota backend is unreachable. Retry in a moment, or set HIVE_API_KEY (create one free at https://hiveintelligence.xyz/dashboard/keys) for keyed access now.";
|
|
5457
5466
|
var ANON_IP_HASH_DOMAIN = "hive-anon-lane-v1";
|
|
5458
5467
|
var capSchema = z3.coerce.number().int().min(1).max(1e4);
|
|
5459
5468
|
var globalCapSchema = z3.coerce.number().int().min(1).max(1e6);
|
|
@@ -5682,7 +5691,7 @@ function buildServerCard() {
|
|
|
5682
5691
|
freeTier: {
|
|
5683
5692
|
monthlyCredits: 1e4,
|
|
5684
5693
|
requestsPerMinute: 30,
|
|
5685
|
-
description: "Demo tier
|
|
5694
|
+
description: "Demo tier, no credit card required"
|
|
5686
5695
|
}
|
|
5687
5696
|
},
|
|
5688
5697
|
authCompatibility,
|
|
@@ -6596,7 +6605,7 @@ var port = getPort();
|
|
|
6596
6605
|
function createHttpApp() {
|
|
6597
6606
|
return app;
|
|
6598
6607
|
}
|
|
6599
|
-
app.set("trust proxy",
|
|
6608
|
+
app.set("trust proxy", resolveTrustedProxies());
|
|
6600
6609
|
app.use(requestIdMiddleware);
|
|
6601
6610
|
app.use((_req, res, next) => {
|
|
6602
6611
|
if (isShuttingDown) {
|
|
@@ -6925,7 +6934,7 @@ async function debitMcpCredits(args) {
|
|
|
6925
6934
|
return {
|
|
6926
6935
|
ok: false,
|
|
6927
6936
|
noWallet: true,
|
|
6928
|
-
error: "This account has no credit wallet provisioned. This is an account setup issue, not a quota limit
|
|
6937
|
+
error: "This account has no credit wallet provisioned. This is an account setup issue, not a quota limit. Visit https://hiveintelligence.xyz/dashboard to initialize billing or contact support."
|
|
6929
6938
|
};
|
|
6930
6939
|
}
|
|
6931
6940
|
if (debit.code === "insufficient") {
|
|
@@ -7724,7 +7733,7 @@ function createStatelessMcpHandler(scope) {
|
|
|
7724
7733
|
return {
|
|
7725
7734
|
type: "authentication_error",
|
|
7726
7735
|
code: "ANON_AUTH_REQUIRED",
|
|
7727
|
-
message: "This tool requires authentication. Set HIVE_API_KEY
|
|
7736
|
+
message: "This tool requires authentication. Set HIVE_API_KEY (create one free at https://hiveintelligence.xyz/dashboard/keys) or sign in via OAuth.",
|
|
7728
7737
|
runtimeStatus: "failing"
|
|
7729
7738
|
};
|
|
7730
7739
|
}
|
package/build/stdio.js
CHANGED
|
@@ -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-XLMRFH5E.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)
|
|
@@ -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-TVBPCELA.js";
|
|
6
6
|
import {
|
|
7
7
|
removeClaudeCodeUserConfig,
|
|
8
8
|
removeClaudeDesktopConfig,
|
|
@@ -51,8 +51,8 @@ async function runUninstall(opts = {}) {
|
|
|
51
51
|
dryRun: Boolean(opts.dryRun)
|
|
52
52
|
};
|
|
53
53
|
if (!opts.json) {
|
|
54
|
-
w(bold("\nHive Intelligence
|
|
55
|
-
if (summary.dryRun) info("(dry-run
|
|
54
|
+
w(bold("\nHive Intelligence: Uninstall"));
|
|
55
|
+
if (summary.dryRun) info("(dry-run: nothing will be changed)");
|
|
56
56
|
}
|
|
57
57
|
const clients = detectClients();
|
|
58
58
|
if (!opts.json) w(bold("\nRemoving from client configs"));
|
|
@@ -60,7 +60,7 @@ async function runUninstall(opts = {}) {
|
|
|
60
60
|
for (const c of clients) {
|
|
61
61
|
if (c.id === "chatgpt-desktop" || c.id === "grok") {
|
|
62
62
|
info(
|
|
63
|
-
c.id === "grok" ? "Grok
|
|
63
|
+
c.id === "grok" ? "Grok: remove Hive once at grok.com/connectors" : "OpenAI / ChatGPT apps: remove the Hive app connector manually"
|
|
64
64
|
);
|
|
65
65
|
continue;
|
|
66
66
|
}
|
|
@@ -81,14 +81,14 @@ async function runUninstall(opts = {}) {
|
|
|
81
81
|
...result.instructions && { instructions: result.instructions }
|
|
82
82
|
});
|
|
83
83
|
if (result.removed) ok(`${c.name} ${dim("(" + result.path + ")")}`);
|
|
84
|
-
else if (!result.manual) info(`${c.name}
|
|
84
|
+
else if (!result.manual) info(`${c.name}: no Hive entry to remove`);
|
|
85
85
|
if (result.manual && result.instructions) {
|
|
86
|
-
warn(`${c.name}
|
|
86
|
+
warn(`${c.name} (finish in the app): ${result.instructions}`);
|
|
87
87
|
}
|
|
88
88
|
clientIds.push(c.id);
|
|
89
89
|
} catch (err) {
|
|
90
90
|
warn(
|
|
91
|
-
`${c.name}
|
|
91
|
+
`${c.name} failed: ${err instanceof Error ? err.message : err}`
|
|
92
92
|
);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
detectInstallMode,
|
|
4
4
|
runUpgrade
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GB4XMTDE.js";
|
|
6
6
|
import "./chunk-M6REON2I.js";
|
|
7
7
|
import "./chunk-ZXKFJQDE.js";
|
|
8
8
|
import "./chunk-725R3KLJ.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
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-SFN772RL.js";
|
|
5
5
|
import "./chunk-P7NLFSZQ.js";
|
|
6
6
|
import "./chunk-RU6QOFHH.js";
|
|
7
7
|
import "./chunk-EPF36Q3Z.js";
|