@thirdfy/agent-cli 0.2.56 → 0.2.58

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/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@ All notable changes to `@thirdfy/agent-cli` are documented here. The format is b
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.2.58] - 2026-09-05
8
+
9
+ ### Fixed
10
+
11
+ - `basedbid_buy` managed-wallet preflight no longer treats listing `tokenAddress` as an ERC-20 `tokenIn`. Buy spends native ETH, so a zero listing-token balance no longer blocks a funded wallet. `basedbid_sell` and earn deposits still fund from `tokenAddress`. Pairs with `thirdfy-mcp` **0.0.106**.
12
+
13
+ ## [0.2.57] - 2026-09-04
14
+
15
+ ### Added
16
+
17
+ - `basedbid` provider hints and `docs/providers/basedbid.md`. `basedbid_get_tokens` is in `READ_ONLY_EXACT`. LBP and flash create are writes on Base 8453, Ethereum 1, and Robinhood Chain 4663. Buy and sell are writes on Base. Board, fee claim, and hook writes stay fail-closed. Pairs with `thirdfy-mcp` **0.0.105**.
18
+
7
19
  ## [0.2.56] - 2026-09-03
8
20
 
9
21
  ### Added
package/README.md CHANGED
@@ -40,18 +40,11 @@ Run without global install:
40
40
  npx @thirdfy/agent-cli --help
41
41
  ```
42
42
 
43
- ## What's new in v0.2.56
43
+ ## What's new in v0.2.58
44
44
 
45
- - `cmc` provider hints and [`docs/providers/cmc.md`](./docs/providers/cmc.md) for nineteen read-only `get_cmc_*` actions (quotes, metrics, fear/greed, composed Skill Hub briefs). Long-running skill actions use a 180s timeout.
46
- - Pairs with Thirdfy API **3.14.18** and `thirdfy-mcp` **0.0.104**.
47
-
48
- ## What's new in v0.2.55
49
-
50
- - Nansen and GMGN provider notes no longer list per-action credit or USD prices. Thirdfy auth is enough.
51
- - See [`docs/providers/nansen.md`](./docs/providers/nansen.md) for discovery examples.
45
+ - `basedbid_buy` managed-wallet preflight no longer treats listing `tokenAddress` as an ERC-20 funding token. Buy spends native ETH. Sell still funds from the listing token.
52
46
  - See [CHANGELOG.md](./CHANGELOG.md) and GitHub Releases for older versions.
53
47
 
54
-
55
48
  ## Quick start
56
49
 
57
50
  Hosted solo agents use profile `personal` and `--run-mode agent_wallet` (Path A). Fund the managed **execution wallet**, complete venue trading setup from the catalog when needed, then preflight and run. MetaMask Gator / `delegation *` is not required on this path.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdfy/agent-cli",
3
- "version": "0.2.56",
3
+ "version": "0.2.58",
4
4
  "description": "Thirdfy Agent CLI for onboarding, governance preflight, execute-intent, and status polling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,22 @@
1
+ import { normalizeActionKey } from './readOnlyActions.mjs';
2
+
3
+ /**
4
+ * Native-ETH spends pass `tokenAddress` as the listing or output, not the funding ERC-20.
5
+ * Sending that address as execution-wallet `tokenIn` checks the wrong balance and blocks buys.
6
+ */
7
+ const NATIVE_ETH_SPEND_ACTIONS = new Set([
8
+ 'basedbid_buy',
9
+ 'basedbid_create_lbp',
10
+ 'basedbid_create_flash',
11
+ 'basedbid_create_board',
12
+ ]);
13
+
14
+ export function resolveTokenInForFunding(params, action) {
15
+ if (!params || typeof params !== 'object') return '';
16
+ const explicit = String(params.tokenIn || '').trim();
17
+ if (explicit) return explicit;
18
+ const actionId = normalizeActionKey(action);
19
+ if (NATIVE_ETH_SPEND_ACTIONS.has(actionId)) return '';
20
+ if (params.amountEth != null && String(params.amountEth).trim() !== '') return '';
21
+ return String(params.tokenAddress || params.token || '').trim();
22
+ }
@@ -13,6 +13,7 @@ const READ_ONLY_EXACT = new Set([
13
13
  'dogeos_barkswap_get_quote',
14
14
  'dogeos_laika_read_contract',
15
15
  'dogeos_laika_token_state',
16
+ 'basedbid_get_tokens',
16
17
  'prepare_polymarket_onboarding',
17
18
  'create_polymarket_bridge_deposit',
18
19
  'create_polymarket_bridge_withdraw',
@@ -4,6 +4,7 @@ import { loadProfileConfig } from '../../core/context.mjs';
4
4
  import { createCliError } from '../../core/envelope.mjs';
5
5
  import { normalizeRunMode, normalizeManagedRunMode, normalizeHybridWalletMode } from '../../core/runMode.mjs';
6
6
  import { assertEarnclawPolymarketWriteIdempotency } from './earnclawRuntimeWriteGate.mjs';
7
+ import { resolveTokenInForFunding } from '../../core/fundingTokenIn.mjs';
7
8
  export function createExecutionPayloads({ getPreparedParams, rawUnitsToDecimalString }) {
8
9
  function buildBuildTxPayload(flags, resolvedAction) {
9
10
  const runMode = String(flags.runMode || '').trim().toLowerCase() || 'self';
@@ -134,12 +135,6 @@ function buildManagedExecutePayload(flags, options) {
134
135
  return payload;
135
136
  }
136
137
 
137
- function resolveTokenInForFunding(params) {
138
- if (!params || typeof params !== 'object') return '';
139
- const tokenIn = String(params.tokenIn || params.tokenAddress || params.token || '').trim();
140
- return tokenIn;
141
- }
142
-
143
138
  function buildIntentPayload(flags, options) {
144
139
  const runMode = String(options.runMode || flags.runMode || '').trim().toLowerCase() || 'thirdfy';
145
140
  const payload = {
@@ -650,7 +650,10 @@ async function resolveManagedExecutionPreflight(ctx, flags, resolved, options =
650
650
  signerMethod: 'managed_wallet_server',
651
651
  };
652
652
  }
653
- const tokenIn = resolveTokenInForFunding(getPreparedParams(flags));
653
+ const tokenIn = resolveTokenInForFunding(
654
+ getPreparedParams(flags),
655
+ resolved?.resolvedAction || flags.action
656
+ );
654
657
  const query = new URLSearchParams({
655
658
  userDid,
656
659
  chainId: String(chainId),
@@ -594,6 +594,29 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
594
594
  'thirdfy-agent run --action get_gmgn_kol_trades --params \'{"chain":"sol","limit":5}\' --provider gmgn --json',
595
595
  };
596
596
  }
597
+ if (provider === 'basedbid') {
598
+ return {
599
+ provider,
600
+ category: 'spot',
601
+ canonicalReadAction: 'basedbid_get_tokens',
602
+ canonicalWriteAction: 'basedbid_create_lbp',
603
+ readActions: ['basedbid_get_tokens'],
604
+ orderManagementActions: [
605
+ 'basedbid_create_lbp',
606
+ 'basedbid_create_flash',
607
+ 'basedbid_create_board',
608
+ 'basedbid_buy',
609
+ 'basedbid_sell',
610
+ 'basedbid_claim_fees',
611
+ 'basedbid_update_hook',
612
+ ],
613
+ supportedChains: [8453, 1, 4663],
614
+ laneCompatibility:
615
+ 'basedbid launchpad. Discovery is read-only. LBP and flash create are write-enabled on 8453, 1, and 4663. Buy and sell are write-enabled on 8453. Board, fee claim, and hook writes stay fail-closed. Console uses the existing preview-then-confirm path. No extra venue credential.',
616
+ example:
617
+ 'thirdfy-agent run --action basedbid_get_tokens --params \'{"chainId":8453,"limit":10}\' --provider basedbid --json',
618
+ };
619
+ }
597
620
  if (provider === 'nansen') {
598
621
  return {
599
622
  provider,
@@ -686,6 +709,7 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
686
709
  morpho: 'deposit_earn_position',
687
710
  aave: 'deposit_earn_position',
688
711
  aegis: 'deposit_aegis_lender',
712
+ basedbid: 'basedbid_create_lbp',
689
713
  curve: 'deposit_earn_position',
690
714
  uniswap: 'mint_uniswap_position',
691
715
  'vaults-fyi': 'deposit_earn_position',
@@ -703,6 +727,7 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
703
727
  'market-data': 'get_trending_tokens',
704
728
  gmgn: 'get_gmgn_kol_trades',
705
729
  nansen: 'get_nansen_perp_screener',
730
+ basedbid: 'basedbid_get_tokens',
706
731
  cmc: 'get_cmc_quotes',
707
732
  prediction: 'get_prediction_markets',
708
733
  };