Commit Graph
44 Commits
Author SHA1 Message Date
d00a1d3ce3 fix(swap): preserve Solana address case when normalizing wallet addresses
toLowerCase() breaks base58 Solana addresses which are case-sensitive.
Only apply lowercase normalization on EVM chains (bsc/base/eth).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 12:06:22 +08:00
deepfeatureandGitHub 6f0d4464e2 Merge pull request #138 from GMGNAI/feat/wallet-holdings-critical-auth
breaking(portfolio): upgrade wallet_holdings to critical auth
2026-05-26 19:48:09 +08:00
David LauandClaude Sonnet 4.6 48e7346d8e fix(swap): normalize wallet addresses to lowercase before API call
Ensures from_address and multi-swap accounts are lowercased at the CLI
boundary to prevent case-sensitivity issues on the API side.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 13:55:25 +08:00
deepfeatureandClaude Sonnet 4.6 2f76b375c5 breaking(portfolio): upgrade wallet_holdings to critical auth
Align CLI with server-side breaking change: GET /v1/user/wallet_holdings
was upgraded from authExistMW to authCriticalMW on the openapi-service.

- OpenApiClient: switch getWalletHoldings to authSignedRequest
- SKILL.md: split rate-limit table by auth level; update Notes section
- CLAUDE.md: move portfolio holdings from Normal to Critical auth row

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 11:19:30 +08:00
David LauandClaude Sonnet 4.6 d51f1c49d3 refactor(auth): rename normalRequest/criticalRequest; align auth terminology
- Rename private methods: normalRequest → authExistRequest,
  criticalRequest → authSignedRequest in OpenApiClient.ts (both gmgn-skills
  and scripts/src)
- Replace all "normal auth" / "critical auth" labels across SKILL.md files,
  cli-usage.md, Readme.md, and CLI command descriptions with:
    exist auth  — API Key only, no private key required
    signed auth — API Key + GMGN_PRIVATE_KEY signature required
- Add explicit "requires GMGN_PRIVATE_KEY" notes to signed-auth commands
  and "API Key only" notes to exist-auth commands throughout docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 17:45:10 +08:00
David LauandClaude Sonnet 4.6 15872373cd feat(swap): promote gas-price to top-level command, support all chains
- Move `order gas-price` → `gmgn-cli gas-price` (top-level command)
- Expand chain support to include sol alongside eth / bsc / base
- Reorder commands in swap.ts to match SKILL.md: swap → multi-swap →
  order quote/get → gas-price → order strategy create/list/cancel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 12:05:39 +08:00
GMGN.AIandGitHub 2b33ee666c Merge pull request #125 from GMGNAI/feat/gas-level-remove-auto-tip-fee
Feat/gas level remove auto tip fee
2026-05-18 19:13:53 +08:00
GMGN.AIandClaude Sonnet 4.6 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
David LauandClaude Sonnet 4.6 072b180119 feat: add gas-level/auto-fee/gas-price endpoint; remove auto_tip_fee/max_auto_fee
- Add --gas-level (eth only), --auto-fee (eth only) to swap, multi-swap,
  and strategy create commands
- Add order gas-price subcommand (GET /v1/trade/gas_price, normal auth)
- Add --max-fee-per-gas / --max-priority-fee-per-gas to strategy create
- Remove --auto-tip-fee and --max-auto-fee from swap and multi-swap
- Update token SKILL.md: price field is now a nested object (price.price),
  add price window fields and fee_distribution object docs
- Update EIP-1559 chain coverage from Base-only to BSC/BASE/ETH

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 18:55:49 +08:00
deepfeature e4496eafeb fix(config): update dotenv loading order and simplify host assignment 2026-05-04 09:35:54 +08:00
David LauandClaude Sonnet 4.6 56a3a60352 feat(eth): add ETH chain support to multi-swap, strategy, kol, smartmoney, created-tokens
- multi-swap --chain: add eth
- order strategy create/list/cancel --chain: add eth
- track kol/smartmoney --chain: add eth, change to requiredOption
- portfolio created-tokens --chain: add eth
- SKILL.md files updated accordingly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 18:16:58 +08:00
David LauandClaude Sonnet 4.6 1012cfffb8 feat(eth): add Ethereum mainnet chain support (P0 commands)
Add ETH chain support to all P0 commands across CLI and SKILL.md docs:

Commands with ETH support added:
- token info/security/pool/holders/traders
- market kline/trending
- portfolio info/holdings/activity/stats/token-balance
- track follow-wallet
- swap, order quote/get

P1/P2 commands remain sol/bsc/base only:
- track kol/smartmoney (P1)
- multi-swap, order strategy create/list/cancel (P1)
- portfolio created-tokens (P2)

Also adds ETH chain currencies, explorer links, and gas price bounds
to gmgn-swap SKILL.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 16:08:36 +08:00
GMGN.AIandGitHub f6f1d56b82 Merge pull request #111 from gina888666/fix/trenches-created-duration-unit
fix(trenches): require unit suffix for --min-created / --max-created
2026-04-22 15:26:48 +08:00
wuyanlingandClaude Sonnet 4.6 b83422769f fix(trenches): remove 1h example from min/max-created desc, align with s/m only
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 15:22:44 +08:00
wuyanlingandClaude Sonnet 4.6 cc1cb48db9 fix(trenches): treat bare duration numbers as minutes with warning, update skill docs
- parseDuration: bare numbers now default to minutes (e.g. "5" → "5m") instead of hard error
- Print a warning to stderr so users know the implicit conversion is happening
- Update SKILL.md: document unit suffix recommendation and bare-number fallback behavior

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 11:52:01 +08:00
wuyanling 981600f170 fix(trenches): require unit suffix for --min-created / --max-created
Bare numbers like 0.5 were silently accepted but caused inconsistent
server-side filtering. This change:

- Adds a parseDuration() validator that rejects values without a unit
- Accepts seconds (e.g. 30s) and minutes (e.g. 0.5m / 1m / 5m)
- Prints a clear error message when a bare number is passed
- Updates desc strings to document the required unit format
- Adds a new TrenchesFieldType 'duration' to distinguish these fields
2026-04-22 11:37:44 +08:00
David LauandClaude Sonnet 4.6 1f49d61363 feat(token): expand --tag filter for holders and traders to all 10 values
Update --tag option description and SKILL.md docs to reflect the full
backend allowlist: smart_degen, renowned, fresh_wallet, dev, sniper,
rat_trader, bundler, transfer_in, dex_bot, bluechip_owner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 16:42:06 +08:00
GMGN.AIandClaude Sonnet 4.6 f19a1919da fix(track): switch follow-wallet to critical auth and fix signer array support
GET /v1/trade/follow_wallet requires X-Signature (critical auth) but was
called via normalRequest (API Key only), causing HTTP 401 AUTH_INVALID
with "missing signature".

- OpenApiClient: getFollowWallet now calls criticalRequest; criticalRequest
  queryExtra type widened to accept string[] to support the --filter option
- signer: buildMessage handles string[] values as sorted repeated k=v pairs,
  consistent with buildUrl / URLSearchParams serialization
- config: update PRIVATE_KEY_REQUIRED_MSG to include follow-wallet
- SKILL.md: prerequisites note GMGN_PRIVATE_KEY for follow-wallet; first-time
  setup now saves private key to ~/.config/gmgn/.env and removes /tmp copy;
  Notes section corrected to reflect split auth modes
- CLAUDE.md: Auth Modes table updated — follow-wallet moved to Critical row

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 11:42:56 +08:00
David LauandClaude Sonnet 4.6 39d80429f6 feat(market): add market signal command for token signal feed
- Add POST /v1/market/token_signal client method and TokenSignalGroup interface
- Add market signal sub-command with individual flags for single-group queries
- Support --groups <json> override for multi-group parallel queries
- Document max 50 results per group limit
- Update SKILL.md, cli-usage.md, and README with signal types, response fields, and examples

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 14:00:52 +08:00
David LauandClaude Sonnet 4.6 db55c77a26 feat(portfolio): add created-tokens command for developer wallet token history
Add GET /v1/user/created_tokens support: portfolio created-tokens CLI command,
OpenApiClient method, SKILL.md docs, cli-usage.md, and Readme examples.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 16:43:25 +08:00
David LauandClaude Sonnet 4.6 38bff1aecb feat(swap): add multi-swap command; fix(track): downgrade follow-wallet to normal auth
- Add POST /v1/trade/multi_swap support: new MultiSwapParams interface,
  multiSwap() method, and multi-swap CLI command with full options
  (accounts, input/output amounts, slippage, fees, condition-orders, etc.)
- Fix track follow-wallet: switch from criticalRequest to normalRequest;
  --wallet is now optional (API Key's bound user resolves the follow list)
- Update SKILL.md, cli-usage.md, Readme.md, Readme.zh.md to reflect both changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 20:43:32 +08:00
deepfeature 1ea71149d9 require critical auth for order quote 2026-04-08 17:24:35 +08:00
deepfeature ca3c640afc fix bsc order quote auth 2026-04-08 17:19:16 +08:00
David LauandClaude Sonnet 4.6 7445c970bc feat(swap): support profit_stop_trace and loss_stop_trace in condition orders
- Add drawdown_rate optional field to StrategyConditionOrder interface
- Make price_scale optional (required only for fixed-price types)
- Update --condition-orders help text with trace type example
- Document all 4 condition order types in SKILL.md with field requirements,
  drawdown_rate semantics, and usage examples
- Sync order strategy create params: replace --side / auto-inference with
  explicit --order-type and --sub-order-type required options
- Add --group-tag to order strategy list params
- Add --order-type to order strategy cancel params
- Fix --gas-price description: gwei (not wei); CLI converts internally

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 11:02:31 +08:00
deepfeature ed27705826 fix strategy list signature auth 2026-04-03 14:21:59 +08:00
gumponchainandClaude Sonnet 4.6 8c27e42aff fix(swap): remove --open-price parameter and update docs with cooking/limit order examples
- Remove --open-price option from swap order strategy create command
- Remove open_price field from OpenApiClient StrategyCreateParams type
- Update skills/gmgn-swap/SKILL.md: drop open-price row and inference table, simplify examples to use --sub-order-type directly
- Update docs/cli-usage.md: remove --open-price from command signature and parameter table
- Add /gmgn-cooking skill to Skills tables in Readme.md and Readme.zh.md
- Add limit order and cooking CLI examples to section 8 of both readmes
- Update Cline install instructions to include /gmgn-cooking

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 12:14:52 +08:00
759ab74709 fix(strategy): add missing order_type/sub_order_type, condition_orders, and group_tag
- Add --order-type and --sub-order-type as required flags to order strategy create
  (server requires both; omitting them caused every create call to 400)
- Remove --side from strategy create (field no longer exists in the API)
- Make --open-price optional in strategy create (matches API spec)
- Fix --gas-price in strategy create to convert gwei→wei (consistent with swap)
- Add --condition-orders and --sell-ratio-type to swap command for
  take-profit/stop-loss conditions attached after a successful swap
- Add --group-tag (LimitOrder/STMix) to order strategy list
- Add --order-type to order strategy cancel
- Add StrategyConditionOrder interface; extend SwapParams with condition_orders
  and sell_ratio_type; add order_type/sub_order_type to StrategyCreateParams;
  remove side; add order_type to StrategyCancelParams
- Update docs/cli-usage.md: fix strategy create table, add chain fee requirement
  notes (SOL requires priority_fee+tip_fee; BSC requires gas_price), add
  condition_orders example and strategy_order_id response field, add
  TRADING_BOT_UNAVAILABLE error code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 21:57:45 +08:00
deepfeatureandGMGN.AI b12a2294b7 feat: add cooking command and update swap/docs 2026-04-02 21:57:45 +08:00
deepfeature 221bf120a8 fix rate limit handling for skills 2026-04-01 11:05:47 +08:00
40f75e0b64 feat(trenches): add server-side filter support to API client and update docs
- OpenApiClient: extend getTrenches/buildTrenchesBody to accept and spread
  server-side filter fields into each category section of the request body
- SKILL.md: clarify entrapment_ratio description as Entrapment/Phishing
- workflow-early-project-screening: add filter-preset examples to Step 1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 16:02:06 +08:00
3951d9963e fix(trenches): restore min/max_x_follower — confirmed working by user test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 16:02:06 +08:00
5547e9fd30 fix(trenches): restore 5 incorrectly removed filter field pairs
Previous validation used millisecond timestamps causing 401 errors,
which jq parsed as 0 and were mistaken for "field ignored" results.
Re-validated with correct second-precision timestamps — all 30 pairs
confirmed working. Only min/max_x_follower remains removed (truly ignored).

Restored fields (10 flags, 5 pairs):
- min/max_volume_24h
- min/max_net_buy_24h
- min/max_swaps_24h
- min/max_buys_24h
- min/max_sells_24h

Also restored min_volume_24h=1000 in the strict filter preset.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 16:02:06 +08:00
3ca831a976 feat(trenches): remove 6 unsupported server-side filter fields after API validation
Validated all 31 min/max field pairs against the live API using extreme values.
Fields returning baseline count (80) on both min and max tests are silently
ignored by the server — confirmed not supported.

Removed fields (12 flags, 6 pairs):
- min/max_volume_24h
- min/max_net_buy_24h
- min/max_swaps_24h
- min/max_buys_24h
- min/max_sells_24h
- min/max_x_follower

Also removed min_volume_24h from the `strict` filter preset.

Remaining 50 filter flags (25 pairs) are confirmed to work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 16:02:06 +08:00
dev 4697985501 use ipv4 2026-03-30 10:51:12 +08:00
fe80a8aba7 docs: add Core Concepts, AI Agent install guide, and workflow docs
- README: add Quick Start (AI Agent) section with step-by-step key generation
  and .env configuration guidance; add Upgrade (AI Agent) section
- README.zh.md: sync all changes from English README
- skills/gmgn-market: add Core Concepts (10 terms: volume/amount distinction,
  rug_ratio, smart_degen_count, hot_level, renounced authorities, honeypot,
  creator_token_status, cto_flag, trenches lifecycle, wash/rat/bundler signals);
  add "Do NOT guess fields" IMPORTANT rule
- skills/gmgn-portfolio: add Core Concepts (7 terms: realized/unrealized profit,
  profit_change multiplier, pnl ratio, winrate, cost vs usd_value, pagination);
  complete Response Field Reference tables for holdings/activity/stats
- skills/gmgn-swap: add Core Concepts (8 terms: smallest unit, slippage decimal,
  amount vs percent mutex, currency tokens, anti-MEV, critical auth, order polling,
  filled amount conversion); add "Do NOT guess fields" IMPORTANT rule
- skills/gmgn-track: add Core Concepts (8 terms: follow-wallet vs kol vs
  smartmoney, KOL vs smart_degen, is_open_or_close divergence, price_change ratio,
  base/quote address, tags array, cluster signal); add Safety Constraints section;
  add Output Format section; add "Do NOT guess fields" IMPORTANT rule
- skills/gmgn-token: add --amount/--percent and --slippage/--auto-slippage mutex
  rules; add --tag + --order-by valid combination guide table for traders
- src/index.ts: add track to CLI description
- docs/token-due-diligence.md: new — full 4-step token due diligence workflow
- docs/market-discover-opportunities.md: new — market discovery workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:11:13 +08:00
b7302f5253 fix: move wallet_holdings filter defaults to CLI, remove no-op flags
Portfolio holdings to return empty results for wallets that only have closed positions (issue #21).

Changes:
- Convert --hide-closed, --hide-airdrop, --hide-abnormal to value options with explicit defaults (hide_closed=true, hide_airdrop=true, hide_abnormal=false), so defaults are enforced by the CLI and users can override with e.g. --hide-closed false
- Remove --sell-out and --show-small which are hard-coded in the service and were never forwarded to the upstream API
- Update SKILL.md to reflect new option signatures and defaults

Fixes #21

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 18:48:47 +08:00
David LauandGMGN.AI 87540d6327 fix: remove default tag filter from token holders and traders commands
- Remove hardcoded "renowned" default from --tag in `token holders` command
- Remove hardcoded "renowned" default from --tag in `token traders` command
- Update skills/gmgn-token/SKILL.md to show --tag has no default (returns all wallets when omitted)

Fixes #14
2026-03-27 17:25:09 +08:00
28062887d8 feat: add track command group, split follow-wallet/kol/smartmoney from portfolio
- Add new `track` command group with three sub-commands:
  - `track follow-wallet`: monitor trade activity of followed wallets (critical auth)
  - `track kol`: KOL trade records with optional --chain and client-side --side filter
  - `track smartmoney`: Smart Money trade records with optional --chain and client-side --side filter
- Remove follow-wallet, kol, smartmoney sub-commands from portfolio
- Add getKol/getSmartMoney optional chain param in OpenApiClient
- Switch getFollowWallet to criticalRequest (signature auth required)
- Align track follow-wallet options to actual API params (remove unsupported flags)
- Add skills/gmgn-track/SKILL.md with sub-command guide, options, response fields
- Add IMPORTANT notice to all SKILL.md files to prevent AI from scraping gmgn.ai
- Add CRITICAL RULE section to CLAUDE.md to enforce CLI-only data access
- Update Readme.md and Readme.zh.md: add gmgn-track skill, Track CLI section, user tip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:19:57 +08:00
gumponchainandClaude Sonnet 4.6 08b48c8e24 feat(market): add structured --type/--launchpad-platform/--limit options for trenches command
Replace raw --body JSON parameter with structured CLI flags for better AI agent readability.
Add full response key reference and SOL/BSC/Base examples to SKILL.md and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 17:02:24 +08:00
copilot-swe-agent[bot]anddeepfeature bd533cb85e feat: add swap auto-slippage option
Co-authored-by: deepfeature <1503768+deepfeature@users.noreply.github.com>
Agent-Logs-Url: https://github.com/GMGNAI/gmgn-skills/sessions/b2089672-9ca8-402c-be14-138b55c1bb98
2026-03-26 07:52:26 +00:00
dev 45fb37d51f support trenches & kol & smartmoney 2026-03-25 22:20:56 +08:00
702eac9686 feat(market): update trending --interval to support 1m/5m/1h/6h/24h
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 16:46:55 +08:00
David LauandGMGN.AI c9dbb6f58b fix: rename --orderby to --order-by, expand holders/traders options, update chain-specific platform/filter values 2026-03-18 16:07:10 +08:00
dev d9d1bf8200 initial import 2026-03-16 18:40:55 +08:00