@thirdfy/agent-cli 0.2.49 → 0.2.50
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 +6 -0
- package/README.md +4 -3
- package/package.json +1 -1
- package/src/runtime/actions/selection.mjs +14 -2
- package/src/runtime/providerHints.mjs +32 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to `@thirdfy/agent-cli` are documented here. The format is b
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.50] - 2026-08-14
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Uniswap LP (`providerId: uniswap`) provider hints and earn-family routing: `get_uniswap_*` reads plus named mint/increase/decrease/collect/close/burn writes. See [`docs/providers/earn-uniswap.md`](./docs/providers/earn-uniswap.md). Pairs with Thirdfy API **3.13.63** and `thirdfy-mcp` **0.0.98**.
|
|
12
|
+
|
|
7
13
|
## [0.2.49] - 2026-08-10
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/README.md
CHANGED
|
@@ -40,10 +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.50
|
|
44
44
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
45
|
+
- Uniswap LP (`uniswap`): list pools and positions, then mint, collect, or close with named actions.
|
|
46
|
+
- LP writes use `mint_uniswap_position` and `close_uniswap_position`, not `deposit_earn_position`.
|
|
47
|
+
- See [CHANGELOG.md](./CHANGELOG.md) and GitHub Releases for older versions.
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
## Quick start
|
package/package.json
CHANGED
|
@@ -132,6 +132,17 @@ function inferActionProvider(action) {
|
|
|
132
132
|
'get-curve-pool-details': 'curve',
|
|
133
133
|
'deposit-curve-pool': 'curve',
|
|
134
134
|
'withdraw-curve-pool': 'curve',
|
|
135
|
+
'get-uniswap-pools': 'uniswap',
|
|
136
|
+
'get-uniswap-pool-state': 'uniswap',
|
|
137
|
+
'get-uniswap-positions': 'uniswap',
|
|
138
|
+
'get-uniswap-position': 'uniswap',
|
|
139
|
+
'get-uniswap-fees': 'uniswap',
|
|
140
|
+
'mint-uniswap-position': 'uniswap',
|
|
141
|
+
'increase-uniswap-liquidity': 'uniswap',
|
|
142
|
+
'decrease-uniswap-liquidity': 'uniswap',
|
|
143
|
+
'collect-uniswap-fees': 'uniswap',
|
|
144
|
+
'close-uniswap-position': 'uniswap',
|
|
145
|
+
'burn-uniswap-position': 'uniswap',
|
|
135
146
|
'get-aegis-pools': 'aegis',
|
|
136
147
|
'get-aegis-pool-state': 'aegis',
|
|
137
148
|
'get-aegis-vault-state': 'aegis',
|
|
@@ -180,6 +191,7 @@ function inferActionProvider(action) {
|
|
|
180
191
|
if (key.includes('aave')) return 'aave';
|
|
181
192
|
if (key.includes('aegis')) return 'aegis';
|
|
182
193
|
if (key.includes('curve')) return 'curve';
|
|
194
|
+
if (key.includes('uniswap')) return 'uniswap';
|
|
183
195
|
if (key.includes('earn') || key.includes('yield') || key.includes('vault')) return 'earn';
|
|
184
196
|
if (key.includes('bridge')) return 'bridge';
|
|
185
197
|
if (key.includes('dogeos-barkswap')) return 'dogeos-barkswap';
|
|
@@ -261,9 +273,9 @@ function actionMatchesProvider(action, requestedProvider, allActions) {
|
|
|
261
273
|
}
|
|
262
274
|
if (requestedProvider.startsWith('dogeos')) return isProviderActionKey(action, requestedProvider);
|
|
263
275
|
if (requestedProvider === 'earn') {
|
|
264
|
-
return provider === 'earn' || provider === 'morpho' || provider === 'aave' || provider === 'aegis' || provider === 'curve' || provider === 'capyfi' || provider === 'vaults-fyi' || provider === 'yield-xyz' || isEarnCatalogAction(action);
|
|
276
|
+
return provider === 'earn' || provider === 'morpho' || provider === 'aave' || provider === 'aegis' || provider === 'curve' || provider === 'uniswap' || provider === 'capyfi' || provider === 'vaults-fyi' || provider === 'yield-xyz' || isEarnCatalogAction(action);
|
|
265
277
|
}
|
|
266
|
-
if (requestedProvider === 'morpho' || requestedProvider === 'aave' || requestedProvider === 'aegis' || requestedProvider === 'curve' || requestedProvider === 'capyfi' || requestedProvider === 'vaults-fyi' || requestedProvider === 'yield-xyz') {
|
|
278
|
+
if (requestedProvider === 'morpho' || requestedProvider === 'aave' || requestedProvider === 'aegis' || requestedProvider === 'curve' || requestedProvider === 'uniswap' || requestedProvider === 'capyfi' || requestedProvider === 'vaults-fyi' || requestedProvider === 'yield-xyz') {
|
|
267
279
|
const hasProtocolSpecificEarnRows = allActions.some((candidate) => getActionProviderWithInference(candidate) === requestedProvider);
|
|
268
280
|
return (
|
|
269
281
|
isProviderActionKey(action, requestedProvider) ||
|
|
@@ -471,6 +471,36 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
|
|
|
471
471
|
'Curve EVM writes are limited to the validated Base mainnet 4pool adapter; other pools remain discovery-only until per-pool calldata is validated.',
|
|
472
472
|
};
|
|
473
473
|
}
|
|
474
|
+
if (provider === 'uniswap') {
|
|
475
|
+
return {
|
|
476
|
+
provider,
|
|
477
|
+
category: 'earn',
|
|
478
|
+
canonicalReadAction: 'get_uniswap_pools',
|
|
479
|
+
canonicalWriteAction: 'mint_uniswap_position',
|
|
480
|
+
readActions: [
|
|
481
|
+
'get_uniswap_pools',
|
|
482
|
+
'get_uniswap_pool_state',
|
|
483
|
+
'get_uniswap_positions',
|
|
484
|
+
'get_uniswap_position',
|
|
485
|
+
'get_uniswap_fees',
|
|
486
|
+
'get_earning_opportunities',
|
|
487
|
+
'get_earn_opportunities',
|
|
488
|
+
],
|
|
489
|
+
orderManagementActions: [
|
|
490
|
+
'mint_uniswap_position',
|
|
491
|
+
'increase_uniswap_liquidity',
|
|
492
|
+
'decrease_uniswap_liquidity',
|
|
493
|
+
'collect_uniswap_fees',
|
|
494
|
+
'close_uniswap_position',
|
|
495
|
+
'burn_uniswap_position',
|
|
496
|
+
],
|
|
497
|
+
supportedChains: [8453, 42161, 1, 4663],
|
|
498
|
+
laneCompatibility:
|
|
499
|
+
'Uniswap LP discovery is read-first on Base v3 and vanilla v4 pools. Named mint/increase/decrease/collect/close actions replace deposit_earn_position; writes ship after Gate A discover passes.',
|
|
500
|
+
example:
|
|
501
|
+
'thirdfy-agent actions --provider uniswap --json && thirdfy-agent run --action get_uniswap_pools --params \'{"chainId":8453}\'',
|
|
502
|
+
};
|
|
503
|
+
}
|
|
474
504
|
if (provider === 'vaults-fyi') {
|
|
475
505
|
return {
|
|
476
506
|
provider,
|
|
@@ -599,6 +629,7 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
|
|
|
599
629
|
aave: 'deposit_earn_position',
|
|
600
630
|
aegis: 'deposit_aegis_lender',
|
|
601
631
|
curve: 'deposit_earn_position',
|
|
632
|
+
uniswap: 'mint_uniswap_position',
|
|
602
633
|
'vaults-fyi': 'deposit_earn_position',
|
|
603
634
|
'yield-xyz': 'deposit_earn_position',
|
|
604
635
|
};
|
|
@@ -608,6 +639,7 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
|
|
|
608
639
|
aave: 'get_aave_markets',
|
|
609
640
|
aegis: 'get_aegis_pools',
|
|
610
641
|
curve: 'get_curve_pools',
|
|
642
|
+
uniswap: 'get_uniswap_pools',
|
|
611
643
|
'vaults-fyi': 'get-vaults-fyi-vaults',
|
|
612
644
|
'yield-xyz': 'get_yield_xyz_opportunities',
|
|
613
645
|
'market-data': 'get_trending_tokens',
|