hive-intelligence 1.1.3 → 1.1.4
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/LICENSE +23 -0
- package/README.md +175 -54
- package/agent-skills/.claude-plugin/plugin.json +6 -0
- package/agent-skills/.mcp.json +11 -0
- package/agent-skills/AGENTS.md +37 -0
- package/agent-skills/README.md +13 -14
- package/agent-skills/SKILL.md +16 -4
- package/agent-skills/evals/trigger-queries.json +270 -0
- package/agent-skills/package.json +3 -3
- package/agent-skills/packs/hive-build/SKILL.md +11 -10
- package/agent-skills/packs/hive-build/evals/evals.json +2 -2
- package/agent-skills/packs/hive-mcp/SKILL.md +44 -121
- package/agent-skills/packs/hive-mcp/evals/evals.json +1 -1
- package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +1 -1
- package/agent-skills/packs/hive-mcp/references/clients.md +141 -0
- package/agent-skills/packs/hive-query/SKILL.md +3 -2
- package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +1 -1
- package/agent-skills/packs/hive-stateful-monitoring/SKILL.md +75 -0
- package/agent-skills/packs/hive-stateful-monitoring/evals/evals.json +49 -0
- package/agent-skills/packs/hive-tool-discovery/SKILL.md +1 -1
- package/agent-skills/references/agents-routing.md +2 -0
- package/agent-skills/scripts/validate-agent-skills-package.mjs +49 -11
- package/agent-skills/skills.sh.json +3 -2
- package/build/{alias-CZ3DEYHF.js → alias-3OPMQF4X.js} +2 -3
- package/build/{api-client-I23XLSHU.js → api-client-EPF6FD7A.js} +4 -4
- package/build/{auth-KKINNBXT.js → auth-Q5Q24IRI.js} +3 -4
- package/build/{browser-auth-EEFGRHWY.js → browser-auth-VPF5LZMZ.js} +2 -3
- package/build/{cache-EGNMENNA.js → cache-T6KC5YEY.js} +2 -3
- package/build/{chunk-KBVPIZS4.js → chunk-3WYWXTNN.js} +0 -1
- package/build/{chunk-2MYMHMBF.js → chunk-4F5CI6LX.js} +6 -6
- package/build/{chunk-RKICZ6DZ.js → chunk-5XXI25JE.js} +7 -8
- package/build/{chunk-IZTN7WFH.js → chunk-7JWXBKEJ.js} +5 -3
- package/build/chunk-CEWCB5YS.js +71 -0
- package/build/{chunk-MPIUUE3T.js → chunk-FH3YGSY5.js} +0 -1
- package/build/{chunk-QNCI4DEB.js → chunk-FRXMGRZQ.js} +35 -21
- package/build/{chunk-PGBVNMNZ.js → chunk-GZPDEXO4.js} +0 -1
- package/build/{chunk-UKHZIVDT.js → chunk-IZPAMRHP.js} +5 -6
- package/build/{chunk-2X3U4DFK.js → chunk-JTUKQWIO.js} +3267 -916
- package/build/{chunk-XYBEFFZ3.js → chunk-NP6NSOG2.js} +1 -2
- package/build/{chunk-V77LO4RO.js → chunk-POT2MBEK.js} +0 -1
- package/build/{chunk-B6G222LS.js → chunk-VBOKVQ74.js} +18 -3
- package/build/{chunk-DYJBTKNR.js → chunk-YZ2PXBJK.js} +5 -3
- package/build/chunk-ZCU7XQKF.js +14 -0
- package/build/{chunk-KGYBTXIN.js → chunk-ZTJVOWDQ.js} +0 -1
- package/build/{chunk-IDZD2NVG.js → chunk-ZXB53E7H.js} +5 -6
- package/build/cli.js +56 -54
- package/build/{completion-BELZL7ND.js → completion-46K674EL.js} +2 -3
- package/build/{config-TDX4VUGW.js → config-XE6Q5P4I.js} +3 -4
- package/build/{config-dir-V43W2WIA.js → config-dir-MAWX5AUF.js} +2 -3
- package/build/{doctor-5K5UWHNX.js → doctor-HGMQE6IN.js} +33 -9
- package/build/{errors-E6MVUBNA.js → errors-J2PH3NLJ.js} +2 -3
- package/build/{format-TSFSI2K7.js → format-5X2HIVDT.js} +1 -2
- package/build/{init-YQ5NBICF.js → init-JMDNM7ZZ.js} +1 -2
- package/build/{init-all-6OWEQALB.js → init-all-5SKNV75X.js} +10 -11
- package/build/{mcpServer-AEX3RQ4U.js → mcpServer-5TKKSKJM.js} +7 -6
- package/build/monitor-worker.js +1140 -0
- package/build/{namespace-PVHBFDW2.js → namespace-FSX2G3NM.js} +2 -3
- package/build/{open-YUIJP37F.js → open-5A6ZQMGC.js} +2 -3
- package/build/{output-IYJBFCYK.js → output-V3D4YZ6U.js} +2 -3
- package/build/{serve-KWNJK6EY.js → serve-AGCOXXFM.js} +9 -4
- package/build/server.js +437 -145
- package/build/{setup-YTUKMPNP.js → setup-RMETGJWK.js} +4 -5
- package/build/stdio.js +9 -8
- package/build/{telemetry-5IPRKZBL.js → telemetry-WCME5XEU.js} +4 -4
- package/build/{tools-PJHWFCAG.js → tools-KAB6QBZC.js} +15 -15
- package/build/{uninstall-HWXEIP6K.js → uninstall-FLJMBBSC.js} +7 -8
- package/build/update-check-LNZQK3XA.js +18 -0
- package/build/upgrade-DTUIHVPS.js +171 -0
- package/build/version-I6HDAF4L.js +14 -0
- package/build/{watch-KZ5EDZK3.js → watch-YNN255QX.js} +7 -7
- package/package.json +14 -9
- package/build/alias-CZ3DEYHF.js.map +0 -1
- package/build/api-client-I23XLSHU.js.map +0 -1
- package/build/auth-KKINNBXT.js.map +0 -1
- package/build/browser-auth-EEFGRHWY.js.map +0 -1
- package/build/cache-EGNMENNA.js.map +0 -1
- package/build/chunk-2MYMHMBF.js.map +0 -1
- package/build/chunk-2X3U4DFK.js.map +0 -1
- package/build/chunk-B6G222LS.js.map +0 -1
- package/build/chunk-DYJBTKNR.js.map +0 -1
- package/build/chunk-IDZD2NVG.js.map +0 -1
- package/build/chunk-IZTN7WFH.js.map +0 -1
- package/build/chunk-KBVPIZS4.js.map +0 -1
- package/build/chunk-KGYBTXIN.js.map +0 -1
- package/build/chunk-MPIUUE3T.js.map +0 -1
- package/build/chunk-PGBVNMNZ.js.map +0 -1
- package/build/chunk-QNCI4DEB.js.map +0 -1
- package/build/chunk-RKICZ6DZ.js.map +0 -1
- package/build/chunk-UKHZIVDT.js.map +0 -1
- package/build/chunk-V77LO4RO.js.map +0 -1
- package/build/chunk-XYBEFFZ3.js.map +0 -1
- package/build/cli.js.map +0 -1
- package/build/completion-BELZL7ND.js.map +0 -1
- package/build/config-TDX4VUGW.js.map +0 -1
- package/build/config-dir-V43W2WIA.js.map +0 -1
- package/build/doctor-5K5UWHNX.js.map +0 -1
- package/build/errors-E6MVUBNA.js.map +0 -1
- package/build/format-TSFSI2K7.js.map +0 -1
- package/build/init-YQ5NBICF.js.map +0 -1
- package/build/init-all-6OWEQALB.js.map +0 -1
- package/build/mcpServer-AEX3RQ4U.js.map +0 -1
- package/build/namespace-PVHBFDW2.js.map +0 -1
- package/build/open-YUIJP37F.js.map +0 -1
- package/build/output-IYJBFCYK.js.map +0 -1
- package/build/serve-KWNJK6EY.js.map +0 -1
- package/build/server.js.map +0 -1
- package/build/setup-YTUKMPNP.js.map +0 -1
- package/build/stdio.js.map +0 -1
- package/build/telemetry-5IPRKZBL.js.map +0 -1
- package/build/tools-PJHWFCAG.js.map +0 -1
- package/build/uninstall-HWXEIP6K.js.map +0 -1
- package/build/watch-KZ5EDZK3.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Per-client install instructions
|
|
2
|
+
|
|
3
|
+
The MCP endpoint is the same everywhere — `https://mcp.hiveintelligence.xyz/mcp`
|
|
4
|
+
with `Authorization: Bearer <HIVE_API_KEY>`. Only the config file path and JSON
|
|
5
|
+
shape vary. Read the block for the user's specific client.
|
|
6
|
+
|
|
7
|
+
## Claude Code
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
claude mcp add --transport http hive https://mcp.hiveintelligence.xyz/mcp \
|
|
11
|
+
--header "Authorization: Bearer $HIVE_API_KEY"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Add `--scope user` to install globally, or `--scope project` to commit to the
|
|
15
|
+
repo's `.mcp.json`. Default scope is local. Restart isn't required — tools
|
|
16
|
+
appear in the next chat session.
|
|
17
|
+
|
|
18
|
+
## Cursor
|
|
19
|
+
|
|
20
|
+
Edit `~/.cursor/mcp.json`. Add the `hive` server block:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"hive": {
|
|
26
|
+
"url": "https://mcp.hiveintelligence.xyz/mcp",
|
|
27
|
+
"headers": {
|
|
28
|
+
"Authorization": "Bearer YOUR_HIVE_API_KEY"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Reload the MCP server list from Cursor's command palette (`Cmd+Shift+P` → "MCP:
|
|
36
|
+
Reload Servers"). Or use the deeplink:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
cursor://anysphere.cursor-deeplink/mcp/install?name=hive&config=<base64-encoded-config>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Claude Desktop
|
|
43
|
+
|
|
44
|
+
Settings → Developer → Edit Config. The file opens in your default editor. Same
|
|
45
|
+
shape as Cursor:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"hive": {
|
|
51
|
+
"url": "https://mcp.hiveintelligence.xyz/mcp",
|
|
52
|
+
"headers": {
|
|
53
|
+
"Authorization": "Bearer YOUR_HIVE_API_KEY"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Quit Claude Desktop fully (⌘Q on macOS — the menu bar icon must disappear) and
|
|
61
|
+
reopen. Tools become available on next chat.
|
|
62
|
+
|
|
63
|
+
## VS Code (GitHub Copilot Chat)
|
|
64
|
+
|
|
65
|
+
Requires VS Code 1.101 or newer. Create `.vscode/mcp.json` in the project root
|
|
66
|
+
(or use User Settings for a global install):
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"servers": {
|
|
71
|
+
"hive": {
|
|
72
|
+
"type": "http",
|
|
73
|
+
"url": "https://mcp.hiveintelligence.xyz/mcp",
|
|
74
|
+
"headers": {
|
|
75
|
+
"Authorization": "Bearer YOUR_HIVE_API_KEY"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Reload the window. Note the `type: "http"` field — this is required in VS Code's
|
|
83
|
+
schema and differs from Cursor / Claude Desktop.
|
|
84
|
+
|
|
85
|
+
## Windsurf
|
|
86
|
+
|
|
87
|
+
Edit `~/.codeium/windsurf/mcp_config.json`:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"mcpServers": {
|
|
92
|
+
"hive": {
|
|
93
|
+
"url": "https://mcp.hiveintelligence.xyz/mcp",
|
|
94
|
+
"headers": {
|
|
95
|
+
"Authorization": "Bearer YOUR_HIVE_API_KEY"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Reload Windsurf.
|
|
103
|
+
|
|
104
|
+
## OpenAI Responses API
|
|
105
|
+
|
|
106
|
+
Use Hive as a server-side remote MCP tool from your application code. Keep the
|
|
107
|
+
Hive API key on your server and pass it in the remote MCP tool headers.
|
|
108
|
+
|
|
109
|
+
Direct ChatGPT app connector setup is beta and auth-dependent; do not promise a
|
|
110
|
+
verified bearer-token ChatGPT app connector unless Hive has shipped the auth
|
|
111
|
+
shape that workspace requires.
|
|
112
|
+
|
|
113
|
+
## Codex CLI
|
|
114
|
+
|
|
115
|
+
Edit `~/.codex/config.toml`:
|
|
116
|
+
|
|
117
|
+
```toml
|
|
118
|
+
[mcp_servers.hive]
|
|
119
|
+
url = "https://mcp.hiveintelligence.xyz/mcp"
|
|
120
|
+
bearer_token_env_var = "HIVE_API_KEY"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Set `HIVE_API_KEY` in the shell that launches Codex, then verify with `codex
|
|
124
|
+
/mcp` after restart.
|
|
125
|
+
|
|
126
|
+
## Gemini CLI
|
|
127
|
+
|
|
128
|
+
Edit `~/.gemini/settings.json`:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"mcpServers": {
|
|
133
|
+
"hive": {
|
|
134
|
+
"url": "https://mcp.hiveintelligence.xyz/mcp",
|
|
135
|
+
"headers": {
|
|
136
|
+
"Authorization": "Bearer YOUR_HIVE_API_KEY"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hive-query
|
|
3
|
-
description: Use this skill for any live crypto intelligence question before answering from memory. Route wallet, token, DeFi, NFT, Solana, security, market, DEX, network, or prediction-market requests through Hive task toolsets
|
|
3
|
+
description: Use this skill as the default entry point for any live crypto intelligence question before answering from memory. Route wallet, token, DeFi, NFT, Solana, security, market, DEX, network, or prediction-market requests through Hive task toolsets and bounded endpoint invocation. If routing does not surface the exact tool or schema, hand off to hive-tool-discovery.
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
package: "@hiveintelligence/agent-skills"
|
|
@@ -41,6 +41,7 @@ endpoint without loading the full provider catalog into context.
|
|
|
41
41
|
| Blocks, gas, logs, receipts, RPC diagnostics | `network_infrastructure` |
|
|
42
42
|
| Solana wallets, SPL accounts, DAS assets, priority fees | `solana_analysis` |
|
|
43
43
|
| Events, markets, outcomes, traders, holders | `prediction_markets` |
|
|
44
|
+
| Durable monitors, alerts, scheduled reports, agent memory | `stateful_monitoring` |
|
|
44
45
|
| Ambiguous request or schema lookup | `search_discovery` |
|
|
45
46
|
|
|
46
47
|
## Example
|
|
@@ -72,7 +73,7 @@ Use this structure for Hive-backed answers:
|
|
|
72
73
|
|
|
73
74
|
## Evidence
|
|
74
75
|
- Provider/source: [provider names]
|
|
75
|
-
- Freshness: [timestamp, block
|
|
76
|
+
- Freshness: [Hive execution fetched_at plus provider timestamp, block, or slot when relevant]
|
|
76
77
|
- Runtime status: [ok/missing_key/plan_required/rate_limited/degraded/failing]
|
|
77
78
|
|
|
78
79
|
## Caveats
|
|
@@ -14,7 +14,7 @@ flowchart LR
|
|
|
14
14
|
Root --> MetaTools["Meta tools: search_tools, get_api_endpoint_schema, invoke_api_endpoint"]
|
|
15
15
|
Root --> Toolsets["Task toolsets"]
|
|
16
16
|
MetaTools --> Registry["Provider endpoint registry"]
|
|
17
|
-
Registry --> Providers["CoinGecko, DeFiLlama, GoPlus, Codex, CCXT, Tenderly, Moralis, Helius, Alchemy
|
|
17
|
+
Registry --> Providers["CoinGecko, DeFiLlama, GoPlus, Codex (Polymarket/Kalshi), CCXT, Tenderly, Moralis, Helius, Alchemy"]
|
|
18
18
|
Agent --> Answer["Answer with provenance, freshness, runtime status"]
|
|
19
19
|
```
|
|
20
20
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hive-stateful-monitoring
|
|
3
|
+
description: Use this skill when a user asks Hive to remember, monitor, schedule, alert, or report on crypto intelligence across sessions. Creates durable monitor intent through Hive's stateful monitoring tools.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
package: "@hiveintelligence/agent-skills"
|
|
7
|
+
category: "stateful-monitoring"
|
|
8
|
+
requires_network: "true"
|
|
9
|
+
version: 1.0.0
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# hive-stateful-monitoring - Stateful Monitoring
|
|
13
|
+
|
|
14
|
+
Use this skill when the user wants Hive to remember a wallet, token, protocol,
|
|
15
|
+
market, prediction market, watchlist digest, token discovery risk workflow, or
|
|
16
|
+
risk watch workflow and keep reporting on it later.
|
|
17
|
+
|
|
18
|
+
## Task toolset
|
|
19
|
+
|
|
20
|
+
Use `stateful_monitoring`.
|
|
21
|
+
|
|
22
|
+
Required identifiers: monitor kind and target object.
|
|
23
|
+
|
|
24
|
+
For B2B adapter mode, Hive state is isolated by server-injected subject context:
|
|
25
|
+
`partner API key -> Hive owner user_id -> tenant_id -> end_user_id -> subject_id`.
|
|
26
|
+
The adapter must sign `METHOD + "\n" + PATH + "\n" + TENANT_ID + "\n" +
|
|
27
|
+
END_USER_ID + "\n" + TIMESTAMP` with HMAC-SHA256 and send the
|
|
28
|
+
`X-Hive-Tenant-Id`, `X-Hive-End-User-Id`, `X-Hive-Subject-Timestamp`, and
|
|
29
|
+
`X-Hive-Subject-Signature` headers. Never ask the model or end user to provide
|
|
30
|
+
`__hive_user_id` or `__hive_subject_id`; those are hidden server-injected args.
|
|
31
|
+
In TypeScript backends with controlled source or release-tarball access, use
|
|
32
|
+
`hive-mcp-client` with `subjectSigningSecret` and per-call
|
|
33
|
+
`subject`/`withSubject(...)` context instead of hand-building these headers.
|
|
34
|
+
|
|
35
|
+
## Procedure
|
|
36
|
+
|
|
37
|
+
1. Convert the user's durable intent into a monitor `kind`, `target`, `rules`,
|
|
38
|
+
and `cadence`.
|
|
39
|
+
2. Use `hive_create_monitor` for new watch requests.
|
|
40
|
+
3. Use `hive_list_monitors` before creating a duplicate monitor.
|
|
41
|
+
4. Use `hive_update_monitor` to change cadence, rules, target, metadata, or
|
|
42
|
+
status.
|
|
43
|
+
5. Use `hive_archive_monitor` when the user asks Hive to stop watching.
|
|
44
|
+
6. Use `hive_get_monitor_runs`, `hive_list_observations`,
|
|
45
|
+
`hive_list_alerts`, `hive_get_latest_snapshot`, or
|
|
46
|
+
`hive_generate_monitor_report` when the user asks what changed, what is
|
|
47
|
+
alerting, or what Hive remembers from previous runs.
|
|
48
|
+
7. Use `hive_update_alert_status` when the user acknowledges, reopens, or
|
|
49
|
+
resolves an alert.
|
|
50
|
+
8. Use `hive_remember_fact`, `hive_list_memory_facts`, and
|
|
51
|
+
`hive_forget_memory_fact` for durable user-scoped facts that should appear
|
|
52
|
+
in future monitor reports.
|
|
53
|
+
9. Use `hive_list_subjects`, `hive_get_subject`, `hive_archive_subject`, and
|
|
54
|
+
`hive_list_subject_audit_events` only when operating or auditing a B2B
|
|
55
|
+
adapter's downstream state boundaries.
|
|
56
|
+
10. Explain that monitor execution is handled by Hive workers, not by the
|
|
57
|
+
current chat session. Worker-supported monitor kinds are wallet, token,
|
|
58
|
+
protocol, market, prediction_market, watchlist_digest,
|
|
59
|
+
token_discovery_risk, and risk_watch.
|
|
60
|
+
|
|
61
|
+
## Example
|
|
62
|
+
|
|
63
|
+
For "Watch this Ethereum wallet and tell me when it moves more than $100k",
|
|
64
|
+
create a wallet monitor with an Ethereum address target, a large-transfer rule,
|
|
65
|
+
and the requested cadence or default cadence.
|
|
66
|
+
|
|
67
|
+
For "Send every customer a daily crypto watchlist brief", create a
|
|
68
|
+
`watchlist_digest` monitor per B2B subject with saved wallets, tokens,
|
|
69
|
+
protocols, markets, and optional prediction markets in the target.
|
|
70
|
+
|
|
71
|
+
## Runtime status handling
|
|
72
|
+
|
|
73
|
+
If stateful tools return `missing_key` or an auth-required error, explain that
|
|
74
|
+
hosted MCP authentication or the Hive persistence backend must be configured
|
|
75
|
+
before durable monitoring can be used. Do not pretend the monitor was saved.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "hive-stateful-monitoring",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Watch this Ethereum wallet and alert me when it transfers more than $100k.",
|
|
7
|
+
"expected_output": "Uses stateful_monitoring, creates or updates a wallet monitor with an Ethereum address target, a large-transfer rule, and a durable cadence.",
|
|
8
|
+
"files": [],
|
|
9
|
+
"assertions": [
|
|
10
|
+
"Chooses stateful_monitoring.",
|
|
11
|
+
"Maps the request to a wallet monitor target.",
|
|
12
|
+
"States that Hive workers execute the monitor later."
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": 2,
|
|
17
|
+
"prompt": "Show me the crypto monitors Hive already remembers and pause the one watching PEPE.",
|
|
18
|
+
"expected_output": "Lists existing monitors before mutation, identifies the relevant token monitor, and updates its status to paused instead of creating a duplicate.",
|
|
19
|
+
"files": [],
|
|
20
|
+
"assertions": [
|
|
21
|
+
"Calls hive_list_monitors before updating.",
|
|
22
|
+
"Uses hive_update_monitor for pause behavior.",
|
|
23
|
+
"Does not claim success if auth or persistence is unavailable."
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": 3,
|
|
28
|
+
"prompt": "Summarize what changed on my ETH whale wallet monitor and show open alerts.",
|
|
29
|
+
"expected_output": "Uses the stateful monitoring report/read tools to fetch monitor runs, observations, alerts, and latest snapshot before summarizing changed state.",
|
|
30
|
+
"files": [],
|
|
31
|
+
"assertions": [
|
|
32
|
+
"Chooses stateful_monitoring.",
|
|
33
|
+
"Uses hive_generate_monitor_report or the read tools for observations, alerts, runs, and latest snapshot.",
|
|
34
|
+
"Does not invent monitor history if the persistence backend is unavailable."
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": 4,
|
|
39
|
+
"prompt": "Remember that I care most about protocol revenue growth, then include that context in future Aave monitor reports.",
|
|
40
|
+
"expected_output": "Persists the preference with hive_remember_fact in the protocol or default namespace and uses monitor reports for future summaries.",
|
|
41
|
+
"files": [],
|
|
42
|
+
"assertions": [
|
|
43
|
+
"Uses hive_remember_fact for durable user-scoped memory.",
|
|
44
|
+
"Does not encode the preference only in the chat transcript.",
|
|
45
|
+
"Uses hive_generate_monitor_report when asked for future monitor context."
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hive-tool-discovery
|
|
3
|
-
description: Use this skill when the exact Hive MCP tool, task toolset, provider, endpoint name, schema, or argument shape is unknown. Discover first with Hive resources and search_tools, then inspect schema before any invoke_api_endpoint call.
|
|
3
|
+
description: Use this skill only when the exact Hive MCP tool, task toolset, provider, endpoint name, schema, or argument shape is unknown and hive-query routing was not enough. Discover first with Hive resources and search_tools, then inspect schema before any invoke_api_endpoint call.
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
package: "@hiveintelligence/agent-skills"
|
|
@@ -32,6 +32,8 @@ For live crypto intelligence, prefer Hive retrieval over model memory.
|
|
|
32
32
|
`hive-network-infrastructure`
|
|
33
33
|
- prediction markets, events, outcomes, traders:
|
|
34
34
|
`hive-prediction-markets`
|
|
35
|
+
- User asks Hive to remember, monitor, schedule, alert, or report crypto
|
|
36
|
+
intelligence across sessions: use `hive-stateful-monitoring`.
|
|
35
37
|
- Setup, API key, CLI, or app integration:
|
|
36
38
|
use `hive-mcp`, `hive-build-onboarding`, `hive-cli`, or `hive-build`.
|
|
37
39
|
|
|
@@ -20,16 +20,6 @@ const workflowReferenceSkills = new Set([
|
|
|
20
20
|
"hive-prediction-markets",
|
|
21
21
|
]);
|
|
22
22
|
|
|
23
|
-
const requiredTriggerCoverage = new Set([
|
|
24
|
-
"hive-query",
|
|
25
|
-
"hive-tool-discovery",
|
|
26
|
-
"hive-mcp",
|
|
27
|
-
"hive-build",
|
|
28
|
-
"hive-build-onboarding",
|
|
29
|
-
"hive-cli",
|
|
30
|
-
"hive-token-diligence",
|
|
31
|
-
]);
|
|
32
|
-
|
|
33
23
|
function fail(message) {
|
|
34
24
|
failures.push(message);
|
|
35
25
|
console.log(`- [FAIL] ${message}`);
|
|
@@ -148,6 +138,54 @@ if (directoryManifest) {
|
|
|
148
138
|
}
|
|
149
139
|
}
|
|
150
140
|
|
|
141
|
+
// Cross-manifest consistency: every pack on disk must also be installable via
|
|
142
|
+
// the Claude plugin manifest and routed in the top-level SKILL.md. This guards
|
|
143
|
+
// the drift mode where a pack ships with evals but is invisible to install and
|
|
144
|
+
// routing (e.g. a skill missing from plugin.json never loads via plugin install).
|
|
145
|
+
const pluginManifestPath = join(root, ".claude-plugin", "plugin.json");
|
|
146
|
+
if (!existsSync(pluginManifestPath)) {
|
|
147
|
+
fail("agent-skills/.claude-plugin/plugin.json is missing.");
|
|
148
|
+
} else {
|
|
149
|
+
const pluginManifest = readJson(pluginManifestPath);
|
|
150
|
+
if (pluginManifest) {
|
|
151
|
+
const pluginSkills = new Set((pluginManifest.skills ?? []).map((skill) => skill.name));
|
|
152
|
+
for (const skillName of skillDirs) {
|
|
153
|
+
if (!pluginSkills.has(skillName)) {
|
|
154
|
+
fail(`${skillName} is missing from .claude-plugin/plugin.json skills.`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
for (const entry of pluginManifest.skills ?? []) {
|
|
158
|
+
const referenced = entry.path ? join(root, ".claude-plugin", entry.path) : "";
|
|
159
|
+
if (!referenced || !existsSync(referenced)) {
|
|
160
|
+
fail(`plugin.json skill ${entry.name ?? "unknown"} path does not resolve: ${entry.path}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!pluginManifest.mcpServers) {
|
|
164
|
+
fail("plugin.json must declare mcpServers so installing the plugin also connects Hive MCP.");
|
|
165
|
+
} else if (typeof pluginManifest.mcpServers === "string") {
|
|
166
|
+
const mcpPath = join(root, pluginManifest.mcpServers);
|
|
167
|
+
if (!existsSync(mcpPath)) {
|
|
168
|
+
fail(`plugin.json mcpServers points to missing file ${pluginManifest.mcpServers}.`);
|
|
169
|
+
} else {
|
|
170
|
+
const mcp = readJson(mcpPath);
|
|
171
|
+
const hive = mcp?.mcpServers?.hive;
|
|
172
|
+
if (!hive?.url || !hive.url.includes("mcp.hiveintelligence.xyz")) {
|
|
173
|
+
fail(`${pluginManifest.mcpServers} must define mcpServers.hive.url for the hosted Hive endpoint.`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const rootSkillBody = existsSync(join(root, "SKILL.md"))
|
|
181
|
+
? readFileSync(join(root, "SKILL.md"), "utf8")
|
|
182
|
+
: "";
|
|
183
|
+
for (const skillName of skillDirs) {
|
|
184
|
+
if (rootSkillBody && !rootSkillBody.includes(skillName)) {
|
|
185
|
+
fail(`${skillName} is not routed in the top-level SKILL.md.`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
151
189
|
const triggerQueries = readJson(join(root, "evals", "trigger-queries.json"));
|
|
152
190
|
if (triggerQueries) {
|
|
153
191
|
const triggerSkillNames = new Set();
|
|
@@ -164,7 +202,7 @@ if (triggerQueries) {
|
|
|
164
202
|
}
|
|
165
203
|
}
|
|
166
204
|
}
|
|
167
|
-
for (const skillName of
|
|
205
|
+
for (const skillName of skillDirs) {
|
|
168
206
|
if (!triggerSkillNames.has(skillName)) {
|
|
169
207
|
fail(`trigger-queries must include trigger coverage for ${skillName}.`);
|
|
170
208
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"title": "Crypto Research Workflows",
|
|
25
|
-
"description": "Focused workflows for market, token, wallet, security, DEX, DeFi, NFT, Solana, network,
|
|
25
|
+
"description": "Focused workflows for market, token, wallet, security, DEX, DeFi, NFT, Solana, network, prediction-market, and stateful monitoring analysis.",
|
|
26
26
|
"skills": [
|
|
27
27
|
"hive-market-research",
|
|
28
28
|
"hive-token-diligence",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"hive-nft-research",
|
|
34
34
|
"hive-solana-analysis",
|
|
35
35
|
"hive-network-infrastructure",
|
|
36
|
-
"hive-prediction-markets"
|
|
36
|
+
"hive-prediction-markets",
|
|
37
|
+
"hive-stateful-monitoring"
|
|
37
38
|
]
|
|
38
39
|
}
|
|
39
40
|
]
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
ensureConfigDir,
|
|
4
4
|
getConfig,
|
|
5
5
|
saveConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-POT2MBEK.js";
|
|
7
|
+
import "./chunk-3WYWXTNN.js";
|
|
8
8
|
|
|
9
9
|
// src/cli/alias.ts
|
|
10
10
|
function getAliases() {
|
|
@@ -38,4 +38,3 @@ export {
|
|
|
38
38
|
removeAlias,
|
|
39
39
|
setAlias
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=alias-CZ3DEYHF.js.map
|
|
@@ -10,9 +10,10 @@ import {
|
|
|
10
10
|
getUsage,
|
|
11
11
|
listKeysApi,
|
|
12
12
|
revokeKeyApi
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-7JWXBKEJ.js";
|
|
14
|
+
import "./chunk-ZCU7XQKF.js";
|
|
15
|
+
import "./chunk-POT2MBEK.js";
|
|
16
|
+
import "./chunk-3WYWXTNN.js";
|
|
16
17
|
export {
|
|
17
18
|
authLogin,
|
|
18
19
|
authMe,
|
|
@@ -25,4 +26,3 @@ export {
|
|
|
25
26
|
listKeysApi,
|
|
26
27
|
revokeKeyApi
|
|
27
28
|
};
|
|
28
|
-
//# sourceMappingURL=api-client-I23XLSHU.js.map
|
|
@@ -16,9 +16,9 @@ import {
|
|
|
16
16
|
runWhoami,
|
|
17
17
|
saveProfile,
|
|
18
18
|
switchProfile
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
19
|
+
} from "./chunk-5XXI25JE.js";
|
|
20
|
+
import "./chunk-POT2MBEK.js";
|
|
21
|
+
import "./chunk-3WYWXTNN.js";
|
|
22
22
|
export {
|
|
23
23
|
getActiveProfile,
|
|
24
24
|
listProfiles,
|
|
@@ -37,4 +37,3 @@ export {
|
|
|
37
37
|
saveProfile,
|
|
38
38
|
switchProfile
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=auth-KKINNBXT.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
browserLogin
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-GZPDEXO4.js";
|
|
5
|
+
import "./chunk-3WYWXTNN.js";
|
|
6
6
|
export {
|
|
7
7
|
browserLogin
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=browser-auth-EEFGRHWY.js.map
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
getConfigDir,
|
|
5
5
|
readJsonFile,
|
|
6
6
|
writeJsonFile
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-POT2MBEK.js";
|
|
8
|
+
import "./chunk-3WYWXTNN.js";
|
|
9
9
|
|
|
10
10
|
// src/cli/cache.ts
|
|
11
11
|
import { existsSync, unlinkSync } from "fs";
|
|
@@ -49,4 +49,3 @@ export {
|
|
|
49
49
|
getCachedTools,
|
|
50
50
|
setCachedTools
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=cache-EGNMENNA.js.map
|
|
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
|
|
|
2
2
|
import {
|
|
3
3
|
resolveApiKey,
|
|
4
4
|
resolveApiUrl
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-POT2MBEK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli/config.ts
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
@@ -270,10 +270,11 @@ function printChatGptDesktopInstructions() {
|
|
|
270
270
|
return {
|
|
271
271
|
manual: true,
|
|
272
272
|
steps: [
|
|
273
|
-
"
|
|
274
|
-
|
|
275
|
-
`
|
|
276
|
-
|
|
273
|
+
"Recommended: use OpenAI Responses API with a remote MCP tool",
|
|
274
|
+
`server_url: ${url}/mcp`,
|
|
275
|
+
`authorization: ${keyLabel}`,
|
|
276
|
+
"Direct ChatGPT app connectors may require OAuth/CIMD; Hive has not shipped OAuth yet.",
|
|
277
|
+
"For ChatGPT app testing, put an OAuth-compatible proxy in front of Hive and inject the Hive key server-side."
|
|
277
278
|
]
|
|
278
279
|
};
|
|
279
280
|
}
|
|
@@ -337,4 +338,3 @@ export {
|
|
|
337
338
|
removeWindsurfConfig,
|
|
338
339
|
removeGeminiCliConfig
|
|
339
340
|
};
|
|
340
|
-
//# sourceMappingURL=chunk-2MYMHMBF.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getCredentials,
|
|
6
6
|
saveConfig,
|
|
7
7
|
saveCredentials
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-POT2MBEK.js";
|
|
9
9
|
|
|
10
10
|
// src/cli/auth.ts
|
|
11
11
|
import { createInterface } from "readline";
|
|
@@ -204,7 +204,7 @@ Profile "${profileName}" saved. Key: ${maskKey(apiKey)}
|
|
|
204
204
|
Hive CLI \u2014 Login (profile: ${profileName})
|
|
205
205
|
`);
|
|
206
206
|
try {
|
|
207
|
-
const { browserLogin } = await import("./browser-auth-
|
|
207
|
+
const { browserLogin } = await import("./browser-auth-VPF5LZMZ.js");
|
|
208
208
|
const apiUrl = process.env.HIVE_API_URL || "https://mcp.hiveintelligence.xyz";
|
|
209
209
|
const websiteUrl = process.env.HIVE_WEBSITE_URL || "https://hiveintelligence.xyz";
|
|
210
210
|
const result = await browserLogin({ baseUrl: websiteUrl });
|
|
@@ -294,7 +294,7 @@ async function runSwitch(name) {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
async function runSignup(opts) {
|
|
297
|
-
const { authSignup } = await import("./api-client-
|
|
297
|
+
const { authSignup } = await import("./api-client-EPF6FD7A.js");
|
|
298
298
|
const profileName = opts.profile ?? "default";
|
|
299
299
|
process.stderr.write(`
|
|
300
300
|
Hive CLI \u2014 Signup (profile: ${profileName})
|
|
@@ -352,7 +352,7 @@ Account created but no API key was generated.
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
async function runKeysList() {
|
|
355
|
-
const { listKeysApi } = await import("./api-client-
|
|
355
|
+
const { listKeysApi } = await import("./api-client-EPF6FD7A.js");
|
|
356
356
|
const creds = getCredentials();
|
|
357
357
|
const config = getConfig();
|
|
358
358
|
const jwt = creds.profiles[config.activeProfile]?.jwt;
|
|
@@ -391,7 +391,7 @@ async function runKeysList() {
|
|
|
391
391
|
process.stderr.write("\n");
|
|
392
392
|
}
|
|
393
393
|
async function runKeysCreate(opts) {
|
|
394
|
-
const { createKey } = await import("./api-client-
|
|
394
|
+
const { createKey } = await import("./api-client-EPF6FD7A.js");
|
|
395
395
|
const creds = getCredentials();
|
|
396
396
|
const config = getConfig();
|
|
397
397
|
const jwt = creds.profiles[config.activeProfile]?.jwt;
|
|
@@ -424,7 +424,7 @@ API Key: ${data.key}
|
|
|
424
424
|
);
|
|
425
425
|
}
|
|
426
426
|
async function runKeysRevoke(keyId) {
|
|
427
|
-
const { revokeKeyApi } = await import("./api-client-
|
|
427
|
+
const { revokeKeyApi } = await import("./api-client-EPF6FD7A.js");
|
|
428
428
|
const creds = getCredentials();
|
|
429
429
|
const config = getConfig();
|
|
430
430
|
const jwt = creds.profiles[config.activeProfile]?.jwt;
|
|
@@ -445,7 +445,7 @@ async function runKeysRevoke(keyId) {
|
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
447
|
async function runUsage() {
|
|
448
|
-
const { getUsage } = await import("./api-client-
|
|
448
|
+
const { getUsage } = await import("./api-client-EPF6FD7A.js");
|
|
449
449
|
const result = await getUsage();
|
|
450
450
|
if (!result.ok) {
|
|
451
451
|
process.stderr.write("Failed to fetch usage. Check your API key.\n");
|
|
@@ -494,4 +494,3 @@ export {
|
|
|
494
494
|
runKeysRevoke,
|
|
495
495
|
runUsage
|
|
496
496
|
};
|
|
497
|
-
//# sourceMappingURL=chunk-RKICZ6DZ.js.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
SERVER_VERSION
|
|
4
|
+
} from "./chunk-ZCU7XQKF.js";
|
|
2
5
|
import {
|
|
3
6
|
getNoRetry,
|
|
4
7
|
resolveApiKey,
|
|
5
8
|
resolveApiUrl
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-POT2MBEK.js";
|
|
7
10
|
|
|
8
11
|
// src/cli/api-client.ts
|
|
9
12
|
var MAX_RETRIES = 3;
|
|
@@ -56,7 +59,7 @@ async function fetchWithRetry(url, init, fetchFn = fetch) {
|
|
|
56
59
|
function getHeaders(apiKey) {
|
|
57
60
|
const headers = {
|
|
58
61
|
"Content-Type": "application/json",
|
|
59
|
-
"User-Agent": `hive-cli/${process.env.npm_package_version ??
|
|
62
|
+
"User-Agent": `hive-cli/${process.env.npm_package_version ?? SERVER_VERSION}`
|
|
60
63
|
};
|
|
61
64
|
if (apiKey) headers.Authorization = `Bearer ${apiKey}`;
|
|
62
65
|
return headers;
|
|
@@ -247,4 +250,3 @@ export {
|
|
|
247
250
|
revokeKeyApi,
|
|
248
251
|
getUsage
|
|
249
252
|
};
|
|
250
|
-
//# sourceMappingURL=chunk-IZTN7WFH.js.map
|