@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 +12 -0
- package/README.md +2 -9
- package/package.json +1 -1
- package/src/core/fundingTokenIn.mjs +22 -0
- package/src/core/readOnlyActions.mjs +1 -0
- package/src/runtime/execution/payloads.mjs +1 -6
- package/src/runtime/execution/runners.mjs +4 -1
- package/src/runtime/providerHints.mjs +25 -0
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.
|
|
43
|
+
## What's new in v0.2.58
|
|
44
44
|
|
|
45
|
-
- `
|
|
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
|
@@ -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(
|
|
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
|
};
|