Compare commits

...

7 Commits

Author SHA1 Message Date
GMGN.AI 123bdba738 1.3.0 2026-05-14 20:47:03 +08:00
GMGN.AI 1d03fb1672 1.2.10 2026-05-14 20:46:10 +08:00
GMGN.AI 6f79600869 Merge pull request #122 from GumpOnchain/docs/token-native-transfer-shared-funding
docs(token): move native_transfer to Shared Funding section with updated description
2026-05-14 20:44:38 +08:00
GMGN.AI 12ab55bb63 docs(token): move native_transfer to Shared Funding section with updated description
native_transfer records the first native token (SOL/BNB/ETH) transfer into a
wallet, not the most recent — it indicates the original funding source. Wallets
sharing the same native_transfer.address are likely funded from a common origin
(coordinated wallets / same operator).

Move it out of Last Transaction Records into its own Shared Funding section to
reflect its distinct purpose.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 20:43:36 +08:00
GMGN.AI aa09490a9b Merge pull request #121 from GumpOnchain/fix/trenches-volume-filter
fix(trenches): fix apiFieldToCliKey for numeric suffix flags (--min/max-volume-24h etc.)
2026-05-14 20:08:22 +08:00
GMGN.AI 2b6c220581 fix(trenches): fix apiFieldToCliKey to match Commander.js camelCase for numeric suffixes
Commander.js removes hyphens before digits (e.g. -24h → 24h) but does not
uppercase them. The previous regex only handled -[a-z] patterns, leaving
a residual hyphen: minVolume-24h instead of minVolume24h.

This caused all 24h-suffixed filter flags to be silently ignored:
--min-volume-24h, --max-volume-24h, --min-net-buy-24h, --min-swaps-24h,
--min-buys-24h, --min-sells-24h.

Fix: add .replace(/-(\d)/g, '$1') to strip hyphens before digit sequences.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 19:53:45 +08:00
deepfeature e181cba142 fix(skills): update rate limit settings for cooking, market, portfolio, swap, token, and track routes 2026-05-13 17:13:26 +08:00
9 changed files with 20 additions and 14 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "gmgn-cli",
"version": "1.2.9",
"version": "1.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "gmgn-cli",
"version": "1.2.9",
"version": "1.3.0",
"license": "MIT",
"dependencies": {
"commander": "^12.1.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "gmgn-cli",
"version": "1.2.9",
"version": "1.3.0",
"description": "GMGN OpenAPI CLI — call GMGN market, token, portfolio and swap APIs from the command line",
"type": "module",
"bin": {
+1 -1
View File
@@ -74,7 +74,7 @@ If a local `.env` exists but lacks `GMGN_API_KEY` / `GMGN_PRIVATE_KEY`, either a
## Rate Limit Handling
All cooking routes go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second.
All cooking routes go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second.
| Command | Weight |
|---------|--------|
+1 -1
View File
@@ -61,7 +61,7 @@ Use the `gmgn-cli` tool to query K-line data for a token, browse trending tokens
## Rate Limit Handling
All market routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
All market routes used by this skill go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second, and the max burst is roughly `floor(20 ÷ weight)` when the bucket is full.
| Command | Route | Weight |
|---------|-------|--------|
+1 -1
View File
@@ -52,7 +52,7 @@ Use the `gmgn-cli` tool to query wallet portfolio data based on the user's reque
## Rate Limit Handling
All portfolio routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
All portfolio routes used by this skill go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second, and the max burst is roughly `floor(20 ÷ weight)` when the bucket is full.
| Command | Route | Weight |
|---------|-------|--------|
+1 -1
View File
@@ -79,7 +79,7 @@ Currency tokens are the base/native assets of each chain. They are used to buy o
## Rate Limit Handling
All swap-related routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
All swap-related routes used by this skill go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second, and the max burst is roughly `floor(20 ÷ weight)` when the bucket is full.
| Command | Route | Weight |
|---------|-------|--------|
+7 -2
View File
@@ -51,7 +51,7 @@ Use the `gmgn-cli` tool to query token information based on the user's request.
## Rate Limit Handling
All token routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
All token routes used by this skill go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second, and the max burst is roughly `floor(20 ÷ weight)` when the bucket is full.
| Command | Route | Weight |
|---------|-------|--------|
@@ -418,13 +418,18 @@ The response is an object with a `list` array. Each item in `list` represents on
| `maker_token_tags` | Token-specific behavior tags for this wallet (e.g. `["bundler"]`, `["paper_hands"]`, `["top_holder"]`) |
| `created_at` | Wallet creation timestamp (Unix seconds); `0` if unknown |
**Shared Funding**
| Field | Description |
|-------|-------------|
| `native_transfer` | First native token (SOL/BNB/ETH) transfer into this wallet — indicates the original funding source; wallets sharing the same `native_transfer.address` are likely funded from a common origin (coordinated wallets / same operator) |
**Last Transaction Records**
Each of the following is an object with `name`, `address`, `timestamp`, `tx_hash`, `type`:
| Field | Description |
|-------|-------------|
| `native_transfer` | Most recent native token (SOL/BNB/ETH) transfer associated with this wallet |
| `token_transfer` | Most recent token transfer (buy or sell) |
| `token_transfer_in` | Most recent inbound token transfer |
| `token_transfer_out` | Most recent outbound token transfer |
+1 -1
View File
@@ -65,7 +65,7 @@ Use the `gmgn-cli` tool to query on-chain tracking data based on the user's requ
## Rate Limit Handling
All tracking routes used by this skill go through GMGN's leaky-bucket limiter with `rate=10` and `capacity=10`. Sustained throughput is roughly `10 ÷ weight` requests/second, and the max burst is roughly `floor(10 ÷ weight)` when the bucket is full.
All tracking routes used by this skill go through GMGN's leaky-bucket limiter with `rate=20` and `capacity=20`. Sustained throughput is roughly `20 ÷ weight` requests/second, and the max burst is roughly `floor(20 ÷ weight)` when the bucket is full.
| Command | Route | Weight |
|---------|-------|--------|
+5 -4
View File
@@ -290,13 +290,14 @@ const TRENCHES_FILTER_PRESETS: Record<string, Record<string, number | string>> =
};
// Convert API snake_case field to Commander.js opts key
// Commander.js camelCase: only converts -[a-z] patterns, digits stay as-is
// e.g. min_volume_24h → min-volume-24h → minVolume-24h (digit prefix -24 is NOT converted)
// e.g. min_smart_degen_count → min-smart-degen-count → minSmartDegenCount (all letters, converts fully)
// Commander.js camelCase: converts -[a-z] to uppercase, and removes hyphen before digits
// e.g. min_volume_24h → min-volume-24h → minVolume-24h → minVolume24h
// e.g. min_smart_degen_count → min-smart-degen-count → minSmartDegenCount
function apiFieldToCliKey(apiField: string): string {
return apiField
.replace(/_/g, '-')
.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());
.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase())
.replace(/-(\d)/g, '$1');
}
// Client-side sort helpers (API does not support server-side sort for trenches)