hive-intelligence 1.1.0 → 1.1.3
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 +243 -166
- package/agent-skills/.claude-plugin/plugin.json +105 -0
- package/{LICENSE → agent-skills/LICENSE} +1 -1
- package/agent-skills/README.md +146 -0
- package/agent-skills/SKILL.md +68 -0
- package/agent-skills/evals/README.md +20 -0
- package/agent-skills/evals/trigger-queries.json +194 -0
- package/agent-skills/package.json +49 -0
- package/agent-skills/packs/hive-build/SKILL.md +327 -0
- package/agent-skills/packs/hive-build/evals/evals.json +28 -0
- package/agent-skills/packs/hive-build-onboarding/SKILL.md +137 -0
- package/agent-skills/packs/hive-build-onboarding/evals/evals.json +27 -0
- package/agent-skills/packs/hive-cli/SKILL.md +141 -0
- package/agent-skills/packs/hive-cli/evals/evals.json +27 -0
- package/agent-skills/packs/hive-defi-research/SKILL.md +42 -0
- package/agent-skills/packs/hive-defi-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-defi-research/references/workflow.md +41 -0
- package/agent-skills/packs/hive-dex-pool-analysis/SKILL.md +41 -0
- package/agent-skills/packs/hive-dex-pool-analysis/evals/evals.json +27 -0
- package/agent-skills/packs/hive-dex-pool-analysis/references/workflow.md +42 -0
- package/agent-skills/packs/hive-market-research/SKILL.md +45 -0
- package/agent-skills/packs/hive-market-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-market-research/references/workflow.md +47 -0
- package/agent-skills/packs/hive-mcp/SKILL.md +224 -0
- package/agent-skills/packs/hive-mcp/evals/evals.json +38 -0
- package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +83 -0
- package/agent-skills/packs/hive-network-infrastructure/SKILL.md +44 -0
- package/agent-skills/packs/hive-network-infrastructure/evals/evals.json +27 -0
- package/agent-skills/packs/hive-network-infrastructure/references/workflow.md +41 -0
- package/agent-skills/packs/hive-nft-research/SKILL.md +41 -0
- package/agent-skills/packs/hive-nft-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-nft-research/references/workflow.md +42 -0
- package/agent-skills/packs/hive-prediction-markets/SKILL.md +44 -0
- package/agent-skills/packs/hive-prediction-markets/evals/evals.json +27 -0
- package/agent-skills/packs/hive-prediction-markets/references/workflow.md +42 -0
- package/agent-skills/packs/hive-query/SKILL.md +98 -0
- package/agent-skills/packs/hive-query/evals/evals.json +38 -0
- package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +54 -0
- package/agent-skills/packs/hive-security-risk/SKILL.md +42 -0
- package/agent-skills/packs/hive-security-risk/evals/evals.json +27 -0
- package/agent-skills/packs/hive-security-risk/references/workflow.md +46 -0
- package/agent-skills/packs/hive-solana-analysis/SKILL.md +42 -0
- package/agent-skills/packs/hive-solana-analysis/evals/evals.json +27 -0
- package/agent-skills/packs/hive-solana-analysis/references/workflow.md +42 -0
- package/agent-skills/packs/hive-token-diligence/SKILL.md +44 -0
- package/agent-skills/packs/hive-token-diligence/evals/evals.json +27 -0
- package/agent-skills/packs/hive-token-diligence/references/workflow.md +45 -0
- package/agent-skills/packs/hive-tool-discovery/SKILL.md +49 -0
- package/agent-skills/packs/hive-tool-discovery/evals/evals.json +38 -0
- package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +62 -0
- package/agent-skills/packs/hive-wallet-investigation/SKILL.md +42 -0
- package/agent-skills/packs/hive-wallet-investigation/evals/evals.json +27 -0
- package/agent-skills/packs/hive-wallet-investigation/references/workflow.md +45 -0
- package/agent-skills/references/agents-routing.md +49 -0
- package/agent-skills/scripts/validate-agent-skills-package.mjs +178 -0
- package/agent-skills/skills.sh.json +40 -0
- package/bin/hive-mcp.js +33 -0
- package/build/{alias-INGXWFCG.js → alias-CZ3DEYHF.js} +3 -3
- package/build/api-client-I23XLSHU.js +28 -0
- package/build/auth-KKINNBXT.js +40 -0
- package/build/browser-auth-EEFGRHWY.js +9 -0
- package/build/{cache-US4LSZPI.js → cache-EGNMENNA.js} +3 -3
- package/build/chunk-2MYMHMBF.js +340 -0
- package/build/chunk-2MYMHMBF.js.map +1 -0
- package/build/chunk-2X3U4DFK.js +77369 -0
- package/build/chunk-2X3U4DFK.js.map +1 -0
- package/build/chunk-B6G222LS.js +265 -0
- package/build/chunk-B6G222LS.js.map +1 -0
- package/build/{chunk-WKVZVQTG.js → chunk-DYJBTKNR.js} +4 -4
- package/build/chunk-DYJBTKNR.js.map +1 -0
- package/build/chunk-IDZD2NVG.js +247 -0
- package/build/chunk-IDZD2NVG.js.map +1 -0
- package/build/chunk-IZTN7WFH.js +250 -0
- package/build/chunk-IZTN7WFH.js.map +1 -0
- package/build/{chunk-QMRVH5ZP.js → chunk-KBVPIZS4.js} +10 -2
- package/build/chunk-KGYBTXIN.js +86 -0
- package/build/chunk-KGYBTXIN.js.map +1 -0
- package/build/{chunk-X7ETBCBP.js → chunk-MPIUUE3T.js} +60 -272
- package/build/chunk-MPIUUE3T.js.map +1 -0
- package/build/chunk-PGBVNMNZ.js +127 -0
- package/build/chunk-PGBVNMNZ.js.map +1 -0
- package/build/chunk-QNCI4DEB.js +88 -0
- package/build/chunk-QNCI4DEB.js.map +1 -0
- package/build/chunk-RKICZ6DZ.js +497 -0
- package/build/chunk-RKICZ6DZ.js.map +1 -0
- package/build/chunk-UKHZIVDT.js +44 -0
- package/build/chunk-UKHZIVDT.js.map +1 -0
- package/build/{chunk-XQJ6PB2L.js → chunk-V77LO4RO.js} +1 -1
- package/build/chunk-V77LO4RO.js.map +1 -0
- package/build/{chunk-CP3FXEQA.js → chunk-XYBEFFZ3.js} +5 -6
- package/build/chunk-XYBEFFZ3.js.map +1 -0
- package/build/cli.js +134 -122
- package/build/cli.js.map +1 -1
- package/build/{completion-SBTSXTR3.js → completion-BELZL7ND.js} +55 -50
- package/build/completion-BELZL7ND.js.map +1 -0
- package/build/config-TDX4VUGW.js +58 -0
- package/build/{config-dir-IEOID7Q6.js → config-dir-V43W2WIA.js} +3 -3
- package/build/{doctor-7WZMCQC7.js → doctor-5K5UWHNX.js} +13 -13
- package/build/doctor-5K5UWHNX.js.map +1 -0
- package/build/{errors-U6UZWVSD.js → errors-E6MVUBNA.js} +3 -3
- package/build/format-TSFSI2K7.js +43 -0
- package/build/format-TSFSI2K7.js.map +1 -0
- package/build/{init-CAVIFVSH.js → init-YQ5NBICF.js} +2 -2
- package/build/init-all-6OWEQALB.js +274 -0
- package/build/init-all-6OWEQALB.js.map +1 -0
- package/build/mcpServer-AEX3RQ4U.js +20 -0
- package/build/mcpServer-AEX3RQ4U.js.map +1 -0
- package/build/{namespace-7SBV4G7R.js → namespace-PVHBFDW2.js} +3 -3
- package/build/namespace-PVHBFDW2.js.map +1 -0
- package/build/{open-FUXYIHFO.js → open-YUIJP37F.js} +6 -6
- package/build/open-YUIJP37F.js.map +1 -0
- package/build/{output-7PGQWJY2.js → output-IYJBFCYK.js} +3 -3
- package/build/output-IYJBFCYK.js.map +1 -0
- package/build/serve-KWNJK6EY.js +44 -0
- package/build/serve-KWNJK6EY.js.map +1 -0
- package/build/server.js +4749 -14332
- package/build/server.js.map +1 -1
- package/build/setup-YTUKMPNP.js +136 -0
- package/build/setup-YTUKMPNP.js.map +1 -0
- package/build/stdio.js +31 -0
- package/build/stdio.js.map +1 -0
- package/build/{telemetry-KNWMQURH.js → telemetry-5IPRKZBL.js} +4 -4
- package/build/telemetry-5IPRKZBL.js.map +1 -0
- package/build/{tools-XEGCLA4I.js → tools-PJHWFCAG.js} +15 -15
- package/build/uninstall-HWXEIP6K.js +115 -0
- package/build/uninstall-HWXEIP6K.js.map +1 -0
- package/build/{watch-A75SVIQ6.js → watch-KZ5EDZK3.js} +7 -7
- package/package.json +124 -24
- package/bin/hive.js +0 -25
- package/build/auth-77MKFFBQ.js +0 -233
- package/build/auth-77MKFFBQ.js.map +0 -1
- package/build/chunk-CP3FXEQA.js.map +0 -1
- package/build/chunk-DTUDM6HX.js +0 -3108
- package/build/chunk-DTUDM6HX.js.map +0 -1
- package/build/chunk-LBTLYTZS.js +0 -115
- package/build/chunk-LBTLYTZS.js.map +0 -1
- package/build/chunk-OK3LSM73.js +0 -22
- package/build/chunk-OK3LSM73.js.map +0 -1
- package/build/chunk-RRI526CJ.js +0 -212
- package/build/chunk-RRI526CJ.js.map +0 -1
- package/build/chunk-WKVZVQTG.js.map +0 -1
- package/build/chunk-X7ETBCBP.js.map +0 -1
- package/build/chunk-XQJ6PB2L.js.map +0 -1
- package/build/completion-SBTSXTR3.js.map +0 -1
- package/build/config-2VDB2ZHE.js +0 -100
- package/build/config-2VDB2ZHE.js.map +0 -1
- package/build/doctor-7WZMCQC7.js.map +0 -1
- package/build/format-CVLLK6GD.js +0 -75
- package/build/format-CVLLK6GD.js.map +0 -1
- package/build/open-FUXYIHFO.js.map +0 -1
- package/build/version-3TZ3U4IR.js +0 -9
- /package/build/{alias-INGXWFCG.js.map → alias-CZ3DEYHF.js.map} +0 -0
- /package/build/{chunk-QMRVH5ZP.js.map → api-client-I23XLSHU.js.map} +0 -0
- /package/build/{config-dir-IEOID7Q6.js.map → auth-KKINNBXT.js.map} +0 -0
- /package/build/{errors-U6UZWVSD.js.map → browser-auth-EEFGRHWY.js.map} +0 -0
- /package/build/{cache-US4LSZPI.js.map → cache-EGNMENNA.js.map} +0 -0
- /package/build/{namespace-7SBV4G7R.js.map → chunk-KBVPIZS4.js.map} +0 -0
- /package/build/{output-7PGQWJY2.js.map → config-TDX4VUGW.js.map} +0 -0
- /package/build/{telemetry-KNWMQURH.js.map → config-dir-V43W2WIA.js.map} +0 -0
- /package/build/{version-3TZ3U4IR.js.map → errors-E6MVUBNA.js.map} +0 -0
- /package/build/{init-CAVIFVSH.js.map → init-YQ5NBICF.js.map} +0 -0
- /package/build/{tools-XEGCLA4I.js.map → tools-PJHWFCAG.js.map} +0 -0
- /package/build/{watch-A75SVIQ6.js.map → watch-KZ5EDZK3.js.map} +0 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
saveProfile
|
|
4
|
+
} from "./chunk-RKICZ6DZ.js";
|
|
5
|
+
import {
|
|
6
|
+
detectClients,
|
|
7
|
+
installSkillsForClients
|
|
8
|
+
} from "./chunk-IDZD2NVG.js";
|
|
9
|
+
import {
|
|
10
|
+
printChatGptDesktopInstructions,
|
|
11
|
+
writeClaudeCodeUserConfig,
|
|
12
|
+
writeClaudeDesktopConfig,
|
|
13
|
+
writeCursorConfig,
|
|
14
|
+
writeGeminiCliConfig,
|
|
15
|
+
writeVscodeConfig,
|
|
16
|
+
writeWindsurfConfig
|
|
17
|
+
} from "./chunk-2MYMHMBF.js";
|
|
18
|
+
import {
|
|
19
|
+
browserLogin
|
|
20
|
+
} from "./chunk-PGBVNMNZ.js";
|
|
21
|
+
import "./chunk-B6G222LS.js";
|
|
22
|
+
import {
|
|
23
|
+
bold,
|
|
24
|
+
dim,
|
|
25
|
+
green,
|
|
26
|
+
red,
|
|
27
|
+
yellow
|
|
28
|
+
} from "./chunk-XYBEFFZ3.js";
|
|
29
|
+
import {
|
|
30
|
+
resolveApiKey,
|
|
31
|
+
resolveApiUrl
|
|
32
|
+
} from "./chunk-V77LO4RO.js";
|
|
33
|
+
import "./chunk-KBVPIZS4.js";
|
|
34
|
+
|
|
35
|
+
// src/cli/init-all.ts
|
|
36
|
+
function w(line) {
|
|
37
|
+
process.stderr.write(line + "\n");
|
|
38
|
+
}
|
|
39
|
+
function step(label) {
|
|
40
|
+
w(`
|
|
41
|
+
${bold(label)}`);
|
|
42
|
+
}
|
|
43
|
+
function ok(line) {
|
|
44
|
+
w(` ${green("\u2713")} ${line}`);
|
|
45
|
+
}
|
|
46
|
+
function bad(line) {
|
|
47
|
+
w(` ${red("\u2717")} ${line}`);
|
|
48
|
+
}
|
|
49
|
+
function warn(line) {
|
|
50
|
+
w(` ${yellow("!")} ${line}`);
|
|
51
|
+
}
|
|
52
|
+
function info(line) {
|
|
53
|
+
w(` ${dim(line)}`);
|
|
54
|
+
}
|
|
55
|
+
function writeForClient(client) {
|
|
56
|
+
const base = {
|
|
57
|
+
client: client.id,
|
|
58
|
+
name: client.name
|
|
59
|
+
};
|
|
60
|
+
if (!client.programmable) {
|
|
61
|
+
if (client.id === "chatgpt-desktop") {
|
|
62
|
+
const inst = printChatGptDesktopInstructions();
|
|
63
|
+
return { ...base, ok: false, manual: true, steps: inst.steps };
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
...base,
|
|
67
|
+
ok: false,
|
|
68
|
+
manual: true,
|
|
69
|
+
error: client.hint || "Manual setup required"
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
let result;
|
|
74
|
+
switch (client.id) {
|
|
75
|
+
case "claude-code":
|
|
76
|
+
result = writeClaudeCodeUserConfig();
|
|
77
|
+
break;
|
|
78
|
+
case "claude-desktop":
|
|
79
|
+
result = writeClaudeDesktopConfig();
|
|
80
|
+
break;
|
|
81
|
+
case "cursor":
|
|
82
|
+
result = writeCursorConfig();
|
|
83
|
+
break;
|
|
84
|
+
case "vscode":
|
|
85
|
+
result = writeVscodeConfig();
|
|
86
|
+
break;
|
|
87
|
+
case "windsurf":
|
|
88
|
+
result = writeWindsurfConfig();
|
|
89
|
+
break;
|
|
90
|
+
case "gemini-cli":
|
|
91
|
+
result = writeGeminiCliConfig();
|
|
92
|
+
break;
|
|
93
|
+
case "chatgpt-desktop":
|
|
94
|
+
return {
|
|
95
|
+
...base,
|
|
96
|
+
ok: false,
|
|
97
|
+
manual: true,
|
|
98
|
+
steps: printChatGptDesktopInstructions().steps
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
...base,
|
|
103
|
+
ok: result.written,
|
|
104
|
+
path: result.path,
|
|
105
|
+
error: result.written ? void 0 : "No API key resolved \u2014 auth first or set HIVE_API_KEY"
|
|
106
|
+
};
|
|
107
|
+
} catch (err) {
|
|
108
|
+
return {
|
|
109
|
+
...base,
|
|
110
|
+
ok: false,
|
|
111
|
+
error: err instanceof Error ? err.message : String(err)
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function verifyConnection() {
|
|
116
|
+
const apiKey = resolveApiKey();
|
|
117
|
+
const apiUrl = resolveApiUrl();
|
|
118
|
+
if (!apiKey) return false;
|
|
119
|
+
try {
|
|
120
|
+
const controller = new AbortController();
|
|
121
|
+
const timer = setTimeout(() => controller.abort(), 8e3);
|
|
122
|
+
const res = await fetch(`${apiUrl}/api/v1/tools?limit=1`, {
|
|
123
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
124
|
+
signal: controller.signal
|
|
125
|
+
});
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
return res.ok;
|
|
128
|
+
} catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async function runInitAll(opts = {}) {
|
|
133
|
+
const summary = {
|
|
134
|
+
authenticated: false,
|
|
135
|
+
apiKeyPresent: Boolean(resolveApiKey()),
|
|
136
|
+
apiUrl: opts.apiUrl || resolveApiUrl(),
|
|
137
|
+
clients: [],
|
|
138
|
+
skills: [],
|
|
139
|
+
verified: null,
|
|
140
|
+
dryRun: Boolean(opts.dryRun)
|
|
141
|
+
};
|
|
142
|
+
if (!opts.json) {
|
|
143
|
+
w(bold("\nHive Intelligence \u2014 Init"));
|
|
144
|
+
if (summary.dryRun) info("(dry-run \u2014 nothing will be written)");
|
|
145
|
+
}
|
|
146
|
+
if (opts.browser) {
|
|
147
|
+
step("Authenticating via browser");
|
|
148
|
+
if (summary.dryRun) {
|
|
149
|
+
info("Would open browser for PKCE auth at /auth/cli");
|
|
150
|
+
summary.authenticated = false;
|
|
151
|
+
} else {
|
|
152
|
+
try {
|
|
153
|
+
const result = await browserLogin({
|
|
154
|
+
baseUrl: process.env.HIVE_AUTH_BASE_URL || "https://hiveintelligence.xyz",
|
|
155
|
+
timeout: 3e5
|
|
156
|
+
});
|
|
157
|
+
saveProfile("default", result.key, summary.apiUrl);
|
|
158
|
+
summary.authenticated = true;
|
|
159
|
+
summary.apiKeyPresent = true;
|
|
160
|
+
ok(`Signed in as ${result.email || "(email unavailable)"}`);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
bad(`Browser auth failed: ${err instanceof Error ? err.message : err}`);
|
|
163
|
+
if (!summary.apiKeyPresent) {
|
|
164
|
+
warn("No saved key \u2014 clients will be configured with placeholder.");
|
|
165
|
+
warn("Run `hive auth login --manual` to paste a key by hand.");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
} else if (!summary.apiKeyPresent) {
|
|
170
|
+
step("Authentication");
|
|
171
|
+
warn("No API key in env or saved profile.");
|
|
172
|
+
info("Run `hive init --browser` to authenticate via PKCE flow,");
|
|
173
|
+
info("or `hive auth login --manual` to paste a key by hand.");
|
|
174
|
+
} else {
|
|
175
|
+
step("Authentication");
|
|
176
|
+
ok("Existing API key resolved (env or saved profile)");
|
|
177
|
+
summary.authenticated = true;
|
|
178
|
+
}
|
|
179
|
+
step("Detecting MCP-capable clients");
|
|
180
|
+
const detected = detectClients();
|
|
181
|
+
for (const c of detected) {
|
|
182
|
+
if (c.detected) {
|
|
183
|
+
ok(`${c.name} ${dim("(" + c.configPath + ")")}`);
|
|
184
|
+
} else if (!opts.all) {
|
|
185
|
+
continue;
|
|
186
|
+
} else {
|
|
187
|
+
info(`${c.name} \u2014 not detected (${c.hint || "skipped"})`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const targets = opts.all ? detected.filter((c) => c.detected && c.programmable) : detected.filter((c) => c.detected && c.programmable);
|
|
191
|
+
step("Writing client configs");
|
|
192
|
+
for (const client of targets) {
|
|
193
|
+
if (summary.dryRun) {
|
|
194
|
+
info(`Would write ${client.configPath}`);
|
|
195
|
+
summary.clients.push({
|
|
196
|
+
client: client.id,
|
|
197
|
+
name: client.name,
|
|
198
|
+
ok: true,
|
|
199
|
+
path: client.configPath
|
|
200
|
+
});
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const result = writeForClient(client);
|
|
204
|
+
summary.clients.push(result);
|
|
205
|
+
if (result.ok && result.path) {
|
|
206
|
+
ok(`${result.name} ${dim("\u2192 " + result.path)}`);
|
|
207
|
+
} else if (result.manual && result.steps) {
|
|
208
|
+
warn(`${result.name} \u2014 manual setup required:`);
|
|
209
|
+
for (const stepText of result.steps) info(` \u2022 ${stepText}`);
|
|
210
|
+
} else {
|
|
211
|
+
bad(`${result.name} \u2014 ${result.error || "unknown error"}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const chatgpt = detected.find((c) => c.id === "chatgpt-desktop");
|
|
215
|
+
if (chatgpt && !summary.clients.some((c) => c.client === "chatgpt-desktop")) {
|
|
216
|
+
const inst = printChatGptDesktopInstructions();
|
|
217
|
+
summary.clients.push({
|
|
218
|
+
client: "chatgpt-desktop",
|
|
219
|
+
name: chatgpt.name,
|
|
220
|
+
ok: false,
|
|
221
|
+
manual: true,
|
|
222
|
+
steps: inst.steps
|
|
223
|
+
});
|
|
224
|
+
info(`${chatgpt.name} \u2014 manual setup (Settings \u2192 Connectors)`);
|
|
225
|
+
}
|
|
226
|
+
if (!opts.skipSkills) {
|
|
227
|
+
step("Installing skill packs");
|
|
228
|
+
if (summary.dryRun) {
|
|
229
|
+
info("Would copy agent-skills/packs/ into per-client skills dirs");
|
|
230
|
+
} else {
|
|
231
|
+
const skillTargets = targets.map((c) => c.id);
|
|
232
|
+
const skillResults = installSkillsForClients(skillTargets);
|
|
233
|
+
summary.skills = skillResults;
|
|
234
|
+
for (const r of skillResults) {
|
|
235
|
+
if (r.installed.length > 0) {
|
|
236
|
+
ok(
|
|
237
|
+
`${r.client}: ${r.installed.length} pack${r.installed.length === 1 ? "" : "s"} ${dim("\u2192 " + r.destination)}`
|
|
238
|
+
);
|
|
239
|
+
} else if (r.reason) {
|
|
240
|
+
info(`${r.client}: ${r.reason}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (!opts.skipVerify && !summary.dryRun) {
|
|
246
|
+
step("Verifying connection");
|
|
247
|
+
const verified = await verifyConnection();
|
|
248
|
+
summary.verified = verified;
|
|
249
|
+
if (verified) ok("Connection to Hive verified");
|
|
250
|
+
else
|
|
251
|
+
warn(
|
|
252
|
+
"Could not verify \u2014 run `hive doctor` for details (this can be a transient network issue)"
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
if (opts.json) {
|
|
256
|
+
process.stdout.write(JSON.stringify(summary, null, 2) + "\n");
|
|
257
|
+
} else {
|
|
258
|
+
w("");
|
|
259
|
+
w(bold("Next steps"));
|
|
260
|
+
w(dim(" Try a query: ") + "hive market price --ids bitcoin --vs usd");
|
|
261
|
+
w(dim(" Open dashboard: ") + "hive open dashboard");
|
|
262
|
+
w(dim(" Health check: ") + "hive doctor");
|
|
263
|
+
w("");
|
|
264
|
+
}
|
|
265
|
+
const anyClientOk = summary.clients.some((c) => c.ok);
|
|
266
|
+
const browserOnly = opts.browser && !opts.all;
|
|
267
|
+
if (browserOnly && summary.authenticated) return 0;
|
|
268
|
+
if (!summary.dryRun && !anyClientOk) return 1;
|
|
269
|
+
return 0;
|
|
270
|
+
}
|
|
271
|
+
export {
|
|
272
|
+
runInitAll
|
|
273
|
+
};
|
|
274
|
+
//# sourceMappingURL=init-all-6OWEQALB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/init-all.ts"],"sourcesContent":["/**\n * `hive init` orchestrator — the one-command install path.\n *\n * Modes (driven by flags):\n *\n * hive init — interactive: walks through auth +\n * asks which clients to set up.\n * hive init --browser — runs PKCE browser auth, no client\n * install. Equivalent to\n * `hive auth login`.\n * hive init --all — registers Hive in every detected\n * client. Requires HIVE_API_KEY (or\n * a saved profile from a prior auth).\n * hive init --all --browser — the marketing path. Auth via\n * browser, then register every\n * detected client + copy skill packs.\n *\n * Always idempotent. Re-running just refreshes the configs.\n *\n * Output goes to stderr (status messages) or stdout (--json summary\n * for scripting). Exit code 0 on partial success — the caller sees\n * the per-client outcome in the summary.\n */\n\nimport { browserLogin } from \"./browser-auth.js\";\nimport {\n detectClients,\n type ClientId,\n type ClientInfo,\n} from \"./detect-clients.js\";\nimport {\n printChatGptDesktopInstructions,\n writeClaudeCodeUserConfig,\n writeClaudeDesktopConfig,\n writeCursorConfig,\n writeGeminiCliConfig,\n writeVscodeConfig,\n writeWindsurfConfig,\n} from \"./config.js\";\nimport { resolveApiKey, resolveApiUrl } from \"./config-dir.js\";\nimport { saveProfile } from \"./auth.js\";\nimport { installSkillsForClients, type SkillInstallResult } from \"./skills.js\";\nimport { bold, dim, green, red, yellow } from \"./output.js\";\n\nexport interface InitAllOptions {\n /** Run PKCE browser auth before installing. */\n browser?: boolean;\n /** Configure every detected client (vs. interactive picker). */\n all?: boolean;\n /** Skip skill-pack copy step. */\n skipSkills?: boolean;\n /** Don't run the verification call after install. */\n skipVerify?: boolean;\n /** Print the plan; don't write anything. */\n dryRun?: boolean;\n /** JSON output mode (for scripting). */\n json?: boolean;\n /** Override API URL (for staging / self-hosted). */\n apiUrl?: string;\n}\n\ninterface ConfigWriteResult {\n client: ClientId;\n name: string;\n ok: boolean;\n path?: string;\n manual?: boolean;\n steps?: string[];\n error?: string;\n}\n\ninterface InitSummary {\n authenticated: boolean;\n apiKeyPresent: boolean;\n apiUrl: string;\n clients: ConfigWriteResult[];\n skills: SkillInstallResult[];\n verified: boolean | null;\n dryRun: boolean;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────\n\nfunction w(line: string): void {\n process.stderr.write(line + \"\\n\");\n}\n\nfunction step(label: string): void {\n w(`\\n${bold(label)}`);\n}\n\nfunction ok(line: string): void {\n w(` ${green(\"✓\")} ${line}`);\n}\n\nfunction bad(line: string): void {\n w(` ${red(\"✗\")} ${line}`);\n}\n\nfunction warn(line: string): void {\n w(` ${yellow(\"!\")} ${line}`);\n}\n\nfunction info(line: string): void {\n w(` ${dim(line)}`);\n}\n\n// ─── Per-client config write dispatch ─────────────────────────────────\n\nfunction writeForClient(client: ClientInfo): ConfigWriteResult {\n const base: Pick<ConfigWriteResult, \"client\" | \"name\"> = {\n client: client.id,\n name: client.name,\n };\n\n if (!client.programmable) {\n if (client.id === \"chatgpt-desktop\") {\n const inst = printChatGptDesktopInstructions();\n return { ...base, ok: false, manual: true, steps: inst.steps };\n }\n return {\n ...base,\n ok: false,\n manual: true,\n error: client.hint || \"Manual setup required\",\n };\n }\n\n try {\n let result: { path: string; written: boolean };\n switch (client.id) {\n case \"claude-code\":\n result = writeClaudeCodeUserConfig();\n break;\n case \"claude-desktop\":\n result = writeClaudeDesktopConfig();\n break;\n case \"cursor\":\n result = writeCursorConfig();\n break;\n case \"vscode\":\n result = writeVscodeConfig();\n break;\n case \"windsurf\":\n result = writeWindsurfConfig();\n break;\n case \"gemini-cli\":\n result = writeGeminiCliConfig();\n break;\n case \"chatgpt-desktop\":\n return {\n ...base,\n ok: false,\n manual: true,\n steps: printChatGptDesktopInstructions().steps,\n };\n }\n return {\n ...base,\n ok: result.written,\n path: result.path,\n error: result.written\n ? undefined\n : \"No API key resolved — auth first or set HIVE_API_KEY\",\n };\n } catch (err) {\n return {\n ...base,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\n// ─── Verification ─────────────────────────────────────────────────────\n\nasync function verifyConnection(): Promise<boolean> {\n const apiKey = resolveApiKey();\n const apiUrl = resolveApiUrl();\n if (!apiKey) return false;\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 8000);\n const res = await fetch(`${apiUrl}/api/v1/tools?limit=1`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: controller.signal,\n });\n clearTimeout(timer);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n// ─── Main entrypoint ──────────────────────────────────────────────────\n\nexport async function runInitAll(opts: InitAllOptions = {}): Promise<number> {\n const summary: InitSummary = {\n authenticated: false,\n apiKeyPresent: Boolean(resolveApiKey()),\n apiUrl: opts.apiUrl || resolveApiUrl(),\n clients: [],\n skills: [],\n verified: null,\n dryRun: Boolean(opts.dryRun),\n };\n\n if (!opts.json) {\n w(bold(\"\\nHive Intelligence — Init\"));\n if (summary.dryRun) info(\"(dry-run — nothing will be written)\");\n }\n\n // ─── Step 1: authentication ─────────────────────────────────────────\n if (opts.browser) {\n step(\"Authenticating via browser\");\n if (summary.dryRun) {\n info(\"Would open browser for PKCE auth at /auth/cli\");\n summary.authenticated = false;\n } else {\n try {\n const result = await browserLogin({\n baseUrl:\n process.env.HIVE_AUTH_BASE_URL || \"https://hiveintelligence.xyz\",\n timeout: 300_000,\n });\n saveProfile(\"default\", result.key, summary.apiUrl);\n summary.authenticated = true;\n summary.apiKeyPresent = true;\n ok(`Signed in as ${result.email || \"(email unavailable)\"}`);\n } catch (err) {\n bad(`Browser auth failed: ${err instanceof Error ? err.message : err}`);\n if (!summary.apiKeyPresent) {\n warn(\"No saved key — clients will be configured with placeholder.\");\n warn(\"Run `hive auth login --manual` to paste a key by hand.\");\n }\n }\n }\n } else if (!summary.apiKeyPresent) {\n step(\"Authentication\");\n warn(\"No API key in env or saved profile.\");\n info(\"Run `hive init --browser` to authenticate via PKCE flow,\");\n info(\"or `hive auth login --manual` to paste a key by hand.\");\n } else {\n step(\"Authentication\");\n ok(\"Existing API key resolved (env or saved profile)\");\n summary.authenticated = true;\n }\n\n // ─── Step 2: detect clients ─────────────────────────────────────────\n step(\"Detecting MCP-capable clients\");\n const detected = detectClients();\n for (const c of detected) {\n if (c.detected) {\n ok(`${c.name} ${dim(\"(\" + c.configPath + \")\")}`);\n } else if (!opts.all) {\n // In non-`--all` mode we don't bother showing missing clients;\n // they'd just clutter the output.\n continue;\n } else {\n info(`${c.name} — not detected (${c.hint || \"skipped\"})`);\n }\n }\n\n // ─── Step 3: write client configs ───────────────────────────────────\n const targets: ClientInfo[] = opts.all\n ? detected.filter((c) => c.detected && c.programmable)\n : detected.filter((c) => c.detected && c.programmable); // interactive\n // mode would normally branch here; for the marketing path (`--all\n // --browser`) we just install everywhere we can.\n\n step(\"Writing client configs\");\n for (const client of targets) {\n if (summary.dryRun) {\n info(`Would write ${client.configPath}`);\n summary.clients.push({\n client: client.id,\n name: client.name,\n ok: true,\n path: client.configPath,\n });\n continue;\n }\n const result = writeForClient(client);\n summary.clients.push(result);\n if (result.ok && result.path) {\n ok(`${result.name} ${dim(\"→ \" + result.path)}`);\n } else if (result.manual && result.steps) {\n warn(`${result.name} — manual setup required:`);\n for (const stepText of result.steps) info(` • ${stepText}`);\n } else {\n bad(`${result.name} — ${result.error || \"unknown error\"}`);\n }\n }\n\n // ChatGPT instructions are always printed since it's never programmable.\n const chatgpt = detected.find((c) => c.id === \"chatgpt-desktop\");\n if (chatgpt && !summary.clients.some((c) => c.client === \"chatgpt-desktop\")) {\n const inst = printChatGptDesktopInstructions();\n summary.clients.push({\n client: \"chatgpt-desktop\",\n name: chatgpt.name,\n ok: false,\n manual: true,\n steps: inst.steps,\n });\n info(`${chatgpt.name} — manual setup (Settings → Connectors)`);\n }\n\n // ─── Step 4: skill packs ────────────────────────────────────────────\n if (!opts.skipSkills) {\n step(\"Installing skill packs\");\n if (summary.dryRun) {\n info(\"Would copy agent-skills/packs/ into per-client skills dirs\");\n } else {\n const skillTargets = targets.map((c) => c.id);\n const skillResults = installSkillsForClients(skillTargets);\n summary.skills = skillResults;\n for (const r of skillResults) {\n if (r.installed.length > 0) {\n ok(\n `${r.client}: ${r.installed.length} pack${\n r.installed.length === 1 ? \"\" : \"s\"\n } ${dim(\"→ \" + r.destination)}`,\n );\n } else if (r.reason) {\n info(`${r.client}: ${r.reason}`);\n }\n }\n }\n }\n\n // ─── Step 5: verify ─────────────────────────────────────────────────\n if (!opts.skipVerify && !summary.dryRun) {\n step(\"Verifying connection\");\n const verified = await verifyConnection();\n summary.verified = verified;\n if (verified) ok(\"Connection to Hive verified\");\n else\n warn(\n \"Could not verify — run `hive doctor` for details (this can be a transient network issue)\",\n );\n }\n\n // ─── Output ────────────────────────────────────────────────────────\n if (opts.json) {\n process.stdout.write(JSON.stringify(summary, null, 2) + \"\\n\");\n } else {\n w(\"\");\n w(bold(\"Next steps\"));\n w(dim(\" Try a query: \") + \"hive market price --ids bitcoin --vs usd\");\n w(dim(\" Open dashboard: \") + \"hive open dashboard\");\n w(dim(\" Health check: \") + \"hive doctor\");\n w(\"\");\n }\n\n // Exit code: 0 if at least one client wrote successfully OR the user\n // only asked for `--browser` auth and that succeeded. Otherwise 1.\n const anyClientOk = summary.clients.some((c) => c.ok);\n const browserOnly = opts.browser && !opts.all;\n if (browserOnly && summary.authenticated) return 0;\n if (!summary.dryRun && !anyClientOk) return 1;\n return 0;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
HiveMCPServer,
|
|
4
|
+
SERVER_NAME,
|
|
5
|
+
SERVER_VERSION,
|
|
6
|
+
createHiveMcpServer,
|
|
7
|
+
getSharedClients,
|
|
8
|
+
getToolsForScope
|
|
9
|
+
} from "./chunk-2X3U4DFK.js";
|
|
10
|
+
import "./chunk-B6G222LS.js";
|
|
11
|
+
import "./chunk-KBVPIZS4.js";
|
|
12
|
+
export {
|
|
13
|
+
HiveMCPServer,
|
|
14
|
+
SERVER_NAME,
|
|
15
|
+
SERVER_VERSION,
|
|
16
|
+
createHiveMcpServer,
|
|
17
|
+
getSharedClients,
|
|
18
|
+
getToolsForScope
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=mcpServer-AEX3RQ4U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
NAMESPACE,
|
|
4
4
|
getAllDomainCommands,
|
|
5
5
|
resolveCommand
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-MPIUUE3T.js";
|
|
7
|
+
import "./chunk-KBVPIZS4.js";
|
|
8
8
|
export {
|
|
9
9
|
NAMESPACE,
|
|
10
10
|
getAllDomainCommands,
|
|
11
11
|
resolveCommand
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=namespace-
|
|
13
|
+
//# sourceMappingURL=namespace-PVHBFDW2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-KBVPIZS4.js";
|
|
3
3
|
|
|
4
4
|
// src/cli/open.ts
|
|
5
5
|
import { exec } from "child_process";
|
|
6
6
|
import { platform } from "os";
|
|
7
7
|
var URLS = {
|
|
8
|
-
dashboard: "https://hiveintelligence.xyz",
|
|
9
|
-
docs: "https://
|
|
10
|
-
status: "https://
|
|
11
|
-
github: "https://github.com/
|
|
8
|
+
dashboard: "https://www.hiveintelligence.xyz/dashboard",
|
|
9
|
+
docs: "https://www.hiveintelligence.xyz/quick-start",
|
|
10
|
+
status: "https://mcp.hiveintelligence.xyz/status",
|
|
11
|
+
github: "https://github.com/sharpe-labs/hive-mcp2"
|
|
12
12
|
};
|
|
13
13
|
function openUrl(url) {
|
|
14
14
|
const cmd = platform() === "darwin" ? "open" : platform() === "win32" ? "start" : "xdg-open";
|
|
@@ -34,4 +34,4 @@ function runOpen(target) {
|
|
|
34
34
|
export {
|
|
35
35
|
runOpen
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=open-
|
|
37
|
+
//# sourceMappingURL=open-YUIJP37F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/open.ts"],"sourcesContent":["import { exec } from \"node:child_process\";\nimport { platform } from \"node:os\";\n\nconst URLS: Record<string, string> = {\n dashboard: \"https://www.hiveintelligence.xyz/dashboard\",\n docs: \"https://www.hiveintelligence.xyz/quick-start\",\n status: \"https://mcp.hiveintelligence.xyz/status\",\n github: \"https://github.com/sharpe-labs/hive-mcp2\",\n};\n\nfunction openUrl(url: string): void {\n const cmd =\n platform() === \"darwin\"\n ? \"open\"\n : platform() === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n exec(`${cmd} ${url}`, (err) => {\n if (err) process.stderr.write(`Open this URL manually: ${url}\\n`);\n });\n}\n\nexport function runOpen(target?: string): void {\n const key = target ?? \"dashboard\";\n const url = URLS[key];\n if (!url) {\n process.stderr.write(\n `Unknown target: \"${key}\". Available: ${Object.keys(URLS).join(\", \")}\\n`,\n );\n process.exit(2);\n }\n process.stderr.write(`Opening ${url}...\\n`);\n openUrl(url);\n}\n"],"mappings":";;;;AAAA,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,IAAM,OAA+B;AAAA,EACnC,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAEA,SAAS,QAAQ,KAAmB;AAClC,QAAM,MACJ,SAAS,MAAM,WACX,SACA,SAAS,MAAM,UACb,UACA;AACR,OAAK,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC7B,QAAI,IAAK,SAAQ,OAAO,MAAM,2BAA2B,GAAG;AAAA,CAAI;AAAA,EAClE,CAAC;AACH;AAEO,SAAS,QAAQ,QAAuB;AAC7C,QAAM,MAAM,UAAU;AACtB,QAAM,MAAM,KAAK,GAAG;AACpB,MAAI,CAAC,KAAK;AACR,YAAQ,OAAO;AAAA,MACb,oBAAoB,GAAG,iBAAiB,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA,IACtE;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,UAAQ,OAAO,MAAM,WAAW,GAAG;AAAA,CAAO;AAC1C,UAAQ,GAAG;AACb;","names":[]}
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
successEnvelope,
|
|
18
18
|
writeOutput,
|
|
19
19
|
yellow
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-XYBEFFZ3.js";
|
|
21
|
+
import "./chunk-KBVPIZS4.js";
|
|
22
22
|
export {
|
|
23
23
|
bold,
|
|
24
24
|
colorEnabled,
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
writeOutput,
|
|
39
39
|
yellow
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=output-
|
|
41
|
+
//# sourceMappingURL=output-IYJBFCYK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import "./chunk-KBVPIZS4.js";
|
|
3
|
+
|
|
4
|
+
// src/cli/serve.ts
|
|
5
|
+
import dotenv from "dotenv";
|
|
6
|
+
async function startStdio(envFile) {
|
|
7
|
+
dotenv.config({ path: envFile || ".env", quiet: true });
|
|
8
|
+
console.log = (...args) => console.error("[LOG]", ...args);
|
|
9
|
+
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
10
|
+
const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-AEX3RQ4U.js");
|
|
11
|
+
const transport = new StdioServerTransport();
|
|
12
|
+
const mcpServer = createHiveMcpServer({ kind: "root" });
|
|
13
|
+
const server = mcpServer.getServer();
|
|
14
|
+
let isShuttingDown = false;
|
|
15
|
+
const shutdown = async () => {
|
|
16
|
+
if (isShuttingDown) return;
|
|
17
|
+
isShuttingDown = true;
|
|
18
|
+
const forceTimer = setTimeout(() => process.exit(1), 3e3);
|
|
19
|
+
forceTimer.unref();
|
|
20
|
+
try {
|
|
21
|
+
await server.close();
|
|
22
|
+
} catch {
|
|
23
|
+
}
|
|
24
|
+
process.exit(0);
|
|
25
|
+
};
|
|
26
|
+
process.on("SIGINT", shutdown);
|
|
27
|
+
process.on("SIGTERM", shutdown);
|
|
28
|
+
process.stdin.on("end", shutdown);
|
|
29
|
+
await server.connect(transport);
|
|
30
|
+
console.error(
|
|
31
|
+
`Hive MCP stdio server connected (${SERVER_NAME} v${SERVER_VERSION})`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
async function startHttp(port, envFile) {
|
|
35
|
+
dotenv.config({ path: envFile || ".env", quiet: true });
|
|
36
|
+
process.env.PORT = String(port);
|
|
37
|
+
const { startHttpServer } = await import("./server.js");
|
|
38
|
+
await startHttpServer();
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
startHttp,
|
|
42
|
+
startStdio
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=serve-KWNJK6EY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/serve.ts"],"sourcesContent":["import dotenv from \"dotenv\";\n\nexport async function startStdio(envFile?: string): Promise<void> {\n dotenv.config({ path: envFile || \".env\", quiet: true });\n // stdout is the JSON-RPC transport channel — redirect console.log to stderr\n console.log = (...args: unknown[]) => console.error(\"[LOG]\", ...args);\n\n const { StdioServerTransport } =\n await import(\"@modelcontextprotocol/sdk/server/stdio.js\");\n const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } =\n await import(\"../mcpServer.js\");\n\n const transport = new StdioServerTransport();\n const mcpServer = createHiveMcpServer({ kind: \"root\" });\n const server = mcpServer.getServer();\n\n let isShuttingDown = false;\n const shutdown = async () => {\n if (isShuttingDown) return;\n isShuttingDown = true;\n const forceTimer = setTimeout(() => process.exit(1), 3_000);\n forceTimer.unref();\n try {\n await server.close();\n } catch {\n // swallow — exiting anyway\n }\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n process.stdin.on(\"end\", shutdown);\n\n await server.connect(transport);\n console.error(\n `Hive MCP stdio server connected (${SERVER_NAME} v${SERVER_VERSION})`,\n );\n}\n\nexport async function startHttp(port: number, envFile?: string): Promise<void> {\n dotenv.config({ path: envFile || \".env\", quiet: true });\n process.env.PORT = String(port);\n const { startHttpServer } = await import(\"../server.js\");\n await startHttpServer();\n}\n"],"mappings":";;;;AAAA,OAAO,YAAY;AAEnB,eAAsB,WAAW,SAAiC;AAChE,SAAO,OAAO,EAAE,MAAM,WAAW,QAAQ,OAAO,KAAK,CAAC;AAEtD,UAAQ,MAAM,IAAI,SAAoB,QAAQ,MAAM,SAAS,GAAG,IAAI;AAEpE,QAAM,EAAE,qBAAqB,IAC3B,MAAM,OAAO,2CAA2C;AAC1D,QAAM,EAAE,qBAAqB,aAAa,eAAe,IACvD,MAAM,OAAO,yBAAiB;AAEhC,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,YAAY,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACtD,QAAM,SAAS,UAAU,UAAU;AAEnC,MAAI,iBAAiB;AACrB,QAAM,WAAW,YAAY;AAC3B,QAAI,eAAgB;AACpB,qBAAiB;AACjB,UAAM,aAAa,WAAW,MAAM,QAAQ,KAAK,CAAC,GAAG,GAAK;AAC1D,eAAW,MAAM;AACjB,QAAI;AACF,YAAM,OAAO,MAAM;AAAA,IACrB,QAAQ;AAAA,IAER;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAC9B,UAAQ,MAAM,GAAG,OAAO,QAAQ;AAEhC,QAAM,OAAO,QAAQ,SAAS;AAC9B,UAAQ;AAAA,IACN,oCAAoC,WAAW,KAAK,cAAc;AAAA,EACpE;AACF;AAEA,eAAsB,UAAU,MAAc,SAAiC;AAC7E,SAAO,OAAO,EAAE,MAAM,WAAW,QAAQ,OAAO,KAAK,CAAC;AACtD,UAAQ,IAAI,OAAO,OAAO,IAAI;AAC9B,QAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,aAAc;AACvD,QAAM,gBAAgB;AACxB;","names":[]}
|