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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
NAMESPACE
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-MPIUUE3T.js";
|
|
5
|
+
import "./chunk-KBVPIZS4.js";
|
|
6
6
|
|
|
7
7
|
// src/cli/completion.ts
|
|
8
8
|
import {
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
} from "fs";
|
|
15
15
|
import { join } from "path";
|
|
16
16
|
import { homedir } from "os";
|
|
17
|
+
var PRIMARY_COMMAND = "hive";
|
|
18
|
+
var COMPLETION_COMMANDS = ["hive", "hive-intelligence", "hive-mcp"];
|
|
17
19
|
function getTopLevel() {
|
|
18
20
|
return [
|
|
19
21
|
"serve",
|
|
@@ -61,9 +63,9 @@ function generateBash() {
|
|
|
61
63
|
const cases = Object.entries(domainSubs).map(
|
|
62
64
|
([domain, subs]) => ` ${domain}) COMPREPLY=($(compgen -W "${subs.join(" ")}" -- "$cur")); return ;;`
|
|
63
65
|
).join("\n");
|
|
64
|
-
console.log(`# Hive
|
|
65
|
-
# Add to ~/.bashrc: eval "$(hive
|
|
66
|
-
|
|
66
|
+
console.log(`# Hive CLI bash completion
|
|
67
|
+
# Add to ~/.bashrc: eval "$(hive completion bash)"
|
|
68
|
+
_hive_completions() {
|
|
67
69
|
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
68
70
|
local prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
69
71
|
|
|
@@ -80,7 +82,7 @@ ${cases}
|
|
|
80
82
|
|
|
81
83
|
COMPREPLY=($(compgen -W "${topLevel.join(" ")}" -- "$cur"))
|
|
82
84
|
}
|
|
83
|
-
complete -F
|
|
85
|
+
complete -F _hive_completions ${COMPLETION_COMMANDS.join(" ")}`);
|
|
84
86
|
}
|
|
85
87
|
function generateZsh() {
|
|
86
88
|
const domainEntries = NAMESPACE.map(
|
|
@@ -96,9 +98,9 @@ ${subs}
|
|
|
96
98
|
_describe 'subcommand' subcmds
|
|
97
99
|
;;`;
|
|
98
100
|
}).join("\n");
|
|
99
|
-
console.log(`# Hive
|
|
100
|
-
# Add to ~/.zshrc: eval "$(hive
|
|
101
|
-
|
|
101
|
+
console.log(`# Hive CLI zsh completion
|
|
102
|
+
# Add to ~/.zshrc: eval "$(hive completion zsh)"
|
|
103
|
+
_hive() {
|
|
102
104
|
local -a commands
|
|
103
105
|
commands=(
|
|
104
106
|
'serve:Start the MCP server'
|
|
@@ -154,54 +156,57 @@ ${subcommandCases}
|
|
|
154
156
|
esac
|
|
155
157
|
fi
|
|
156
158
|
}
|
|
157
|
-
compdef
|
|
159
|
+
compdef _hive ${COMPLETION_COMMANDS.join(" ")}`);
|
|
158
160
|
}
|
|
159
161
|
function generateFish() {
|
|
160
162
|
const topLevel = getTopLevel();
|
|
161
163
|
const lines = [
|
|
162
|
-
"# Hive
|
|
163
|
-
"# Save to: ~/.config/fish/completions/hive
|
|
164
|
+
"# Hive CLI fish completion",
|
|
165
|
+
"# Save to: ~/.config/fish/completions/hive.fish",
|
|
164
166
|
""
|
|
165
167
|
];
|
|
166
|
-
for (const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
`complete -c hive-mcp -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
const domainSubs = getDomainSubs();
|
|
173
|
-
for (const [domain, subs] of Object.entries(domainSubs)) {
|
|
174
|
-
for (const sub of subs) {
|
|
175
|
-
const desc = NAMESPACE.find((d) => d.name === domain)?.commands.find(
|
|
176
|
-
(c) => c.name === sub
|
|
177
|
-
)?.description ?? sub;
|
|
168
|
+
for (const commandName of COMPLETION_COMMANDS) {
|
|
169
|
+
for (const cmd of topLevel) {
|
|
170
|
+
const desc = NAMESPACE.find((d) => d.name === cmd)?.description ?? cmd;
|
|
178
171
|
lines.push(
|
|
179
|
-
`complete -c
|
|
172
|
+
`complete -c ${commandName} -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
const domainSubs = getDomainSubs();
|
|
176
|
+
for (const [domain, subs] of Object.entries(domainSubs)) {
|
|
177
|
+
for (const sub of subs) {
|
|
178
|
+
const desc = NAMESPACE.find((d) => d.name === domain)?.commands.find(
|
|
179
|
+
(c) => c.name === sub
|
|
180
|
+
)?.description ?? sub;
|
|
181
|
+
lines.push(
|
|
182
|
+
`complete -c ${commandName} -n '__fish_seen_subcommand_from ${domain}' -a '${sub}' -d '${desc}'`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const sub of ["list", "search", "info", "call", "refresh"]) {
|
|
187
|
+
lines.push(
|
|
188
|
+
`complete -c ${commandName} -n '__fish_seen_subcommand_from tools' -a '${sub}'`
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
for (const sub of ["login", "logout", "whoami", "profiles", "switch"]) {
|
|
192
|
+
lines.push(
|
|
193
|
+
`complete -c ${commandName} -n '__fish_seen_subcommand_from auth' -a '${sub}'`
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
for (const sub of ["set", "list", "remove"]) {
|
|
197
|
+
lines.push(
|
|
198
|
+
`complete -c ${commandName} -n '__fish_seen_subcommand_from alias' -a '${sub}'`
|
|
180
199
|
);
|
|
181
200
|
}
|
|
182
|
-
}
|
|
183
|
-
for (const sub of ["list", "search", "info", "call", "refresh"]) {
|
|
184
|
-
lines.push(
|
|
185
|
-
`complete -c hive-mcp -n '__fish_seen_subcommand_from tools' -a '${sub}'`
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
for (const sub of ["login", "logout", "whoami", "profiles", "switch"]) {
|
|
189
|
-
lines.push(
|
|
190
|
-
`complete -c hive-mcp -n '__fish_seen_subcommand_from auth' -a '${sub}'`
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
for (const sub of ["set", "list", "remove"]) {
|
|
194
|
-
lines.push(
|
|
195
|
-
`complete -c hive-mcp -n '__fish_seen_subcommand_from alias' -a '${sub}'`
|
|
196
|
-
);
|
|
197
201
|
}
|
|
198
202
|
console.log(lines.join("\n"));
|
|
199
203
|
}
|
|
200
204
|
function generatePowerShell() {
|
|
201
205
|
const topLevel = getTopLevel();
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
const commandNames = COMPLETION_COMMANDS.map((cmd) => `'${cmd}'`).join(",");
|
|
207
|
+
console.log(`# Hive CLI PowerShell completion
|
|
208
|
+
# Add to your $PROFILE: . (hive completion powershell)
|
|
209
|
+
Register-ArgumentCompleter -Native -CommandName ${commandNames} -ScriptBlock {
|
|
205
210
|
param($wordToComplete, $commandAst, $cursorPosition)
|
|
206
211
|
$commands = @(${topLevel.map((c) => `'${c}'`).join(", ")})
|
|
207
212
|
$commands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
|
|
@@ -213,13 +218,13 @@ async function installCompletion(shell) {
|
|
|
213
218
|
switch (shell) {
|
|
214
219
|
case "bash": {
|
|
215
220
|
const rcFile = join(homedir(), ".bashrc");
|
|
216
|
-
const line = 'eval "$(hive
|
|
221
|
+
const line = 'eval "$(hive completion bash)"';
|
|
217
222
|
if (existsSync(rcFile) && readFileSync(rcFile, "utf-8").includes(line)) {
|
|
218
223
|
process.stderr.write("Bash completion already installed.\n");
|
|
219
224
|
return;
|
|
220
225
|
}
|
|
221
226
|
appendFileSync(rcFile, `
|
|
222
|
-
# Hive
|
|
227
|
+
# Hive CLI completion
|
|
223
228
|
${line}
|
|
224
229
|
`);
|
|
225
230
|
process.stderr.write(
|
|
@@ -230,13 +235,13 @@ ${line}
|
|
|
230
235
|
}
|
|
231
236
|
case "zsh": {
|
|
232
237
|
const rcFile = join(homedir(), ".zshrc");
|
|
233
|
-
const line = 'eval "$(hive
|
|
238
|
+
const line = 'eval "$(hive completion zsh)"';
|
|
234
239
|
if (existsSync(rcFile) && readFileSync(rcFile, "utf-8").includes(line)) {
|
|
235
240
|
process.stderr.write("Zsh completion already installed.\n");
|
|
236
241
|
return;
|
|
237
242
|
}
|
|
238
243
|
appendFileSync(rcFile, `
|
|
239
|
-
# Hive
|
|
244
|
+
# Hive CLI completion
|
|
240
245
|
${line}
|
|
241
246
|
`);
|
|
242
247
|
process.stderr.write(
|
|
@@ -248,9 +253,9 @@ ${line}
|
|
|
248
253
|
case "fish": {
|
|
249
254
|
const dir = join(homedir(), ".config", "fish", "completions");
|
|
250
255
|
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
251
|
-
const filePath = join(dir, "hive
|
|
256
|
+
const filePath = join(dir, "hive.fish");
|
|
252
257
|
const { execFileSync } = await import("child_process");
|
|
253
|
-
const bin = process.argv[1] ??
|
|
258
|
+
const bin = process.argv[1] ?? PRIMARY_COMMAND;
|
|
254
259
|
const output = execFileSync(bin, ["completion", "fish"], {
|
|
255
260
|
encoding: "utf-8"
|
|
256
261
|
});
|
|
@@ -271,4 +276,4 @@ export {
|
|
|
271
276
|
generateCompletion,
|
|
272
277
|
installCompletion
|
|
273
278
|
};
|
|
274
|
-
//# sourceMappingURL=completion-
|
|
279
|
+
//# sourceMappingURL=completion-BELZL7ND.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/completion.ts"],"sourcesContent":["import {\n existsSync,\n readFileSync,\n appendFileSync,\n writeFileSync,\n mkdirSync,\n} from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { NAMESPACE } from \"./namespace.js\";\n\nconst PRIMARY_COMMAND = \"hive\";\nconst COMPLETION_COMMANDS = [\"hive\", \"hive-intelligence\", \"hive-mcp\"];\n\nfunction getTopLevel(): string[] {\n return [\n \"serve\",\n \"doctor\",\n \"tools\",\n \"config\",\n \"init\",\n \"completion\",\n \"auth\",\n \"status\",\n \"open\",\n \"watch\",\n \"alias\",\n \"telemetry\",\n ...NAMESPACE.map((d) => d.name),\n ];\n}\n\nfunction getDomainSubs(): Record<string, string[]> {\n const subs: Record<string, string[]> = {};\n for (const domain of NAMESPACE) {\n subs[domain.name] = domain.commands.map((c) => c.name);\n }\n return subs;\n}\n\nexport async function generateCompletion(shell: string): Promise<void> {\n switch (shell) {\n case \"bash\":\n return generateBash();\n case \"zsh\":\n return generateZsh();\n case \"fish\":\n return generateFish();\n case \"powershell\":\n return generatePowerShell();\n default:\n console.error(\n `Unsupported shell: ${shell}. Use: bash, zsh, fish, powershell`,\n );\n process.exit(2);\n }\n}\n\nfunction generateBash(): void {\n const topLevel = getTopLevel();\n const domainSubs = getDomainSubs();\n\n const cases = Object.entries(domainSubs)\n .map(\n ([domain, subs]) =>\n ` ${domain}) COMPREPLY=($(compgen -W \"${subs.join(\" \")}\" -- \"$cur\")); return ;;`,\n )\n .join(\"\\n\");\n\n console.log(`# Hive CLI bash completion\n# Add to ~/.bashrc: eval \"$(hive completion bash)\"\n_hive_completions() {\n local cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n local prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n\n case \"$prev\" in\n${cases}\n tools) COMPREPLY=($(compgen -W \"list search info call refresh\" -- \"$cur\")); return ;;\n config) COMPREPLY=($(compgen -W \"claude-desktop cursor vscode claude-code http\" -- \"$cur\")); return ;;\n auth) COMPREPLY=($(compgen -W \"login logout whoami profiles switch\" -- \"$cur\")); return ;;\n alias) COMPREPLY=($(compgen -W \"set list remove\" -- \"$cur\")); return ;;\n telemetry) COMPREPLY=($(compgen -W \"enable disable status\" -- \"$cur\")); return ;;\n open) COMPREPLY=($(compgen -W \"dashboard docs status github\" -- \"$cur\")); return ;;\n completion) COMPREPLY=($(compgen -W \"bash zsh fish powershell install\" -- \"$cur\")); return ;;\n esac\n\n COMPREPLY=($(compgen -W \"${topLevel.join(\" \")}\" -- \"$cur\"))\n}\ncomplete -F _hive_completions ${COMPLETION_COMMANDS.join(\" \")}`);\n}\n\nfunction generateZsh(): void {\n const domainEntries = NAMESPACE.map(\n (d) => ` '${d.name}:${d.description}'`,\n ).join(\"\\n\");\n\n const subcommandCases = NAMESPACE.map((d) => {\n const subs = d.commands\n .map((c) => ` '${c.name}:${c.description}'`)\n .join(\"\\n\");\n return ` ${d.name})\n local -a subcmds\n subcmds=(\n${subs}\n )\n _describe 'subcommand' subcmds\n ;;`;\n }).join(\"\\n\");\n\n console.log(`# Hive CLI zsh completion\n# Add to ~/.zshrc: eval \"$(hive completion zsh)\"\n_hive() {\n local -a commands\n commands=(\n 'serve:Start the MCP server'\n 'doctor:Diagnose environment and connectivity'\n 'tools:Discover and execute tools'\n 'config:Generate MCP client configs'\n 'init:Interactive API key setup'\n 'completion:Generate shell completions'\n 'auth:Manage authentication profiles'\n 'status:Quick health and version check'\n 'open:Open Hive dashboard in browser'\n 'watch:Poll a tool on interval'\n 'alias:Manage command aliases'\n 'telemetry:Control anonymous usage telemetry'\n${domainEntries}\n )\n\n if (( CURRENT == 2 )); then\n _describe 'command' commands\n elif (( CURRENT == 3 )); then\n case \"\\${words[2]}\" in\n${subcommandCases}\n tools)\n local -a subcmds\n subcmds=('list:List all tools' 'search:Search tools' 'info:Show tool info' 'call:Execute a tool' 'refresh:Refresh tool cache')\n _describe 'subcommand' subcmds\n ;;\n config)\n local -a subcmds\n subcmds=('claude-desktop:Claude Desktop config' 'cursor:Cursor config' 'vscode:VS Code config' 'claude-code:Claude Code config' 'http:HTTP remote config')\n _describe 'subcommand' subcmds\n ;;\n auth)\n local -a subcmds\n subcmds=('login:Log in with API key' 'logout:Remove credentials' 'whoami:Show current profile' 'profiles:List all profiles' 'switch:Switch active profile')\n _describe 'subcommand' subcmds\n ;;\n alias)\n local -a subcmds\n subcmds=('set:Create an alias' 'list:Show all aliases' 'remove:Delete an alias')\n _describe 'subcommand' subcmds\n ;;\n telemetry)\n local -a subcmds\n subcmds=('enable:Enable telemetry' 'disable:Disable telemetry' 'status:Show telemetry status')\n _describe 'subcommand' subcmds\n ;;\n open)\n local -a subcmds\n subcmds=('dashboard:Open dashboard' 'docs:Open documentation' 'status:Open status page' 'github:Open GitHub repo')\n _describe 'subcommand' subcmds\n ;;\n esac\n fi\n}\ncompdef _hive ${COMPLETION_COMMANDS.join(\" \")}`);\n}\n\nfunction generateFish(): void {\n const topLevel = getTopLevel();\n const lines: string[] = [\n \"# Hive CLI fish completion\",\n \"# Save to: ~/.config/fish/completions/hive.fish\",\n \"\",\n ];\n\n for (const commandName of COMPLETION_COMMANDS) {\n for (const cmd of topLevel) {\n const desc = NAMESPACE.find((d) => d.name === cmd)?.description ?? cmd;\n lines.push(\n `complete -c ${commandName} -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`,\n );\n }\n\n const domainSubs = getDomainSubs();\n for (const [domain, subs] of Object.entries(domainSubs)) {\n for (const sub of subs) {\n const desc =\n NAMESPACE.find((d) => d.name === domain)?.commands.find(\n (c) => c.name === sub,\n )?.description ?? sub;\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from ${domain}' -a '${sub}' -d '${desc}'`,\n );\n }\n }\n\n for (const sub of [\"list\", \"search\", \"info\", \"call\", \"refresh\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from tools' -a '${sub}'`,\n );\n }\n for (const sub of [\"login\", \"logout\", \"whoami\", \"profiles\", \"switch\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from auth' -a '${sub}'`,\n );\n }\n for (const sub of [\"set\", \"list\", \"remove\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from alias' -a '${sub}'`,\n );\n }\n }\n\n console.log(lines.join(\"\\n\"));\n}\n\nfunction generatePowerShell(): void {\n const topLevel = getTopLevel();\n const commandNames = COMPLETION_COMMANDS.map((cmd) => `'${cmd}'`).join(\",\");\n console.log(`# Hive CLI PowerShell completion\n# Add to your $PROFILE: . (hive completion powershell)\nRegister-ArgumentCompleter -Native -CommandName ${commandNames} -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n $commands = @(${topLevel.map((c) => `'${c}'`).join(\", \")})\n $commands | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}`);\n}\n\nexport async function installCompletion(shell: string): Promise<void> {\n switch (shell) {\n case \"bash\": {\n const rcFile = join(homedir(), \".bashrc\");\n const line = 'eval \"$(hive completion bash)\"';\n if (existsSync(rcFile) && readFileSync(rcFile, \"utf-8\").includes(line)) {\n process.stderr.write(\"Bash completion already installed.\\n\");\n return;\n }\n appendFileSync(rcFile, `\\n# Hive CLI completion\\n${line}\\n`);\n process.stderr.write(\n `Bash completion added to ${rcFile}. Restart your shell.\\n`,\n );\n return;\n }\n case \"zsh\": {\n const rcFile = join(homedir(), \".zshrc\");\n const line = 'eval \"$(hive completion zsh)\"';\n if (existsSync(rcFile) && readFileSync(rcFile, \"utf-8\").includes(line)) {\n process.stderr.write(\"Zsh completion already installed.\\n\");\n return;\n }\n appendFileSync(rcFile, `\\n# Hive CLI completion\\n${line}\\n`);\n process.stderr.write(\n `Zsh completion added to ${rcFile}. Restart your shell.\\n`,\n );\n return;\n }\n case \"fish\": {\n const dir = join(homedir(), \".config\", \"fish\", \"completions\");\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n const filePath = join(dir, \"hive.fish\");\n const { execFileSync } = await import(\"node:child_process\");\n const bin = process.argv[1] ?? PRIMARY_COMMAND;\n const output = execFileSync(bin, [\"completion\", \"fish\"], {\n encoding: \"utf-8\",\n });\n writeFileSync(filePath, output);\n process.stderr.write(`Fish completion written to ${filePath}.\\n`);\n return;\n }\n default:\n process.stderr.write(\n `Unsupported shell for install: ${shell}. Use: bash, zsh, fish\\n`,\n );\n process.exit(2);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
configClaudeCode,
|
|
4
|
+
configClaudeDesktop,
|
|
5
|
+
configCursor,
|
|
6
|
+
configHttpUrl,
|
|
7
|
+
configVscode,
|
|
8
|
+
getClaudeCodeUserConfigPath,
|
|
9
|
+
getClaudeDesktopConfigPath,
|
|
10
|
+
getCursorConfigPath,
|
|
11
|
+
getGeminiCliSettingsPath,
|
|
12
|
+
getVscodeConfigPath,
|
|
13
|
+
getWindsurfMcpConfigPath,
|
|
14
|
+
printChatGptDesktopInstructions,
|
|
15
|
+
removeClaudeCodeUserConfig,
|
|
16
|
+
removeClaudeDesktopConfig,
|
|
17
|
+
removeCursorConfig,
|
|
18
|
+
removeGeminiCliConfig,
|
|
19
|
+
removeVscodeConfig,
|
|
20
|
+
removeWindsurfConfig,
|
|
21
|
+
writeClaudeCodeConfig,
|
|
22
|
+
writeClaudeCodeUserConfig,
|
|
23
|
+
writeClaudeDesktopConfig,
|
|
24
|
+
writeCursorConfig,
|
|
25
|
+
writeGeminiCliConfig,
|
|
26
|
+
writeVscodeConfig,
|
|
27
|
+
writeWindsurfConfig
|
|
28
|
+
} from "./chunk-2MYMHMBF.js";
|
|
29
|
+
import "./chunk-V77LO4RO.js";
|
|
30
|
+
import "./chunk-KBVPIZS4.js";
|
|
31
|
+
export {
|
|
32
|
+
configClaudeCode,
|
|
33
|
+
configClaudeDesktop,
|
|
34
|
+
configCursor,
|
|
35
|
+
configHttpUrl,
|
|
36
|
+
configVscode,
|
|
37
|
+
getClaudeCodeUserConfigPath,
|
|
38
|
+
getClaudeDesktopConfigPath,
|
|
39
|
+
getCursorConfigPath,
|
|
40
|
+
getGeminiCliSettingsPath,
|
|
41
|
+
getVscodeConfigPath,
|
|
42
|
+
getWindsurfMcpConfigPath,
|
|
43
|
+
printChatGptDesktopInstructions,
|
|
44
|
+
removeClaudeCodeUserConfig,
|
|
45
|
+
removeClaudeDesktopConfig,
|
|
46
|
+
removeCursorConfig,
|
|
47
|
+
removeGeminiCliConfig,
|
|
48
|
+
removeVscodeConfig,
|
|
49
|
+
removeWindsurfConfig,
|
|
50
|
+
writeClaudeCodeConfig,
|
|
51
|
+
writeClaudeCodeUserConfig,
|
|
52
|
+
writeClaudeDesktopConfig,
|
|
53
|
+
writeCursorConfig,
|
|
54
|
+
writeGeminiCliConfig,
|
|
55
|
+
writeVscodeConfig,
|
|
56
|
+
writeWindsurfConfig
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=config-TDX4VUGW.js.map
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
saveCredentials,
|
|
13
13
|
setCliFlags,
|
|
14
14
|
writeJsonFile
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-V77LO4RO.js";
|
|
16
|
+
import "./chunk-KBVPIZS4.js";
|
|
17
17
|
export {
|
|
18
18
|
ensureConfigDir,
|
|
19
19
|
getConfig,
|
|
@@ -28,4 +28,4 @@ export {
|
|
|
28
28
|
setCliFlags,
|
|
29
29
|
writeJsonFile
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=config-dir-
|
|
31
|
+
//# sourceMappingURL=config-dir-V43W2WIA.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
fetchToolCatalog
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IZTN7WFH.js";
|
|
5
5
|
import {
|
|
6
6
|
debug,
|
|
7
7
|
info,
|
|
8
8
|
shouldOutputJson,
|
|
9
9
|
successEnvelope,
|
|
10
10
|
writeOutput
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-XYBEFFZ3.js";
|
|
12
|
+
import "./chunk-V77LO4RO.js";
|
|
13
|
+
import "./chunk-KBVPIZS4.js";
|
|
14
14
|
|
|
15
15
|
// src/cli/doctor.ts
|
|
16
16
|
var DEFAULT_API_URL = "https://mcp.hiveintelligence.xyz";
|
|
@@ -22,8 +22,8 @@ async function runDoctor(opts) {
|
|
|
22
22
|
const apiKey = process.env.HIVE_API_KEY;
|
|
23
23
|
checks.push({
|
|
24
24
|
check: "HIVE_API_KEY",
|
|
25
|
-
status: apiKey ? "PASS" : "
|
|
26
|
-
detail: apiKey ? `Set (${apiKey.slice(0, 4)}...)` : "Not set \u2014
|
|
25
|
+
status: apiKey ? "PASS" : "INFO",
|
|
26
|
+
detail: apiKey ? `Set (${apiKey.slice(0, 4)}...)` : "Not set (optional \u2014 API is currently free)"
|
|
27
27
|
});
|
|
28
28
|
const apiUrl = process.env.HIVE_API_URL;
|
|
29
29
|
checks.push({
|
|
@@ -116,10 +116,10 @@ async function runDoctor(opts) {
|
|
|
116
116
|
const pObj = p;
|
|
117
117
|
const name = String(pObj.name ?? pObj.provider ?? "unknown");
|
|
118
118
|
const status = String(pObj.status ?? "unknown");
|
|
119
|
-
const pass = status === "healthy" || status === "passed" || status === "partial";
|
|
119
|
+
const pass = status === "ok" || status === "healthy" || status === "passed" || status === "partial";
|
|
120
120
|
checks.push({
|
|
121
121
|
check: `Probe: ${name}`,
|
|
122
|
-
status: pass
|
|
122
|
+
status: pass || status === "missing_key" || status === "plan_required" ? pass ? "PASS" : "SKIP" : "FAIL",
|
|
123
123
|
detail: status
|
|
124
124
|
});
|
|
125
125
|
}
|
|
@@ -163,7 +163,7 @@ async function runDoctor(opts) {
|
|
|
163
163
|
if (fails > 0) process.exit(1);
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
|
-
const { table } = await import("./format-
|
|
166
|
+
const { table } = await import("./format-TSFSI2K7.js");
|
|
167
167
|
info("\nHive MCP Doctor\n");
|
|
168
168
|
info(
|
|
169
169
|
table(
|
|
@@ -179,9 +179,9 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
|
|
|
179
179
|
if (fails > 0) process.exit(1);
|
|
180
180
|
}
|
|
181
181
|
async function runStatus() {
|
|
182
|
-
const {
|
|
183
|
-
const { resolveApiKey, resolveApiUrl } = await import("./config-dir-
|
|
184
|
-
const { getActiveProfile, maskKey } = await import("./auth-
|
|
182
|
+
const { SERVER_VERSION } = await import("./mcpServer-AEX3RQ4U.js");
|
|
183
|
+
const { resolveApiKey, resolveApiUrl } = await import("./config-dir-V43W2WIA.js");
|
|
184
|
+
const { getActiveProfile, maskKey } = await import("./auth-KKINNBXT.js");
|
|
185
185
|
const apiUrl = resolveApiUrl();
|
|
186
186
|
const apiKey = resolveApiKey();
|
|
187
187
|
const profile = getActiveProfile();
|
|
@@ -228,4 +228,4 @@ export {
|
|
|
228
228
|
runDoctor,
|
|
229
229
|
runStatus
|
|
230
230
|
};
|
|
231
|
-
//# sourceMappingURL=doctor-
|
|
231
|
+
//# sourceMappingURL=doctor-5K5UWHNX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/doctor.ts"],"sourcesContent":["import {\n shouldOutputJson,\n writeOutput,\n successEnvelope,\n info,\n debug,\n} from \"./output.js\";\nimport { fetchToolCatalog } from \"./api-client.js\";\n\nconst DEFAULT_API_URL =\n \"https://mcp.hiveintelligence.xyz\";\n\nfunction getApiUrl(): string {\n return process.env.HIVE_API_URL || DEFAULT_API_URL;\n}\n\nexport async function runDoctor(opts: { probe?: boolean }): Promise<void> {\n const checks: { check: string; status: string; detail: string }[] = [];\n\n // Check HIVE_API_KEY (optional for now — API is free)\n const apiKey = process.env.HIVE_API_KEY;\n checks.push({\n check: \"HIVE_API_KEY\",\n status: apiKey ? \"PASS\" : \"INFO\",\n detail: apiKey\n ? `Set (${apiKey.slice(0, 4)}...)`\n : \"Not set (optional — API is currently free)\",\n });\n\n // Check HIVE_API_URL\n const apiUrl = process.env.HIVE_API_URL;\n checks.push({\n check: \"HIVE_API_URL\",\n status: \"PASS\",\n detail: apiUrl ? `Custom: ${apiUrl}` : `Default: ${DEFAULT_API_URL}`,\n });\n\n // Check server connectivity via /ping\n const healthUrl = `${getApiUrl()}/ping`;\n debug(`GET ${healthUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 10000);\n const resp = await fetch(healthUrl, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n const serverStatus =\n body && typeof body === \"object\" && \"status\" in body\n ? String((body as Record<string, unknown>).status)\n : \"ok\";\n checks.push({\n check: \"Server health\",\n status: \"PASS\",\n detail: `${resp.status} — ${serverStatus}`,\n });\n } else {\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n const isTimeout = err instanceof Error && err.name === \"AbortError\";\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: isTimeout\n ? `Timeout connecting to ${getApiUrl()}`\n : `Connection failed: ${msg}`,\n });\n }\n\n // Check tool catalog availability\n {\n debug(\"Fetching tool catalog...\");\n try {\n const catalog = await fetchToolCatalog();\n const toolsData = catalog.data as\n | { totalCount?: number; tools?: unknown[] }\n | unknown[];\n const toolCount = Array.isArray(toolsData)\n ? toolsData.length\n : typeof toolsData === \"object\" &&\n toolsData !== null &&\n \"totalCount\" in toolsData\n ? (toolsData as { totalCount: number }).totalCount\n : 0;\n if (catalog.ok) {\n checks.push({\n check: \"Tool catalog\",\n status: toolCount > 0 ? \"PASS\" : \"WARN\",\n detail: `${toolCount} tools available`,\n });\n } else {\n const errMsg =\n catalog.error &&\n typeof catalog.error === \"object\" &&\n \"message\" in catalog.error\n ? String(catalog.error.message)\n : \"Unknown error\";\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: errMsg,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: `Failed to fetch: ${msg}`,\n });\n }\n }\n\n // Probe: call server health endpoint with extended check\n if (opts.probe) {\n const probeUrl = `${getApiUrl()}/health?run=true`;\n debug(`Probe: GET ${probeUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 30000);\n const resp = await fetch(probeUrl, {\n headers: {\n ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n },\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n if (body && typeof body === \"object\" && \"providers\" in body) {\n const providers = (body as Record<string, unknown>).providers;\n if (Array.isArray(providers)) {\n for (const p of providers) {\n const pObj = p as Record<string, unknown>;\n const name = String(pObj.name ?? pObj.provider ?? \"unknown\");\n const status = String(pObj.status ?? \"unknown\");\n const pass =\n status === \"ok\" ||\n status === \"healthy\" ||\n status === \"passed\" ||\n status === \"partial\";\n checks.push({\n check: `Probe: ${name}`,\n status:\n pass || status === \"missing_key\" || status === \"plan_required\"\n ? pass\n ? \"PASS\"\n : \"SKIP\"\n : \"FAIL\",\n detail: status,\n });\n }\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"PASS\",\n detail: `Server responded ${resp.status}`,\n });\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `Failed: ${msg}`,\n });\n }\n }\n\n const fails = checks.filter((c) => c.status === \"FAIL\").length;\n const warns = checks.filter((c) => c.status === \"WARN\").length;\n const data = {\n checks,\n summary: {\n total: checks.length,\n pass: checks.filter((c) => c.status === \"PASS\").length,\n fail: fails,\n warn: warns,\n },\n };\n\n if (shouldOutputJson()) {\n await writeOutput(successEnvelope(data, {}));\n if (fails > 0) process.exit(1);\n return;\n }\n\n const { table } = await import(\"./format.js\");\n info(\"\\nHive MCP Doctor\\n\");\n info(\n table(\n [\"Check\", \"Status\", \"Detail\"],\n checks.map((c) => [c.check, c.status, c.detail]),\n ),\n );\n info(\n `\\n${fails === 0 ? \"All checks passed\" : `${fails} issues found`}${warns ? ` (${warns} warnings)` : \"\"}\\n`,\n );\n\n if (fails > 0) process.exit(1);\n}\n\nexport async function runStatus(): Promise<void> {\n const { SERVER_VERSION } = await import(\"../mcpServer.js\");\n const { resolveApiKey, resolveApiUrl } = await import(\"./config-dir.js\");\n const { getActiveProfile, maskKey } = await import(\"./auth.js\");\n\n const apiUrl = resolveApiUrl();\n const apiKey = resolveApiKey();\n const profile = getActiveProfile();\n\n let apiStatus = \"unknown\";\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 5000);\n const resp = await fetch(`${apiUrl}/ping`, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n apiStatus = resp.ok ? \"healthy\" : `HTTP ${resp.status}`;\n } catch {\n apiStatus = \"unreachable\";\n }\n\n if (shouldOutputJson()) {\n await writeOutput(\n successEnvelope(\n {\n version: SERVER_VERSION,\n profile: profile?.name ?? \"(none)\",\n apiUrl,\n apiStatus,\n hasKey: !!apiKey,\n },\n {},\n ),\n );\n return;\n }\n\n process.stderr.write(`\\nHive CLI v${SERVER_VERSION}\\n`);\n process.stderr.write(\n `Profile: ${profile ? `${profile.name} (${maskKey(profile.apiKey)})` : \"(not logged in)\"}\\n`,\n );\n process.stderr.write(`API: ${apiUrl} (${apiStatus})\\n\\n`);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
ExitCode,
|
|
6
6
|
classifyError,
|
|
7
7
|
suggestSimilarTools
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-KGYBTXIN.js";
|
|
9
|
+
import "./chunk-KBVPIZS4.js";
|
|
10
10
|
export {
|
|
11
11
|
CliError,
|
|
12
12
|
ERROR_DOC_URLS,
|
|
@@ -14,4 +14,4 @@ export {
|
|
|
14
14
|
classifyError,
|
|
15
15
|
suggestSimilarTools
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=errors-
|
|
17
|
+
//# sourceMappingURL=errors-E6MVUBNA.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import "./chunk-KBVPIZS4.js";
|
|
3
|
+
|
|
4
|
+
// src/cli/format.ts
|
|
5
|
+
function pad(str, width) {
|
|
6
|
+
return str.length >= width ? str.slice(0, width) : str + " ".repeat(width - str.length);
|
|
7
|
+
}
|
|
8
|
+
function table(headers, rows) {
|
|
9
|
+
const widths = headers.map(
|
|
10
|
+
(h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || "").length)) + 2
|
|
11
|
+
);
|
|
12
|
+
const headerLine = headers.map((h, i) => pad(h, widths[i])).join("");
|
|
13
|
+
const separator = widths.map((w) => "-".repeat(w)).join("");
|
|
14
|
+
const dataLines = rows.map(
|
|
15
|
+
(row) => row.map((cell, i) => pad(cell, widths[i])).join("")
|
|
16
|
+
);
|
|
17
|
+
return [headerLine, separator, ...dataLines].join("\n");
|
|
18
|
+
}
|
|
19
|
+
function formatTable(data) {
|
|
20
|
+
if (data.length === 0) return "(empty result)";
|
|
21
|
+
const maxCols = 8;
|
|
22
|
+
const maxWidth = 40;
|
|
23
|
+
const allKeys = [...new Set(data.flatMap(Object.keys))];
|
|
24
|
+
const cols = allKeys.slice(0, maxCols);
|
|
25
|
+
const widths = cols.map((col) => {
|
|
26
|
+
const values = data.map((row) => String(row[col] ?? "").slice(0, maxWidth));
|
|
27
|
+
return Math.max(col.length, ...values.map((v) => v.length));
|
|
28
|
+
});
|
|
29
|
+
const header = cols.map((col, i) => col.padEnd(widths[i])).join(" ");
|
|
30
|
+
const separator = widths.map((w) => "-".repeat(w)).join(" ");
|
|
31
|
+
const rows = data.map(
|
|
32
|
+
(row) => cols.map(
|
|
33
|
+
(col, i) => String(row[col] ?? "").slice(0, maxWidth).padEnd(widths[i])
|
|
34
|
+
).join(" ")
|
|
35
|
+
);
|
|
36
|
+
return [header, separator, ...rows].join("\n");
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
formatTable,
|
|
40
|
+
pad,
|
|
41
|
+
table
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=format-TSFSI2K7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/format.ts"],"sourcesContent":["export function pad(str: string, width: number): string {\n return str.length >= width\n ? str.slice(0, width)\n : str + \" \".repeat(width - str.length);\n}\n\nexport function table(headers: string[], rows: string[][]): string {\n const widths = headers.map(\n (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || \"\").length)) + 2,\n );\n const headerLine = headers.map((h, i) => pad(h, widths[i])).join(\"\");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\"\");\n const dataLines = rows.map((row) =>\n row.map((cell, i) => pad(cell, widths[i])).join(\"\"),\n );\n return [headerLine, separator, ...dataLines].join(\"\\n\");\n}\n\n/** Auto-format an array of objects as a fixed-width table. */\nexport function formatTable(data: Record<string, unknown>[]): string {\n if (data.length === 0) return \"(empty result)\";\n\n const maxCols = 8;\n const maxWidth = 40;\n\n const allKeys = [...new Set(data.flatMap(Object.keys))];\n const cols = allKeys.slice(0, maxCols);\n\n const widths = cols.map((col) => {\n const values = data.map((row) => String(row[col] ?? \"\").slice(0, maxWidth));\n return Math.max(col.length, ...values.map((v) => v.length));\n });\n\n const header = cols.map((col, i) => col.padEnd(widths[i])).join(\" \");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\" \");\n const rows = data.map((row) =>\n cols\n .map((col, i) =>\n String(row[col] ?? \"\")\n .slice(0, maxWidth)\n .padEnd(widths[i]),\n )\n .join(\" \"),\n );\n\n return [header, separator, ...rows].join(\"\\n\");\n}\n"],"mappings":";;;;AAAO,SAAS,IAAI,KAAa,OAAuB;AACtD,SAAO,IAAI,UAAU,QACjB,IAAI,MAAM,GAAG,KAAK,IAClB,MAAM,IAAI,OAAO,QAAQ,IAAI,MAAM;AACzC;AAEO,SAAS,MAAM,SAAmB,MAA0B;AACjE,QAAM,SAAS,QAAQ;AAAA,IACrB,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;AAAA,EAC1E;AACA,QAAM,aAAa,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACnE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AAC1D,QAAM,YAAY,KAAK;AAAA,IAAI,CAAC,QAC1B,IAAI,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAAA,EACpD;AACA,SAAO,CAAC,YAAY,WAAW,GAAG,SAAS,EAAE,KAAK,IAAI;AACxD;AAGO,SAAS,YAAY,MAAyC;AACnE,MAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QAAM,UAAU;AAChB,QAAM,WAAW;AAEjB,QAAM,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,OAAO,IAAI,CAAC,CAAC;AACtD,QAAM,OAAO,QAAQ,MAAM,GAAG,OAAO;AAErC,QAAM,SAAS,KAAK,IAAI,CAAC,QAAQ;AAC/B,UAAM,SAAS,KAAK,IAAI,CAAC,QAAQ,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC;AAC1E,WAAO,KAAK,IAAI,IAAI,QAAQ,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAAA,EAC5D,CAAC;AAED,QAAM,SAAS,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI;AACpE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC5D,QAAM,OAAO,KAAK;AAAA,IAAI,CAAC,QACrB,KACG;AAAA,MAAI,CAAC,KAAK,MACT,OAAO,IAAI,GAAG,KAAK,EAAE,EAClB,MAAM,GAAG,QAAQ,EACjB,OAAO,OAAO,CAAC,CAAC;AAAA,IACrB,EACC,KAAK,IAAI;AAAA,EACd;AAEA,SAAO,CAAC,QAAQ,WAAW,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/C;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
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/init.ts
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
@@ -99,4 +99,4 @@ Validating API key against ${baseUrl}...`);
|
|
|
99
99
|
export {
|
|
100
100
|
runInit
|
|
101
101
|
};
|
|
102
|
-
//# sourceMappingURL=init-
|
|
102
|
+
//# sourceMappingURL=init-YQ5NBICF.js.map
|