From 91e68a1d1e1ff51215b6410328875f3717ac077f Mon Sep 17 00:00:00 2001 From: nym21 Date: Wed, 1 Apr 2026 18:18:56 +0200 Subject: [PATCH] global: fixes --- Cargo.lock | 59 ++++++++---------- crates/brk_cli/Cargo.toml | 2 +- crates/brk_server/src/api/openapi/mod.rs | 76 ++++++++++++++---------- crates/brk_server/src/api/scalar.html | 6 ++ website/scripts/options/partial.js | 14 +++-- 5 files changed, 88 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3fee0b57e..29579eff4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1668,9 +1668,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -1682,7 +1682,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", ] @@ -1963,9 +1962,9 @@ checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" [[package]] name = "js-sys" -version = "0.3.92" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ "once_cell", "wasm-bindgen", @@ -2003,9 +2002,9 @@ checksum = "803ec87c9cfb29b9d2633f20cba1f488db3fd53f2158b1024cbefb47ba05d413" [[package]] name = "libc" -version = "0.2.183" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libloading" @@ -2320,12 +2319,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "pkg-config" version = "0.3.32" @@ -2910,9 +2903,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -3176,9 +3169,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8195ca05e4eb728f4ba94f3e3291661320af739c4e43779cbdfae82ab239fcc" +checksum = "994b95d9e7bae62b34bab0e2a4510b801fa466066a6a8b2b57361fa1eba068ee" dependencies = [ "indexmap", "serde_core", @@ -3191,27 +3184,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" +checksum = "39ca317ebc49f06bd748bfba29533eac9485569dc9bf80b849024b025e814fb9" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d282ade6016312faf3e41e57ebbba0c073e4056dab1232ab1cb624199648f8ed" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tower" @@ -3502,9 +3495,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -3515,9 +3508,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3525,9 +3518,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", @@ -3538,9 +3531,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] @@ -3581,9 +3574,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.92" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84cde8507f4d7cfcb1185b8cb5890c494ffea65edbe1ba82cfd63661c805ed94" +checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/crates/brk_cli/Cargo.toml b/crates/brk_cli/Cargo.toml index ecf550533..152df5d69 100644 --- a/crates/brk_cli/Cargo.toml +++ b/crates/brk_cli/Cargo.toml @@ -25,7 +25,7 @@ owo-colors = { workspace = true } tracing = { workspace = true } serde = { workspace = true } tokio = { workspace = true } -toml = "1.1.0" +toml = "1.1.1" vecdb = { workspace = true } [[bin]] diff --git a/crates/brk_server/src/api/openapi/mod.rs b/crates/brk_server/src/api/openapi/mod.rs index c048ee3b3..df0adc50e 100644 --- a/crates/brk_server/src/api/openapi/mod.rs +++ b/crates/brk_server/src/api/openapi/mod.rs @@ -22,22 +22,22 @@ pub fn create_openapi() -> OpenApi { let info = Info { title: "Bitcoin Research Kit".to_string(), description: Some( - r#"API for querying Bitcoin blockchain data and on-chain series. + r#"API for querying Bitcoin blockchain data, mempool state, and on-chain series. ### Features -- **Series**: Thousands of time-series across multiple indexes (date, block height, etc.) -- **[Mempool.space](https://mempool.space/docs/api/rest) compatible** (WIP): Most non-series endpoints follow the mempool.space API format +- **[Mempool.space](https://mempool.space/docs/api/rest) compatible**: Blocks, transactions, addresses, mining, fees, and mempool endpoints match the mempool.space REST API +- **Series**: Thousands of on-chain time-series across multiple indexes (date, block height, etc.) - **Multiple formats**: JSON and CSV output - **LLM-optimized**: [`/llms.txt`](/llms.txt) for discovery, [`/api.json`](/api.json) compact OpenAPI spec for tool use (full spec at [`/openapi.json`](/openapi.json)) ### Quick start ```bash -curl -s https://bitview.space/api/block-height/0 +curl -s https://bitview.space/api/blocks/tip/height +curl -s https://bitview.space/api/v1/fees/recommended +curl -s https://bitview.space/api/mempool curl -s https://bitview.space/api/series/search?q=price -curl -s https://bitview.space/api/series/price/day -curl -s https://bitview.space/api/series/price/day/latest ``` ### Errors @@ -50,7 +50,7 @@ All errors return structured JSON with a consistent format: "type": "not_found", "code": "series_not_found", "message": "'foo' not found, did you mean 'bar'?", - "doc_url": "https://bitcoinresearchkit.org/api" + "doc_url": "/api" } } ``` @@ -108,21 +108,10 @@ All errors return structured JSON with a consistent format: ..Default::default() }, Tag { - name: "Blocks".to_string(), + name: "General".to_string(), description: Some( - "Retrieve block data by hash or height. Access block headers, transaction lists, \ - and raw block bytes.\n\n\ - *[Mempool.space](https://mempool.space/docs/api/rest) compatible (WIP).*" - .to_string(), - ), - ..Default::default() - }, - Tag { - name: "Transactions".to_string(), - description: Some( - "Retrieve transaction data by txid. Access full transaction details, confirmation \ - status, raw hex, and output spend information.\n\n\ - *[Mempool.space](https://mempool.space/docs/api/rest) compatible (WIP).*" + "General Bitcoin network information including difficulty adjustments and price data.\n\n\ + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" .to_string(), ), ..Default::default() @@ -132,17 +121,17 @@ All errors return structured JSON with a consistent format: description: Some( "Query Bitcoin address data including balances, transaction history, and UTXOs. \ Supports all address types: P2PKH, P2SH, P2WPKH, P2WSH, and P2TR.\n\n\ - *[Mempool.space](https://mempool.space/docs/api/rest) compatible (WIP).*" + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" .to_string(), ), ..Default::default() }, Tag { - name: "Mempool".to_string(), + name: "Blocks".to_string(), description: Some( - "Monitor unconfirmed transactions and fee estimates. Get mempool statistics, \ - transaction IDs, and recommended fee rates for different confirmation targets.\n\n\ - *[Mempool.space](https://mempool.space/docs/api/rest) compatible (WIP).*" + "Retrieve block data by hash or height. Access block headers, transaction lists, \ + and raw block bytes.\n\n\ + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" .to_string(), ), ..Default::default() @@ -152,16 +141,43 @@ All errors return structured JSON with a consistent format: description: Some( "Mining statistics including pool distribution, hashrate, difficulty adjustments, \ block rewards, and fee rates across configurable time periods.\n\n\ - *[Mempool.space](https://mempool.space/docs/api/rest) compatible (WIP).*" + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" + .to_string(), + ), + ..Default::default() + }, + Tag { + name: "Fees".to_string(), + description: Some( + "Fee estimation and projected mempool blocks.\n\n\ + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" + .to_string(), + ), + ..Default::default() + }, + Tag { + name: "Mempool".to_string(), + description: Some( + "Monitor unconfirmed transactions. Get mempool statistics, \ + transaction IDs, fee histogram, and recent transactions.\n\n\ + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" + .to_string(), + ), + ..Default::default() + }, + Tag { + name: "Transactions".to_string(), + description: Some( + "Retrieve transaction data by txid. Access full transaction details, confirmation \ + status, raw hex, merkle proofs, and output spend information.\n\n\ + *[Mempool.space](https://mempool.space/docs/api/rest) compatible.*" .to_string(), ), ..Default::default() }, Tag { name: "Metrics".to_string(), - description: Some( - "Deprecated — use Series".to_string(), - ), + description: Some("Deprecated — use Series".to_string()), extensions: [("deprecated".to_string(), serde_json::Value::Bool(true))].into(), ..Default::default() }, diff --git a/crates/brk_server/src/api/scalar.html b/crates/brk_server/src/api/scalar.html index 0a6c151e7..73a1a2034 100644 --- a/crates/brk_server/src/api/scalar.html +++ b/crates/brk_server/src/api/scalar.html @@ -47,6 +47,12 @@ telemetry: false, withDefaultFonts: false, // showToolbar: "never", + mcp: { + name: "mcp", + url: "https://mcp.example.com", + disabled: true, + }, + // showDeveloperTools: "never", agent: { disabled: true, }, diff --git a/website/scripts/options/partial.js b/website/scripts/options/partial.js index 329caa9ba..1d36e7ab2 100644 --- a/website/scripts/options/partial.js +++ b/website/scripts/options/partial.js @@ -57,11 +57,15 @@ export function createPartialOptions() { } = buildCohortData(); return [ - { - name: "Explorer", - kind: "explorer", - title: "Explorer", - }, + ...(location.hostname === "localhost" || location.hostname === "127.0.0.1" + ? [ + { + name: "Explorer", + kind: "explorer", + title: "Explorer", + }, + ] + : []), { name: "Charts", tree: [