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,265 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/agentSkills.ts
|
|
4
|
+
var HIVE_AGENT_SKILLS = [
|
|
5
|
+
{
|
|
6
|
+
name: "hive-mcp",
|
|
7
|
+
label: "Install Hive MCP",
|
|
8
|
+
description: "Connect Hive's hosted remote MCP endpoint to Claude, Cursor, VS Code, ChatGPT, Codex, Gemini, and other MCP clients.",
|
|
9
|
+
path: "agent-skills/packs/hive-mcp/SKILL.md",
|
|
10
|
+
toolsetIds: ["search_discovery"],
|
|
11
|
+
useWhen: ["install hive", "connect mcp", "configure client"]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: "hive-build-onboarding",
|
|
15
|
+
label: "Get a Hive API Key",
|
|
16
|
+
description: "Guide agents through browser auth, dashboard key creation, and headless environment setup.",
|
|
17
|
+
path: "agent-skills/packs/hive-build-onboarding/SKILL.md",
|
|
18
|
+
toolsetIds: ["search_discovery"],
|
|
19
|
+
useWhen: ["no api key", "sign up", "lost key"]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "hive-build",
|
|
23
|
+
label: "Build With Hive",
|
|
24
|
+
description: "Use Hive from application code through REST, MCP SDK clients, or backend services.",
|
|
25
|
+
path: "agent-skills/packs/hive-build/SKILL.md",
|
|
26
|
+
toolsetIds: ["search_discovery"],
|
|
27
|
+
useWhen: ["integrate api", "backend", "sdk", "production app"]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "hive-cli",
|
|
31
|
+
label: "Use Hive CLI",
|
|
32
|
+
description: "Run Hive from shell scripts, cron jobs, and terminal research workflows.",
|
|
33
|
+
path: "agent-skills/packs/hive-cli/SKILL.md",
|
|
34
|
+
toolsetIds: ["search_discovery"],
|
|
35
|
+
useWhen: ["terminal", "cli", "jq", "cron"]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "hive-query",
|
|
39
|
+
label: "Route A Crypto Query",
|
|
40
|
+
description: "Start from the user's intent, choose the canonical task toolset, inspect schemas, and call exact Hive tools.",
|
|
41
|
+
path: "agent-skills/packs/hive-query/SKILL.md",
|
|
42
|
+
toolsetIds: [
|
|
43
|
+
"market_research",
|
|
44
|
+
"token_diligence",
|
|
45
|
+
"wallet_investigation",
|
|
46
|
+
"security_risk",
|
|
47
|
+
"onchain_dex_pool_analysis",
|
|
48
|
+
"defi_protocol_analysis",
|
|
49
|
+
"nft_research",
|
|
50
|
+
"network_infrastructure",
|
|
51
|
+
"solana_analysis",
|
|
52
|
+
"prediction_markets",
|
|
53
|
+
"search_discovery"
|
|
54
|
+
],
|
|
55
|
+
useWhen: [
|
|
56
|
+
"crypto question",
|
|
57
|
+
"pick a tool",
|
|
58
|
+
"tool routing",
|
|
59
|
+
"unknown crypto data",
|
|
60
|
+
"which hive endpoint"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "hive-tool-discovery",
|
|
65
|
+
label: "Tool Discovery",
|
|
66
|
+
description: "Use search_tools, hive://toolsets, schema lookup, and invoke_api_endpoint correctly.",
|
|
67
|
+
path: "agent-skills/packs/hive-tool-discovery/SKILL.md",
|
|
68
|
+
toolsetIds: ["search_discovery"],
|
|
69
|
+
useWhen: [
|
|
70
|
+
"unknown tool",
|
|
71
|
+
"schema",
|
|
72
|
+
"discovery",
|
|
73
|
+
"search tools",
|
|
74
|
+
"invoke endpoint",
|
|
75
|
+
"category tool"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "hive-market-research",
|
|
80
|
+
label: "Market Research",
|
|
81
|
+
description: "Research prices, liquidity, exchanges, OHLC, order books, and derivatives context.",
|
|
82
|
+
path: "agent-skills/packs/hive-market-research/SKILL.md",
|
|
83
|
+
toolsetIds: ["market_research"],
|
|
84
|
+
useWhen: [
|
|
85
|
+
"price",
|
|
86
|
+
"market",
|
|
87
|
+
"spot",
|
|
88
|
+
"exchange",
|
|
89
|
+
"order book",
|
|
90
|
+
"ohlc",
|
|
91
|
+
"volume",
|
|
92
|
+
"funding",
|
|
93
|
+
"open interest",
|
|
94
|
+
"liquidations",
|
|
95
|
+
"derivatives",
|
|
96
|
+
"options"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "hive-token-diligence",
|
|
101
|
+
label: "Token Diligence",
|
|
102
|
+
description: "Investigate token metadata, market context, liquidity, holders, enrichment, and risk.",
|
|
103
|
+
path: "agent-skills/packs/hive-token-diligence/SKILL.md",
|
|
104
|
+
toolsetIds: ["token_diligence"],
|
|
105
|
+
useWhen: [
|
|
106
|
+
"token",
|
|
107
|
+
"contract",
|
|
108
|
+
"holders",
|
|
109
|
+
"top traders",
|
|
110
|
+
"metadata",
|
|
111
|
+
"socials",
|
|
112
|
+
"liquidity",
|
|
113
|
+
"safe to buy",
|
|
114
|
+
"token diligence"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "hive-wallet-investigation",
|
|
119
|
+
label: "Wallet Investigation",
|
|
120
|
+
description: "Inspect wallet balances, transfers, NFTs, PnL, DeFi positions, and notable activity.",
|
|
121
|
+
path: "agent-skills/packs/hive-wallet-investigation/SKILL.md",
|
|
122
|
+
toolsetIds: ["wallet_investigation"],
|
|
123
|
+
useWhen: [
|
|
124
|
+
"wallet",
|
|
125
|
+
"portfolio",
|
|
126
|
+
"balances",
|
|
127
|
+
"holdings",
|
|
128
|
+
"pnl",
|
|
129
|
+
"profitability",
|
|
130
|
+
"transfers",
|
|
131
|
+
"swaps",
|
|
132
|
+
"defi positions",
|
|
133
|
+
"chain activity"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "hive-security-risk",
|
|
138
|
+
label: "Security Risk",
|
|
139
|
+
description: "Check token, approval, address, phishing, contract, and simulation risk signals.",
|
|
140
|
+
path: "agent-skills/packs/hive-security-risk/SKILL.md",
|
|
141
|
+
toolsetIds: ["security_risk"],
|
|
142
|
+
useWhen: [
|
|
143
|
+
"security",
|
|
144
|
+
"risk",
|
|
145
|
+
"safe",
|
|
146
|
+
"scam",
|
|
147
|
+
"rugpull",
|
|
148
|
+
"honeypot",
|
|
149
|
+
"malicious",
|
|
150
|
+
"phishing",
|
|
151
|
+
"dapp",
|
|
152
|
+
"approval",
|
|
153
|
+
"calldata",
|
|
154
|
+
"simulate"
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: "hive-dex-pool-analysis",
|
|
159
|
+
label: "DEX And Pool Analysis",
|
|
160
|
+
description: "Analyze on-chain pools, pairs, liquidity, trades, OHLCV, and DEX flow.",
|
|
161
|
+
path: "agent-skills/packs/hive-dex-pool-analysis/SKILL.md",
|
|
162
|
+
toolsetIds: ["onchain_dex_pool_analysis"],
|
|
163
|
+
useWhen: [
|
|
164
|
+
"dex",
|
|
165
|
+
"pool",
|
|
166
|
+
"pair",
|
|
167
|
+
"liquidity",
|
|
168
|
+
"trades",
|
|
169
|
+
"ohlcv",
|
|
170
|
+
"trending pools",
|
|
171
|
+
"uniswap"
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: "hive-defi-research",
|
|
176
|
+
label: "DeFi Research",
|
|
177
|
+
description: "Analyze protocols, TVL, fees, revenue, stablecoins, bridges, and yield pools.",
|
|
178
|
+
path: "agent-skills/packs/hive-defi-research/SKILL.md",
|
|
179
|
+
toolsetIds: ["defi_protocol_analysis"],
|
|
180
|
+
useWhen: [
|
|
181
|
+
"defi",
|
|
182
|
+
"protocol",
|
|
183
|
+
"tvl",
|
|
184
|
+
"fees",
|
|
185
|
+
"revenue",
|
|
186
|
+
"stablecoin",
|
|
187
|
+
"bridge",
|
|
188
|
+
"yield",
|
|
189
|
+
"apy"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "hive-nft-research",
|
|
194
|
+
label: "NFT Research",
|
|
195
|
+
description: "Research NFT collections, ownership, metadata, floor price, sales, rarity, and spam checks.",
|
|
196
|
+
path: "agent-skills/packs/hive-nft-research/SKILL.md",
|
|
197
|
+
toolsetIds: ["nft_research"],
|
|
198
|
+
useWhen: [
|
|
199
|
+
"nft",
|
|
200
|
+
"collection",
|
|
201
|
+
"floor",
|
|
202
|
+
"sales",
|
|
203
|
+
"owner",
|
|
204
|
+
"metadata",
|
|
205
|
+
"rarity",
|
|
206
|
+
"spam"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: "hive-solana-analysis",
|
|
211
|
+
label: "Solana Analysis",
|
|
212
|
+
description: "Analyze Solana wallets, SPL token accounts, DAS assets, parsed transactions, and priority fees.",
|
|
213
|
+
path: "agent-skills/packs/hive-solana-analysis/SKILL.md",
|
|
214
|
+
toolsetIds: ["solana_analysis"],
|
|
215
|
+
useWhen: [
|
|
216
|
+
"solana",
|
|
217
|
+
"spl",
|
|
218
|
+
"das",
|
|
219
|
+
"priority fee",
|
|
220
|
+
"pumpfun",
|
|
221
|
+
"token accounts",
|
|
222
|
+
"parsed transaction"
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
name: "hive-network-infrastructure",
|
|
227
|
+
label: "Network Infrastructure",
|
|
228
|
+
description: "Read chain state, gas, blocks, receipts, logs, transaction status, and RPC diagnostics.",
|
|
229
|
+
path: "agent-skills/packs/hive-network-infrastructure/SKILL.md",
|
|
230
|
+
toolsetIds: ["network_infrastructure"],
|
|
231
|
+
useWhen: [
|
|
232
|
+
"gas",
|
|
233
|
+
"block",
|
|
234
|
+
"receipt",
|
|
235
|
+
"logs",
|
|
236
|
+
"rpc",
|
|
237
|
+
"transaction status",
|
|
238
|
+
"chain state",
|
|
239
|
+
"tenderly networks"
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: "hive-prediction-markets",
|
|
244
|
+
label: "Prediction Markets",
|
|
245
|
+
description: "Research prediction markets, events, outcomes, market stats, traders, holders, and trades.",
|
|
246
|
+
path: "agent-skills/packs/hive-prediction-markets/SKILL.md",
|
|
247
|
+
toolsetIds: ["prediction_markets"],
|
|
248
|
+
useWhen: [
|
|
249
|
+
"prediction market",
|
|
250
|
+
"polymarket",
|
|
251
|
+
"kalshi",
|
|
252
|
+
"odds",
|
|
253
|
+
"election odds",
|
|
254
|
+
"sports odds",
|
|
255
|
+
"event",
|
|
256
|
+
"outcome",
|
|
257
|
+
"prediction traders"
|
|
258
|
+
]
|
|
259
|
+
}
|
|
260
|
+
];
|
|
261
|
+
|
|
262
|
+
export {
|
|
263
|
+
HIVE_AGENT_SKILLS
|
|
264
|
+
};
|
|
265
|
+
//# sourceMappingURL=chunk-B6G222LS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agentSkills.ts"],"sourcesContent":["export type HiveAgentSkill = {\n name: string;\n label: string;\n description: string;\n path: string;\n toolsetIds: string[];\n useWhen: string[];\n};\n\nexport const HIVE_AGENT_SKILLS: HiveAgentSkill[] = [\n {\n name: \"hive-mcp\",\n label: \"Install Hive MCP\",\n description:\n \"Connect Hive's hosted remote MCP endpoint to Claude, Cursor, VS Code, ChatGPT, Codex, Gemini, and other MCP clients.\",\n path: \"agent-skills/packs/hive-mcp/SKILL.md\",\n toolsetIds: [\"search_discovery\"],\n useWhen: [\"install hive\", \"connect mcp\", \"configure client\"],\n },\n {\n name: \"hive-build-onboarding\",\n label: \"Get a Hive API Key\",\n description:\n \"Guide agents through browser auth, dashboard key creation, and headless environment setup.\",\n path: \"agent-skills/packs/hive-build-onboarding/SKILL.md\",\n toolsetIds: [\"search_discovery\"],\n useWhen: [\"no api key\", \"sign up\", \"lost key\"],\n },\n {\n name: \"hive-build\",\n label: \"Build With Hive\",\n description:\n \"Use Hive from application code through REST, MCP SDK clients, or backend services.\",\n path: \"agent-skills/packs/hive-build/SKILL.md\",\n toolsetIds: [\"search_discovery\"],\n useWhen: [\"integrate api\", \"backend\", \"sdk\", \"production app\"],\n },\n {\n name: \"hive-cli\",\n label: \"Use Hive CLI\",\n description:\n \"Run Hive from shell scripts, cron jobs, and terminal research workflows.\",\n path: \"agent-skills/packs/hive-cli/SKILL.md\",\n toolsetIds: [\"search_discovery\"],\n useWhen: [\"terminal\", \"cli\", \"jq\", \"cron\"],\n },\n {\n name: \"hive-query\",\n label: \"Route A Crypto Query\",\n description:\n \"Start from the user's intent, choose the canonical task toolset, inspect schemas, and call exact Hive tools.\",\n path: \"agent-skills/packs/hive-query/SKILL.md\",\n toolsetIds: [\n \"market_research\",\n \"token_diligence\",\n \"wallet_investigation\",\n \"security_risk\",\n \"onchain_dex_pool_analysis\",\n \"defi_protocol_analysis\",\n \"nft_research\",\n \"network_infrastructure\",\n \"solana_analysis\",\n \"prediction_markets\",\n \"search_discovery\",\n ],\n useWhen: [\n \"crypto question\",\n \"pick a tool\",\n \"tool routing\",\n \"unknown crypto data\",\n \"which hive endpoint\",\n ],\n },\n {\n name: \"hive-tool-discovery\",\n label: \"Tool Discovery\",\n description:\n \"Use search_tools, hive://toolsets, schema lookup, and invoke_api_endpoint correctly.\",\n path: \"agent-skills/packs/hive-tool-discovery/SKILL.md\",\n toolsetIds: [\"search_discovery\"],\n useWhen: [\n \"unknown tool\",\n \"schema\",\n \"discovery\",\n \"search tools\",\n \"invoke endpoint\",\n \"category tool\",\n ],\n },\n {\n name: \"hive-market-research\",\n label: \"Market Research\",\n description:\n \"Research prices, liquidity, exchanges, OHLC, order books, and derivatives context.\",\n path: \"agent-skills/packs/hive-market-research/SKILL.md\",\n toolsetIds: [\"market_research\"],\n useWhen: [\n \"price\",\n \"market\",\n \"spot\",\n \"exchange\",\n \"order book\",\n \"ohlc\",\n \"volume\",\n \"funding\",\n \"open interest\",\n \"liquidations\",\n \"derivatives\",\n \"options\",\n ],\n },\n {\n name: \"hive-token-diligence\",\n label: \"Token Diligence\",\n description:\n \"Investigate token metadata, market context, liquidity, holders, enrichment, and risk.\",\n path: \"agent-skills/packs/hive-token-diligence/SKILL.md\",\n toolsetIds: [\"token_diligence\"],\n useWhen: [\n \"token\",\n \"contract\",\n \"holders\",\n \"top traders\",\n \"metadata\",\n \"socials\",\n \"liquidity\",\n \"safe to buy\",\n \"token diligence\",\n ],\n },\n {\n name: \"hive-wallet-investigation\",\n label: \"Wallet Investigation\",\n description:\n \"Inspect wallet balances, transfers, NFTs, PnL, DeFi positions, and notable activity.\",\n path: \"agent-skills/packs/hive-wallet-investigation/SKILL.md\",\n toolsetIds: [\"wallet_investigation\"],\n useWhen: [\n \"wallet\",\n \"portfolio\",\n \"balances\",\n \"holdings\",\n \"pnl\",\n \"profitability\",\n \"transfers\",\n \"swaps\",\n \"defi positions\",\n \"chain activity\",\n ],\n },\n {\n name: \"hive-security-risk\",\n label: \"Security Risk\",\n description:\n \"Check token, approval, address, phishing, contract, and simulation risk signals.\",\n path: \"agent-skills/packs/hive-security-risk/SKILL.md\",\n toolsetIds: [\"security_risk\"],\n useWhen: [\n \"security\",\n \"risk\",\n \"safe\",\n \"scam\",\n \"rugpull\",\n \"honeypot\",\n \"malicious\",\n \"phishing\",\n \"dapp\",\n \"approval\",\n \"calldata\",\n \"simulate\",\n ],\n },\n {\n name: \"hive-dex-pool-analysis\",\n label: \"DEX And Pool Analysis\",\n description:\n \"Analyze on-chain pools, pairs, liquidity, trades, OHLCV, and DEX flow.\",\n path: \"agent-skills/packs/hive-dex-pool-analysis/SKILL.md\",\n toolsetIds: [\"onchain_dex_pool_analysis\"],\n useWhen: [\n \"dex\",\n \"pool\",\n \"pair\",\n \"liquidity\",\n \"trades\",\n \"ohlcv\",\n \"trending pools\",\n \"uniswap\",\n ],\n },\n {\n name: \"hive-defi-research\",\n label: \"DeFi Research\",\n description:\n \"Analyze protocols, TVL, fees, revenue, stablecoins, bridges, and yield pools.\",\n path: \"agent-skills/packs/hive-defi-research/SKILL.md\",\n toolsetIds: [\"defi_protocol_analysis\"],\n useWhen: [\n \"defi\",\n \"protocol\",\n \"tvl\",\n \"fees\",\n \"revenue\",\n \"stablecoin\",\n \"bridge\",\n \"yield\",\n \"apy\",\n ],\n },\n {\n name: \"hive-nft-research\",\n label: \"NFT Research\",\n description:\n \"Research NFT collections, ownership, metadata, floor price, sales, rarity, and spam checks.\",\n path: \"agent-skills/packs/hive-nft-research/SKILL.md\",\n toolsetIds: [\"nft_research\"],\n useWhen: [\n \"nft\",\n \"collection\",\n \"floor\",\n \"sales\",\n \"owner\",\n \"metadata\",\n \"rarity\",\n \"spam\",\n ],\n },\n {\n name: \"hive-solana-analysis\",\n label: \"Solana Analysis\",\n description:\n \"Analyze Solana wallets, SPL token accounts, DAS assets, parsed transactions, and priority fees.\",\n path: \"agent-skills/packs/hive-solana-analysis/SKILL.md\",\n toolsetIds: [\"solana_analysis\"],\n useWhen: [\n \"solana\",\n \"spl\",\n \"das\",\n \"priority fee\",\n \"pumpfun\",\n \"token accounts\",\n \"parsed transaction\",\n ],\n },\n {\n name: \"hive-network-infrastructure\",\n label: \"Network Infrastructure\",\n description:\n \"Read chain state, gas, blocks, receipts, logs, transaction status, and RPC diagnostics.\",\n path: \"agent-skills/packs/hive-network-infrastructure/SKILL.md\",\n toolsetIds: [\"network_infrastructure\"],\n useWhen: [\n \"gas\",\n \"block\",\n \"receipt\",\n \"logs\",\n \"rpc\",\n \"transaction status\",\n \"chain state\",\n \"tenderly networks\",\n ],\n },\n {\n name: \"hive-prediction-markets\",\n label: \"Prediction Markets\",\n description:\n \"Research prediction markets, events, outcomes, market stats, traders, holders, and trades.\",\n path: \"agent-skills/packs/hive-prediction-markets/SKILL.md\",\n toolsetIds: [\"prediction_markets\"],\n useWhen: [\n \"prediction market\",\n \"polymarket\",\n \"kalshi\",\n \"odds\",\n \"election odds\",\n \"sports odds\",\n \"event\",\n \"outcome\",\n \"prediction traders\",\n ],\n },\n];\n"],"mappings":"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","names":[]}
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
ensureConfigDir,
|
|
4
4
|
getConfig,
|
|
5
5
|
saveConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-V77LO4RO.js";
|
|
7
7
|
|
|
8
8
|
// src/cli/telemetry.ts
|
|
9
9
|
import { platform, release } from "os";
|
|
10
|
-
var TELEMETRY_URL = "https://
|
|
10
|
+
var TELEMETRY_URL = process.env.HIVE_CLI_TELEMETRY_URL ?? "https://mcp.hiveintelligence.xyz/api/v1/telemetry";
|
|
11
11
|
function isTelemetryEnabled() {
|
|
12
12
|
return getConfig().telemetry === true;
|
|
13
13
|
}
|
|
@@ -43,7 +43,7 @@ function trackCommand(command, durationMs, errorCode) {
|
|
|
43
43
|
command,
|
|
44
44
|
durationMs,
|
|
45
45
|
errorCode,
|
|
46
|
-
cliVersion: process.env.npm_package_version ?? "
|
|
46
|
+
cliVersion: process.env.npm_package_version ?? "1.1.3",
|
|
47
47
|
os: `${platform()} ${release()}`,
|
|
48
48
|
nodeVersion: process.version
|
|
49
49
|
};
|
|
@@ -63,4 +63,4 @@ export {
|
|
|
63
63
|
telemetryStatus,
|
|
64
64
|
trackCommand
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-DYJBTKNR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/telemetry.ts"],"sourcesContent":["import { platform, release } from \"node:os\";\nimport { getConfig, saveConfig, ensureConfigDir } from \"./config-dir.js\";\n\ninterface TelemetryEvent {\n command: string;\n durationMs: number;\n errorCode?: string;\n cliVersion: string;\n os: string;\n nodeVersion: string;\n}\n\nconst TELEMETRY_URL =\n process.env.HIVE_CLI_TELEMETRY_URL ??\n \"https://mcp.hiveintelligence.xyz/api/v1/telemetry\";\n\nexport function isTelemetryEnabled(): boolean {\n return getConfig().telemetry === true;\n}\n\nexport function enableTelemetry(): void {\n ensureConfigDir();\n const config = getConfig();\n config.telemetry = true;\n saveConfig(config);\n process.stderr.write(\n \"Telemetry enabled. Thank you for helping improve Hive CLI.\\n\",\n );\n process.stderr.write(\n \"Only command names, duration, and error codes are collected.\\n\",\n );\n process.stderr.write(\"API keys, arguments, and data are never tracked.\\n\\n\");\n}\n\nexport function disableTelemetry(): void {\n ensureConfigDir();\n const config = getConfig();\n config.telemetry = false;\n saveConfig(config);\n process.stderr.write(\"Telemetry disabled.\\n\\n\");\n}\n\nexport function telemetryStatus(): void {\n const enabled = isTelemetryEnabled();\n process.stderr.write(`Telemetry: ${enabled ? \"enabled\" : \"disabled\"}\\n\\n`);\n}\n\n/** Fire-and-forget telemetry event. Never throws, never blocks. */\nexport function trackCommand(\n command: string,\n durationMs: number,\n errorCode?: string,\n): void {\n if (!isTelemetryEnabled()) return;\n\n const event: TelemetryEvent = {\n command,\n durationMs,\n errorCode,\n cliVersion: process.env.npm_package_version ?? \"1.1.3\",\n os: `${platform()} ${release()}`,\n nodeVersion: process.version,\n };\n\n fetch(TELEMETRY_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(event),\n signal: AbortSignal.timeout(3000),\n }).catch(() => {});\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,UAAU,eAAe;AAYlC,IAAM,gBACJ,QAAQ,IAAI,0BACZ;AAEK,SAAS,qBAA8B;AAC5C,SAAO,UAAU,EAAE,cAAc;AACnC;AAEO,SAAS,kBAAwB;AACtC,kBAAgB;AAChB,QAAM,SAAS,UAAU;AACzB,SAAO,YAAY;AACnB,aAAW,MAAM;AACjB,UAAQ,OAAO;AAAA,IACb;AAAA,EACF;AACA,UAAQ,OAAO;AAAA,IACb;AAAA,EACF;AACA,UAAQ,OAAO,MAAM,sDAAsD;AAC7E;AAEO,SAAS,mBAAyB;AACvC,kBAAgB;AAChB,QAAM,SAAS,UAAU;AACzB,SAAO,YAAY;AACnB,aAAW,MAAM;AACjB,UAAQ,OAAO,MAAM,yBAAyB;AAChD;AAEO,SAAS,kBAAwB;AACtC,QAAM,UAAU,mBAAmB;AACnC,UAAQ,OAAO,MAAM,cAAc,UAAU,YAAY,UAAU;AAAA;AAAA,CAAM;AAC3E;AAGO,SAAS,aACd,SACA,YACA,WACM;AACN,MAAI,CAAC,mBAAmB,EAAG;AAE3B,QAAM,QAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,QAAQ,IAAI,uBAAuB;AAAA,IAC/C,IAAI,GAAG,SAAS,CAAC,IAAI,QAAQ,CAAC;AAAA,IAC9B,aAAa,QAAQ;AAAA,EACvB;AAEA,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,KAAK;AAAA,IAC1B,QAAQ,YAAY,QAAQ,GAAI;AAAA,EAClC,CAAC,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AACnB;","names":[]}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getClaudeDesktopConfigPath,
|
|
4
|
+
getCursorConfigPath,
|
|
5
|
+
getVscodeConfigPath
|
|
6
|
+
} from "./chunk-2MYMHMBF.js";
|
|
7
|
+
import {
|
|
8
|
+
HIVE_AGENT_SKILLS
|
|
9
|
+
} from "./chunk-B6G222LS.js";
|
|
10
|
+
|
|
11
|
+
// src/cli/detect-clients.ts
|
|
12
|
+
import { existsSync } from "fs";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
import { homedir, platform } from "os";
|
|
15
|
+
function getClaudeCodeConfigPath() {
|
|
16
|
+
return join(homedir(), ".claude.json");
|
|
17
|
+
}
|
|
18
|
+
function getWindsurfConfigPath() {
|
|
19
|
+
return join(homedir(), ".codeium", "windsurf", "mcp_config.json");
|
|
20
|
+
}
|
|
21
|
+
function getGeminiCliConfigPath() {
|
|
22
|
+
return join(homedir(), ".gemini", "settings.json");
|
|
23
|
+
}
|
|
24
|
+
function detectClaudeCode() {
|
|
25
|
+
return existsSync(getClaudeCodeConfigPath()) || existsSync(join(homedir(), ".claude"));
|
|
26
|
+
}
|
|
27
|
+
function detectClaudeDesktop() {
|
|
28
|
+
const configPath = getClaudeDesktopConfigPath();
|
|
29
|
+
if (existsSync(configPath)) return true;
|
|
30
|
+
if (platform() === "darwin") {
|
|
31
|
+
return existsSync(
|
|
32
|
+
join(homedir(), "Library", "Application Support", "Claude")
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (platform() === "win32") {
|
|
36
|
+
return existsSync(join(homedir(), "AppData", "Roaming", "Claude"));
|
|
37
|
+
}
|
|
38
|
+
return existsSync(join(homedir(), ".config", "Claude"));
|
|
39
|
+
}
|
|
40
|
+
function detectCursor() {
|
|
41
|
+
return existsSync(join(homedir(), ".cursor"));
|
|
42
|
+
}
|
|
43
|
+
function detectVscode() {
|
|
44
|
+
if (existsSync(join(homedir(), ".vscode"))) return true;
|
|
45
|
+
if (platform() === "darwin") {
|
|
46
|
+
return existsSync(
|
|
47
|
+
join(homedir(), "Library", "Application Support", "Code")
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
if (platform() === "win32") {
|
|
51
|
+
return existsSync(join(homedir(), "AppData", "Roaming", "Code"));
|
|
52
|
+
}
|
|
53
|
+
return existsSync(join(homedir(), ".config", "Code"));
|
|
54
|
+
}
|
|
55
|
+
function detectWindsurf() {
|
|
56
|
+
return existsSync(join(homedir(), ".codeium", "windsurf"));
|
|
57
|
+
}
|
|
58
|
+
function detectGeminiCli() {
|
|
59
|
+
return existsSync(join(homedir(), ".gemini"));
|
|
60
|
+
}
|
|
61
|
+
function detectClients() {
|
|
62
|
+
const claudeCode = detectClaudeCode();
|
|
63
|
+
const claudeDesktop = detectClaudeDesktop();
|
|
64
|
+
const cursor = detectCursor();
|
|
65
|
+
const vscode = detectVscode();
|
|
66
|
+
const windsurf = detectWindsurf();
|
|
67
|
+
const geminiCli = detectGeminiCli();
|
|
68
|
+
return [
|
|
69
|
+
{
|
|
70
|
+
id: "claude-code",
|
|
71
|
+
name: "Claude Code",
|
|
72
|
+
configPath: getClaudeCodeConfigPath(),
|
|
73
|
+
detected: claudeCode,
|
|
74
|
+
programmable: true,
|
|
75
|
+
hint: claudeCode ? void 0 : "~/.claude or ~/.claude.json not found"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "claude-desktop",
|
|
79
|
+
name: "Claude Desktop",
|
|
80
|
+
configPath: getClaudeDesktopConfigPath(),
|
|
81
|
+
detected: claudeDesktop,
|
|
82
|
+
programmable: true,
|
|
83
|
+
hint: claudeDesktop ? void 0 : "Claude Desktop application directory not found"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "cursor",
|
|
87
|
+
name: "Cursor",
|
|
88
|
+
configPath: getCursorConfigPath(),
|
|
89
|
+
detected: cursor,
|
|
90
|
+
programmable: true,
|
|
91
|
+
hint: cursor ? void 0 : "~/.cursor not found"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "vscode",
|
|
95
|
+
name: "VS Code",
|
|
96
|
+
configPath: getVscodeConfigPath(),
|
|
97
|
+
detected: vscode,
|
|
98
|
+
programmable: true,
|
|
99
|
+
hint: vscode ? void 0 : "VS Code user data dir not found"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: "windsurf",
|
|
103
|
+
name: "Windsurf",
|
|
104
|
+
configPath: getWindsurfConfigPath(),
|
|
105
|
+
detected: windsurf,
|
|
106
|
+
programmable: true,
|
|
107
|
+
hint: windsurf ? void 0 : "~/.codeium/windsurf not found"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: "gemini-cli",
|
|
111
|
+
name: "Gemini CLI",
|
|
112
|
+
configPath: getGeminiCliConfigPath(),
|
|
113
|
+
detected: geminiCli,
|
|
114
|
+
programmable: true,
|
|
115
|
+
hint: geminiCli ? void 0 : "~/.gemini not found"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: "chatgpt-desktop",
|
|
119
|
+
name: "ChatGPT Desktop",
|
|
120
|
+
configPath: "(in-app: Settings \u2192 Connectors)",
|
|
121
|
+
detected: false,
|
|
122
|
+
// No reliable filesystem signal — always print instructions
|
|
123
|
+
programmable: false,
|
|
124
|
+
hint: "ChatGPT Desktop requires manual setup via Settings \u2192 Connectors \u2192 Add MCP server"
|
|
125
|
+
}
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// src/cli/skills.ts
|
|
130
|
+
import {
|
|
131
|
+
cpSync,
|
|
132
|
+
existsSync as existsSync2,
|
|
133
|
+
mkdirSync,
|
|
134
|
+
readdirSync,
|
|
135
|
+
rmSync,
|
|
136
|
+
statSync
|
|
137
|
+
} from "fs";
|
|
138
|
+
import { homedir as homedir2 } from "os";
|
|
139
|
+
import { dirname, join as join2, resolve } from "path";
|
|
140
|
+
import { fileURLToPath } from "url";
|
|
141
|
+
var SKILL_PACK_NAMES = HIVE_AGENT_SKILLS.map((skill) => skill.name);
|
|
142
|
+
function getClientSkillsDir(client) {
|
|
143
|
+
switch (client) {
|
|
144
|
+
case "claude-code":
|
|
145
|
+
return join2(homedir2(), ".claude", "skills");
|
|
146
|
+
case "cursor":
|
|
147
|
+
return join2(homedir2(), ".cursor", "skills");
|
|
148
|
+
case "vscode":
|
|
149
|
+
return null;
|
|
150
|
+
case "windsurf":
|
|
151
|
+
return null;
|
|
152
|
+
case "gemini-cli":
|
|
153
|
+
return null;
|
|
154
|
+
case "claude-desktop":
|
|
155
|
+
return join2(homedir2(), ".claude", "skills");
|
|
156
|
+
case "chatgpt-desktop":
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function findBundledPacksDir() {
|
|
161
|
+
const override = process.env.HIVE_SKILLS_PACKS_DIR;
|
|
162
|
+
if (override && existsSync2(override) && statSync(override).isDirectory()) {
|
|
163
|
+
return override;
|
|
164
|
+
}
|
|
165
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
166
|
+
const candidates = [
|
|
167
|
+
// Compiled (bin/hive-mcp.js -> build/cli/skills.js)
|
|
168
|
+
resolve(here, "..", "..", "agent-skills", "packs"),
|
|
169
|
+
// Source tree (tests / dev mode)
|
|
170
|
+
resolve(here, "..", "..", "agent-skills", "packs"),
|
|
171
|
+
// Single-level dev (when CLI is run from source)
|
|
172
|
+
resolve(here, "..", "agent-skills", "packs"),
|
|
173
|
+
// Process-relative as a last resort
|
|
174
|
+
resolve(process.cwd(), "agent-skills", "packs")
|
|
175
|
+
];
|
|
176
|
+
for (const candidate of candidates) {
|
|
177
|
+
if (existsSync2(candidate) && statSync(candidate).isDirectory()) {
|
|
178
|
+
return candidate;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
function installSkillsForClient(client) {
|
|
184
|
+
const dest = getClientSkillsDir(client);
|
|
185
|
+
if (!dest) {
|
|
186
|
+
return {
|
|
187
|
+
client,
|
|
188
|
+
installed: [],
|
|
189
|
+
skipped: [...SKILL_PACK_NAMES],
|
|
190
|
+
destination: null,
|
|
191
|
+
reason: "Client has no native skills directory \u2014 tools come over MCP"
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const packsRoot = findBundledPacksDir();
|
|
195
|
+
if (!packsRoot) {
|
|
196
|
+
return {
|
|
197
|
+
client,
|
|
198
|
+
installed: [],
|
|
199
|
+
skipped: [...SKILL_PACK_NAMES],
|
|
200
|
+
destination: dest,
|
|
201
|
+
reason: "Bundled skill packs not found \u2014 package install may be incomplete"
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
if (!existsSync2(dest)) mkdirSync(dest, { recursive: true });
|
|
205
|
+
const installed = [];
|
|
206
|
+
const skipped = [];
|
|
207
|
+
for (const pack of SKILL_PACK_NAMES) {
|
|
208
|
+
const src = join2(packsRoot, pack);
|
|
209
|
+
if (!existsSync2(src)) {
|
|
210
|
+
skipped.push(pack);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const target = join2(dest, pack);
|
|
214
|
+
if (existsSync2(target)) rmSync(target, { recursive: true, force: true });
|
|
215
|
+
cpSync(src, target, { recursive: true });
|
|
216
|
+
installed.push(pack);
|
|
217
|
+
}
|
|
218
|
+
return { client, installed, skipped, destination: dest };
|
|
219
|
+
}
|
|
220
|
+
function installSkillsForClients(clients) {
|
|
221
|
+
return clients.map(installSkillsForClient);
|
|
222
|
+
}
|
|
223
|
+
function removeSkillsForClient(client) {
|
|
224
|
+
const dest = getClientSkillsDir(client);
|
|
225
|
+
if (!dest || !existsSync2(dest)) {
|
|
226
|
+
return { client, removed: [], destination: dest };
|
|
227
|
+
}
|
|
228
|
+
const removed = [];
|
|
229
|
+
for (const pack of SKILL_PACK_NAMES) {
|
|
230
|
+
const target = join2(dest, pack);
|
|
231
|
+
if (existsSync2(target)) {
|
|
232
|
+
rmSync(target, { recursive: true, force: true });
|
|
233
|
+
removed.push(pack);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return { client, removed, destination: dest };
|
|
237
|
+
}
|
|
238
|
+
function removeSkillsForClients(clients) {
|
|
239
|
+
return clients.map(removeSkillsForClient);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export {
|
|
243
|
+
detectClients,
|
|
244
|
+
installSkillsForClients,
|
|
245
|
+
removeSkillsForClients
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=chunk-IDZD2NVG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/detect-clients.ts","../src/cli/skills.ts"],"sourcesContent":["/**\n * Detect MCP-capable AI clients installed on this machine.\n *\n * Each client gets a `detect()` predicate that returns `true` only when\n * we have evidence the user has actually used / installed that client —\n * either an existing config directory, an installed binary, or a known\n * data file. Conservative on purpose: we'd rather miss a client (the\n * user can `init` it manually) than register Hive into a config the\n * user doesn't expect to exist.\n *\n * The returned `ClientId` values are the same strings used everywhere\n * else in the CLI (config writers, setup command, telemetry events).\n */\n\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir, platform } from \"node:os\";\n\nimport {\n getClaudeDesktopConfigPath,\n getCursorConfigPath,\n getVscodeConfigPath,\n} from \"./config.js\";\n\nexport type ClientId =\n | \"claude-code\"\n | \"claude-desktop\"\n | \"cursor\"\n | \"vscode\"\n | \"windsurf\"\n | \"gemini-cli\"\n | \"chatgpt-desktop\";\n\nexport interface ClientInfo {\n id: ClientId;\n name: string;\n /** Where Hive's config lives for this client (or where it would). */\n configPath: string;\n /** Whether we have evidence the client is installed. */\n detected: boolean;\n /** Whether `hive init` can write the config programmatically. */\n programmable: boolean;\n /** Reason if detected=false (helps the user understand the gap). */\n hint?: string;\n}\n\n// ─── Per-client probes ────────────────────────────────────────────────\n\nfunction getClaudeCodeConfigPath(): string {\n // Claude Code stores user-scope MCP servers in ~/.claude.json (since\n // CLI v0.2). Project-scope is .mcp.json in the cwd.\n return join(homedir(), \".claude.json\");\n}\n\nfunction getWindsurfConfigPath(): string {\n return join(homedir(), \".codeium\", \"windsurf\", \"mcp_config.json\");\n}\n\nfunction getGeminiCliConfigPath(): string {\n return join(homedir(), \".gemini\", \"settings.json\");\n}\n\nfunction detectClaudeCode(): boolean {\n // The `claude` binary indicates Claude Code is installed. The config\n // file may not exist yet (it's created on first `claude mcp add`).\n // We also accept the dir existing.\n return (\n existsSync(getClaudeCodeConfigPath()) || existsSync(join(homedir(), \".claude\"))\n );\n}\n\nfunction detectClaudeDesktop(): boolean {\n // Claude Desktop's config file is created on first save. The parent\n // directory always exists if the app has been launched.\n const configPath = getClaudeDesktopConfigPath();\n if (existsSync(configPath)) return true;\n\n // Parent dir signals the app has been opened at least once.\n if (platform() === \"darwin\") {\n return existsSync(\n join(homedir(), \"Library\", \"Application Support\", \"Claude\"),\n );\n }\n if (platform() === \"win32\") {\n return existsSync(join(homedir(), \"AppData\", \"Roaming\", \"Claude\"));\n }\n return existsSync(join(homedir(), \".config\", \"Claude\"));\n}\n\nfunction detectCursor(): boolean {\n // ~/.cursor/ exists when Cursor has been launched at least once.\n return existsSync(join(homedir(), \".cursor\"));\n}\n\nfunction detectVscode(): boolean {\n // VS Code's user-data dir indicates installation. We check the most\n // common locations across platforms.\n if (existsSync(join(homedir(), \".vscode\"))) return true;\n if (platform() === \"darwin\") {\n return existsSync(\n join(homedir(), \"Library\", \"Application Support\", \"Code\"),\n );\n }\n if (platform() === \"win32\") {\n return existsSync(join(homedir(), \"AppData\", \"Roaming\", \"Code\"));\n }\n return existsSync(join(homedir(), \".config\", \"Code\"));\n}\n\nfunction detectWindsurf(): boolean {\n return existsSync(join(homedir(), \".codeium\", \"windsurf\"));\n}\n\nfunction detectGeminiCli(): boolean {\n return existsSync(join(homedir(), \".gemini\"));\n}\n\n// ─── Public API ───────────────────────────────────────────────────────\n\nexport function detectClients(): ClientInfo[] {\n const claudeCode = detectClaudeCode();\n const claudeDesktop = detectClaudeDesktop();\n const cursor = detectCursor();\n const vscode = detectVscode();\n const windsurf = detectWindsurf();\n const geminiCli = detectGeminiCli();\n\n return [\n {\n id: \"claude-code\",\n name: \"Claude Code\",\n configPath: getClaudeCodeConfigPath(),\n detected: claudeCode,\n programmable: true,\n hint: claudeCode ? undefined : \"~/.claude or ~/.claude.json not found\",\n },\n {\n id: \"claude-desktop\",\n name: \"Claude Desktop\",\n configPath: getClaudeDesktopConfigPath(),\n detected: claudeDesktop,\n programmable: true,\n hint: claudeDesktop\n ? undefined\n : \"Claude Desktop application directory not found\",\n },\n {\n id: \"cursor\",\n name: \"Cursor\",\n configPath: getCursorConfigPath(),\n detected: cursor,\n programmable: true,\n hint: cursor ? undefined : \"~/.cursor not found\",\n },\n {\n id: \"vscode\",\n name: \"VS Code\",\n configPath: getVscodeConfigPath(),\n detected: vscode,\n programmable: true,\n hint: vscode ? undefined : \"VS Code user data dir not found\",\n },\n {\n id: \"windsurf\",\n name: \"Windsurf\",\n configPath: getWindsurfConfigPath(),\n detected: windsurf,\n programmable: true,\n hint: windsurf ? undefined : \"~/.codeium/windsurf not found\",\n },\n {\n id: \"gemini-cli\",\n name: \"Gemini CLI\",\n configPath: getGeminiCliConfigPath(),\n detected: geminiCli,\n programmable: true,\n hint: geminiCli ? undefined : \"~/.gemini not found\",\n },\n {\n id: \"chatgpt-desktop\",\n name: \"ChatGPT Desktop\",\n configPath: \"(in-app: Settings → Connectors)\",\n detected: false, // No reliable filesystem signal — always print instructions\n programmable: false,\n hint: \"ChatGPT Desktop requires manual setup via Settings → Connectors → Add MCP server\",\n },\n ];\n}\n\n/** Convenience: just the detected, programmable clients. */\nexport function detectedProgrammable(): ClientInfo[] {\n return detectClients().filter((c) => c.detected && c.programmable);\n}\n\nexport {\n getClaudeCodeConfigPath,\n getWindsurfConfigPath,\n getGeminiCliConfigPath,\n};\n","/**\n * Skill pack copier — installs Hive's bundled skills (`agent-skills/packs`)\n * into the right directory for each MCP-capable client.\n *\n * Each client expects skills in a different location, and the copy is\n * idempotent: re-running `hive init` overwrites old packs but leaves\n * unrelated skills (other vendors, user-authored) alone.\n *\n * The packs themselves ship inside the `hive-intelligence` npm package and the\n * standalone `@hiveintelligence/agent-skills` package. We resolve the\n * bundled location at runtime relative to this module, which works for\n * both `npx` (extracted to a temp dir) and global installs.\n */\n\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n readdirSync,\n rmSync,\n statSync,\n} from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { HIVE_AGENT_SKILLS } from \"../agentSkills.js\";\nimport type { ClientId } from \"./detect-clients.js\";\n\n/** Skill packs we ship today. */\nexport const SKILL_PACK_NAMES = HIVE_AGENT_SKILLS.map((skill) => skill.name);\n\nexport type SkillPackName = string;\n\n/**\n * Per-client skill directory layout. `null` means we don't ship a\n * native skill format for that client — it picks up Hive via the MCP\n * connection but doesn't get a sub-skill registered.\n */\nfunction getClientSkillsDir(client: ClientId): string | null {\n switch (client) {\n case \"claude-code\":\n return join(homedir(), \".claude\", \"skills\");\n case \"cursor\":\n return join(homedir(), \".cursor\", \"skills\");\n case \"vscode\":\n // GitHub Copilot Chat doesn't have a public skills directory\n // convention yet; tools come exclusively over MCP.\n return null;\n case \"windsurf\":\n // Windsurf rules system isn't a skill registry — skip.\n return null;\n case \"gemini-cli\":\n // No skill registry. Tools come over MCP only.\n return null;\n case \"claude-desktop\":\n return join(homedir(), \".claude\", \"skills\");\n case \"chatgpt-desktop\":\n return null;\n }\n}\n\n/**\n * Locate the bundled `agent-skills/packs/` directory inside the\n * installed package. We try several relative paths so the resolution\n * works whether this module is imported from `src/cli/` (dev mode),\n * `build/cli/` (compiled), or the npm tarball layout.\n *\n * The HIVE_SKILLS_PACKS_DIR env var takes priority — used by tests to\n * pin a deterministic location, and by self-hosters who want to ship\n * their own pack set.\n */\nexport function findBundledPacksDir(): string | null {\n const override = process.env.HIVE_SKILLS_PACKS_DIR;\n if (override && existsSync(override) && statSync(override).isDirectory()) {\n return override;\n }\n\n const here = dirname(fileURLToPath(import.meta.url));\n const candidates = [\n // Compiled (bin/hive-mcp.js -> build/cli/skills.js)\n resolve(here, \"..\", \"..\", \"agent-skills\", \"packs\"),\n // Source tree (tests / dev mode)\n resolve(here, \"..\", \"..\", \"agent-skills\", \"packs\"),\n // Single-level dev (when CLI is run from source)\n resolve(here, \"..\", \"agent-skills\", \"packs\"),\n // Process-relative as a last resort\n resolve(process.cwd(), \"agent-skills\", \"packs\"),\n ];\n\n for (const candidate of candidates) {\n if (existsSync(candidate) && statSync(candidate).isDirectory()) {\n return candidate;\n }\n }\n return null;\n}\n\nexport interface SkillInstallResult {\n client: ClientId;\n installed: SkillPackName[];\n skipped: SkillPackName[];\n destination: string | null;\n reason?: string;\n}\n\n/**\n * Install Hive's skill packs into a single client's skills directory.\n * Returns a result describing what happened — used by the orchestrator\n * to print a summary.\n */\nexport function installSkillsForClient(client: ClientId): SkillInstallResult {\n const dest = getClientSkillsDir(client);\n if (!dest) {\n return {\n client,\n installed: [],\n skipped: [...SKILL_PACK_NAMES],\n destination: null,\n reason: \"Client has no native skills directory — tools come over MCP\",\n };\n }\n\n const packsRoot = findBundledPacksDir();\n if (!packsRoot) {\n return {\n client,\n installed: [],\n skipped: [...SKILL_PACK_NAMES],\n destination: dest,\n reason: \"Bundled skill packs not found — package install may be incomplete\",\n };\n }\n\n if (!existsSync(dest)) mkdirSync(dest, { recursive: true });\n\n const installed: SkillPackName[] = [];\n const skipped: SkillPackName[] = [];\n\n for (const pack of SKILL_PACK_NAMES) {\n const src = join(packsRoot, pack);\n if (!existsSync(src)) {\n skipped.push(pack);\n continue;\n }\n const target = join(dest, pack);\n // Replace any prior copy. cpSync recursively overwrites, but a\n // pre-existing target with stale files would persist — explicit rm\n // first is the safe move.\n if (existsSync(target)) rmSync(target, { recursive: true, force: true });\n cpSync(src, target, { recursive: true });\n installed.push(pack);\n }\n\n return { client, installed, skipped, destination: dest };\n}\n\n/**\n * Install skill packs across multiple clients. Skips any client that\n * has no native skill directory. Always idempotent.\n */\nexport function installSkillsForClients(\n clients: ClientId[],\n): SkillInstallResult[] {\n return clients.map(installSkillsForClient);\n}\n\n/**\n * Reverse the install: remove every Hive pack from the client's skill\n * directory. Doesn't touch non-Hive packs.\n */\nexport function removeSkillsForClient(client: ClientId): {\n client: ClientId;\n removed: SkillPackName[];\n destination: string | null;\n} {\n const dest = getClientSkillsDir(client);\n if (!dest || !existsSync(dest)) {\n return { client, removed: [], destination: dest };\n }\n\n const removed: SkillPackName[] = [];\n for (const pack of SKILL_PACK_NAMES) {\n const target = join(dest, pack);\n if (existsSync(target)) {\n rmSync(target, { recursive: true, force: true });\n removed.push(pack);\n }\n }\n return { client, removed, destination: dest };\n}\n\nexport function removeSkillsForClients(clients: ClientId[]) {\n return clients.map(removeSkillsForClient);\n}\n\n/**\n * Helper: list the packs we *would* install. Useful for `--dry-run`\n * and for tests that don't want to touch the filesystem.\n */\nexport function listAvailablePacks(): SkillPackName[] {\n const root = findBundledPacksDir();\n if (!root) return [];\n return readdirSync(root).filter(\n (name): name is SkillPackName =>\n (SKILL_PACK_NAMES as readonly string[]).includes(name) &&\n existsSync(join(root, name)),\n );\n}\n"],"mappings":"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","names":["existsSync","homedir","join","join","homedir","existsSync"]}
|