hive-intelligence 1.7.1 → 1.7.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 +1 -1
- package/agent-skills/packs/hive/SKILL.md +45 -23
- package/agent-skills/packs/hive/evals/triggers.json +32 -8
- package/agent-skills/packs/hive-query/SKILL.md +2 -1
- package/build/{api-client-UGNFUZ2L.js → api-client-POBN6Y5S.js} +2 -2
- package/build/{auth-5TLYP2DC.js → auth-6XVL5CE3.js} +1 -1
- package/build/{call-args-NVOYX6DL.js → call-args-BUB6YNHW.js} +2 -2
- package/build/{chunk-POPAEM4E.js → chunk-APBLB62S.js} +1 -1
- package/build/{chunk-XT6RURQV.js → chunk-AZFOTKS2.js} +1 -1
- package/build/{chunk-UPWYFTTJ.js → chunk-KQVPKTEO.js} +2 -2
- package/build/{chunk-2C5FBG7B.js → chunk-QKVI3YHQ.js} +1 -1
- package/build/{chunk-TWYGJEVN.js → chunk-RNVZIPNY.js} +1 -1
- package/build/{chunk-3SQPLZW6.js → chunk-WDF56OFL.js} +18030 -17831
- package/build/{chunk-WII7MTYZ.js → chunk-YLHNUAFT.js} +2 -2
- package/build/{chunk-3Z5VR53Z.js → chunk-ZSPPJW4G.js} +9 -1
- package/build/cli.js +27 -27
- package/build/{doctor-44WSVNGJ.js → doctor-KCSYB4QG.js} +4 -4
- package/build/{errors-W3GXQN34.js → errors-YQAVCXXO.js} +3 -1
- package/build/{feedback-FRRLZDAF.js → feedback-G2DFCCI6.js} +2 -2
- package/build/{init-all-LYRFE2YQ.js → init-all-JXLG7LOX.js} +1 -1
- package/build/{mcpServer-43LTLURB.js → mcpServer-2OCMJW2T.js} +1 -1
- package/build/monitor-worker.js +2 -2
- package/build/release.json +4 -4
- package/build/{routing-CP43PP5F.js → routing-4VKAVRYR.js} +2 -2
- package/build/{serve-LTMDRKXS.js → serve-MGOPELHF.js} +1 -1
- package/build/server.js +28 -6
- package/build/stdio.js +1 -1
- package/build/{tools-VA7JXD3K.js → tools-NJQPIJ53.js} +5 -5
- package/build/{uninstall-3KJLHTNM.js → uninstall-4TJ4SZLU.js} +2 -2
- package/build/{watch-HJOTI32P.js → watch-BUSEPVDM.js} +3 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -112,7 +112,7 @@ Expected output shape:
|
|
|
112
112
|
"source": "live",
|
|
113
113
|
"receipt_id": "00000000-0000-4000-8000-000000000000",
|
|
114
114
|
"receipt_version": "1.0",
|
|
115
|
-
"server_version": "1.7.
|
|
115
|
+
"server_version": "1.7.3",
|
|
116
116
|
"build_sha": null,
|
|
117
117
|
"digest_algorithm": "sha256",
|
|
118
118
|
"input_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
@@ -6,15 +6,15 @@ metadata:
|
|
|
6
6
|
package: "@hiveintelligence/agent-skills"
|
|
7
7
|
category: "routing"
|
|
8
8
|
requires_network: "true"
|
|
9
|
-
version: 1.7.
|
|
9
|
+
version: 1.7.1
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Hive: one skill, all crypto intelligence
|
|
13
13
|
|
|
14
|
-
Hive answers live crypto questions from
|
|
15
|
-
server and one CLI, and every answer carries a receipt:
|
|
16
|
-
cache state, runtime status, and digests of the input
|
|
17
|
-
Hive has that most crypto data tools do not:
|
|
14
|
+
Hive answers live crypto questions from more than a dozen data providers
|
|
15
|
+
through one MCP server and one CLI, and every answer carries a receipt:
|
|
16
|
+
provider, fetch time, cache state, runtime status, and digests of the input
|
|
17
|
+
and result. Three things Hive has that most crypto data tools do not:
|
|
18
18
|
|
|
19
19
|
- **History that venues no longer serve.** Perp funding settlements, open
|
|
20
20
|
interest, basis, long/short ratios, and liquidations for one coin across up
|
|
@@ -61,12 +61,12 @@ Version check, once per session on the CLI path:
|
|
|
61
61
|
npx -y -p hive-intelligence@latest hive --version
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Compare the printed version with this skill's `
|
|
65
|
-
is older, rerun the setup incantation; when the CLI is newer by a minor
|
|
64
|
+
Compare the printed version with this skill's frontmatter `version`. When the
|
|
65
|
+
CLI is older, rerun the setup incantation; when the CLI is newer by a minor
|
|
66
66
|
version, refresh this skill:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
npx skills
|
|
69
|
+
npx skills add hive-intel/hive-skills --skill hive
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
## First run: the routing block
|
|
@@ -79,7 +79,7 @@ CLAUDE.md; only the routing verb does.
|
|
|
79
79
|
Ask once per project, with AskUserQuestion when available:
|
|
80
80
|
|
|
81
81
|
> Add a short "Hive MCP Routing" block to this project's AGENTS.md (or
|
|
82
|
-
> CLAUDE.md) so every turn reaches for live crypto data through Hive? About
|
|
82
|
+
> CLAUDE.md) so every turn reaches for live crypto data through Hive? About 50
|
|
83
83
|
> lines, removable with `hive routing remove`.
|
|
84
84
|
>
|
|
85
85
|
> A) Add it (recommended)
|
|
@@ -153,7 +153,7 @@ Loop:
|
|
|
153
153
|
have not called before. Read `operation`, required fields, and enums.
|
|
154
154
|
3. `invoke_api_endpoint {"endpoint": "<tool>", "args": {...}}` with `limit`,
|
|
155
155
|
`page`, `per_page`, or `offset` set. Stop at the route's stop condition or
|
|
156
|
-
at
|
|
156
|
+
at its `maxMaterialCalls`, which is 2, 3, or 4 depending on the route.
|
|
157
157
|
4. Copy each material response's `_hive` block into the receipt, cite receipt
|
|
158
158
|
ids from every material claim, and run `validate_task_result` before
|
|
159
159
|
presenting a typed result.
|
|
@@ -186,14 +186,22 @@ Domain namespaces wrap the common tools: `market`, `defi`, `portfolio`,
|
|
|
186
186
|
`archive` (`coverage`, `funding`, `oi`, `basis`, `long-short`,
|
|
187
187
|
`liquidations`, all taking `--base-coin`). Run `hive <domain> --help`.
|
|
188
188
|
|
|
189
|
-
Output is the envelope `{ok, data, meta}
|
|
190
|
-
not a TTY and forced with `--json
|
|
191
|
-
`
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
189
|
+
Output is the envelope `{ok, data, meta}`, where `error` replaces `data` on a
|
|
190
|
+
failure; JSON is automatic when stdout is not a TTY and forced with `--json`
|
|
191
|
+
(`--pretty` forces human output when piped). `--jq '<expr>'` filters `data` in
|
|
192
|
+
place, but it is a small built-in jq subset (`.field`, `.a.b`, `.[N]`,
|
|
193
|
+
`.[] | select(...)`), not the jq binary. `meta` carries `credit_cost`,
|
|
194
|
+
`credits_used`, `credits_remaining`, and the receipt fields flattened into
|
|
195
|
+
`meta` itself (`receipt_id`, `receipt_version`, `runtime_status`,
|
|
196
|
+
`fetched_at`, `observed_at`, `cache_age_ms`, `source`, `truncated`,
|
|
197
|
+
`warnings`); there is no `_hive` block on this lane. The human footer prints
|
|
198
|
+
`credits: used N, remaining M` on keyed lanes (`remaining unlimited` on an
|
|
199
|
+
unlimited plan) and, keyless, `free calls left today: N` followed by a
|
|
200
|
+
parenthetical pointing at `hive auth login`.
|
|
201
|
+
|
|
202
|
+
Diagnostics: `hive doctor` (connectivity, whether a key is set, and today's
|
|
203
|
+
keyless allowance, read without spending it), `hive status` (version, profile,
|
|
204
|
+
and API reachability), and `hive usage` (plan and usage).
|
|
197
205
|
|
|
198
206
|
## Domain guide
|
|
199
207
|
|
|
@@ -252,7 +260,9 @@ or `error.data.code` on a JSON-RPC cap error). Every error carries `cause`,
|
|
|
252
260
|
| `ANON_QUOTA_EXCEEDED` | MCP, REST, CLI (exit 6) | this IP's 25 keyless calls are spent; resets 00:00 UTC | show the keyless-exhausted message; do not retry |
|
|
253
261
|
| `ANON_GLOBAL_CAP_EXCEEDED` | MCP, REST, CLI (exit 6) | Hive's shared keyless allowance for today is spent | same message; a key is not subject to it |
|
|
254
262
|
| `ANON_AUTH_REQUIRED` | MCP, REST, CLI (exit 6) | `hive_*` state tools need a signed-in account | say so; offer the setup command |
|
|
263
|
+
| `ANON_QUOTA_UNAVAILABLE` | MCP, REST | the keyless limiter is unreachable, so the lane fails closed; nothing was spent | retry once in a few seconds, then offer a key |
|
|
255
264
|
| `QUOTA_EXCEEDED` | MCP, REST, CLI (exit 6) | the account's credits are spent for the period | show the top-up message; do not retry |
|
|
265
|
+
| `QUOTA_SERVICE_UNAVAILABLE` | MCP, REST | the billing service could not debit; nothing was debited | retry once in a few seconds |
|
|
256
266
|
| `NO_WALLET` | MCP, REST, CLI (exit 4) | the account has no credit wallet yet | send the user to the dashboard billing page |
|
|
257
267
|
| `RATE_LIMITED` | all | per-minute limit | wait the `retry_after` seconds, retry once |
|
|
258
268
|
| `VALIDATION_ERROR` | all (exit 2) | an argument is wrong; the message names the field and accepted values | fix the args; `hive tools info <name>` has the table |
|
|
@@ -303,10 +313,16 @@ file.
|
|
|
303
313
|
GeckoTerminal `network` id (`eth`, `base`, `solana`); Alchemy tools take a
|
|
304
314
|
network slug (`eth-mainnet`, `base-mainnet`). Read the schema.
|
|
305
315
|
- Address versus symbol: `get_token_price` takes `token` (id or ticker) or
|
|
306
|
-
`chain` + `address
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
316
|
+
`chain` + `address`. Pass one, never both: the schema does not reject the
|
|
317
|
+
pair, it silently takes `address` and drops `token`. A ticker is tried as a
|
|
318
|
+
CoinGecko id first and retried as a symbol only if that came back empty;
|
|
319
|
+
there is no market-cap tie-break, so on an ambiguous ticker say which coin
|
|
320
|
+
the receipt actually returned.
|
|
321
|
+
- Solana addresses are auto-detected by `check_token_safety` and
|
|
322
|
+
`get_wallet_portfolio` only, and only when `chain` is omitted; an explicit
|
|
323
|
+
`chain` always wins, so never pass `chain: "eth"` with a base58 address.
|
|
324
|
+
`get_token_price` does no detection at all: a bare mint defaults to
|
|
325
|
+
Ethereum, so pass `chain: "solana"` with it.
|
|
310
326
|
- Retired names: `codex_*` and the old Codex-era tool names return
|
|
311
327
|
`TOOL_RETIRED` with the replacement in copyable form. Prediction markets
|
|
312
328
|
are the `polymarket_*` tools since 1.7.0.
|
|
@@ -344,7 +360,13 @@ On yes:
|
|
|
344
360
|
hive feedback "<one line: what was asked, what came back>" --tool <tool-name>
|
|
345
361
|
```
|
|
346
362
|
|
|
347
|
-
MCP: `report_feedback
|
|
363
|
+
MCP: `report_feedback` is not one of the eight root tools, so send it the
|
|
364
|
+
same way as any other endpoint:
|
|
365
|
+
|
|
366
|
+
```json
|
|
367
|
+
invoke_api_endpoint {"endpoint": "report_feedback", "args": {"message": "...", "tool": "<tool-name>", "receipt_id": "<from _hive>"}}
|
|
368
|
+
```
|
|
369
|
+
|
|
348
370
|
Free on every lane, ten per day, one line, no keys or wallet addresses in
|
|
349
371
|
the message. The CLI attaches the last receipt automatically when `--receipt`
|
|
350
372
|
is omitted.
|
|
@@ -1,15 +1,39 @@
|
|
|
1
1
|
[
|
|
2
|
-
{
|
|
2
|
+
{
|
|
3
|
+
"query": "BTC funding history across exchanges since 2024",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
3
6
|
{ "query": "what is solana trading at right now", "should_trigger": true },
|
|
4
|
-
{
|
|
5
|
-
|
|
7
|
+
{
|
|
8
|
+
"query": "is this token a honeypot 0x6982508145454Ce325dDbE47a25d4ec3d2311933",
|
|
9
|
+
"should_trigger": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"query": "compare basis between binance and hyperliquid for ETH over the last quarter",
|
|
13
|
+
"should_trigger": true
|
|
14
|
+
},
|
|
6
15
|
{ "query": "set up hive in this project", "should_trigger": true },
|
|
7
16
|
{ "query": "polymarket odds on the next fed cut", "should_trigger": true },
|
|
8
|
-
{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
{
|
|
17
|
+
{
|
|
18
|
+
"query": "run the hive cli to get the top defi protocols by tvl",
|
|
19
|
+
"should_trigger": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"query": "what does this wallet hold 0xd8dA6BF26964aF9D7eEd9e03E51415D37aA96045",
|
|
23
|
+
"should_trigger": true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"query": "explain how perpetual funding rates work in theory",
|
|
27
|
+
"should_trigger": false
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"query": "write a python function that parses a csv",
|
|
31
|
+
"should_trigger": false
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"query": "what was bitcoin's price at the 2017 peak",
|
|
35
|
+
"should_trigger": true
|
|
36
|
+
},
|
|
13
37
|
{ "query": "should I buy ethereum", "should_trigger": false },
|
|
14
38
|
{ "query": "summarize this whitepaper", "should_trigger": false }
|
|
15
39
|
]
|
|
@@ -30,7 +30,8 @@ data.
|
|
|
30
30
|
5. Call reads through `invoke_api_endpoint`. For an explicitly approved
|
|
31
31
|
Hive-native state change, use `invoke_stateful_endpoint`; never auto-approve
|
|
32
32
|
that router.
|
|
33
|
-
6. Stop when the route's stop condition is met or
|
|
33
|
+
6. Stop when the route's stop condition is met or its `maxMaterialCalls` (2,
|
|
34
|
+
3, or 4, depending on the route) is used.
|
|
34
35
|
Copy server-returned `_hive` blocks into the task receipt and run
|
|
35
36
|
`validate_task_result` with the selected `route_id` before presenting a structured result.
|
|
36
37
|
7. Report source recency, provider/runtime status, and missing-data caveats.
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
getAnonQuota,
|
|
9
9
|
getUsage,
|
|
10
10
|
postFeedback
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-RNVZIPNY.js";
|
|
12
|
+
import "./chunk-ZSPPJW4G.js";
|
|
13
13
|
import "./chunk-ZXKFJQDE.js";
|
|
14
14
|
import "./chunk-6PC3HUAK.js";
|
|
15
15
|
import "./chunk-OMO7XLC5.js";
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
parseFlagTokens,
|
|
11
11
|
planToolCall,
|
|
12
12
|
reservedOptionNames
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-AZFOTKS2.js";
|
|
14
|
+
import "./chunk-ZSPPJW4G.js";
|
|
15
15
|
import "./chunk-OMO7XLC5.js";
|
|
16
16
|
export {
|
|
17
17
|
ALWAYS_RESERVED_OPTIONS,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
CliError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZSPPJW4G.js";
|
|
5
5
|
|
|
6
6
|
// src/cli/call-args.ts
|
|
7
7
|
var BOOLEAN_LITERALS = /* @__PURE__ */ new Set(["true", "false", "1", "0", "yes", "no"]);
|
|
@@ -294,11 +294,11 @@ async function runSwitch(name) {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
async function runUsage() {
|
|
297
|
-
const { getUsage } = await import("./api-client-
|
|
297
|
+
const { getUsage } = await import("./api-client-POBN6Y5S.js");
|
|
298
298
|
const result = await getUsage();
|
|
299
299
|
if (!result.ok) {
|
|
300
300
|
const { outputError } = await import("./output-BBHBJI32.js");
|
|
301
|
-
const { CliError, classifyError } = await import("./errors-
|
|
301
|
+
const { CliError, classifyError } = await import("./errors-YQAVCXXO.js");
|
|
302
302
|
const code = result.error?.code;
|
|
303
303
|
const err = code === "AUTH_REQUIRED" || code === "INVALID_TOKEN" ? new CliError(
|
|
304
304
|
"AUTH_REQUIRED",
|