@thirdfy/agent-cli 0.2.48 → 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 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.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
+
13
+ ## [0.2.49] - 2026-08-10
14
+
15
+ ### Fixed
16
+
17
+ - Action provider inference for legacy spot write id `execute_optimal_swap` (underscore form) now maps to the `trading` provider, matching `swap` and `execute-optimal-swap` for catalog discovery and run routing.
18
+
7
19
  ## [0.2.48] - 2026-08-09
8
20
 
9
21
  ### Added
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.48
43
+ ## What's new in v0.2.50
44
44
 
45
- - Regression coverage for Base USDC Robinhood ROAR `get_bridge_quote` params used by KOL watch direct-first routing.
46
- - See [CHANGELOG.md](./CHANGELOG.md) for older versions.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdfy/agent-cli",
3
- "version": "0.2.48",
3
+ "version": "0.2.50",
4
4
  "description": "Thirdfy Agent CLI for onboarding, governance preflight, execute-intent, and status polling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -42,6 +42,7 @@ function inferActionProvider(action) {
42
42
  const knownMap = {
43
43
  swap: 'trading',
44
44
  'execute-optimal-swap': 'trading',
45
+ execute_optimal_swap: 'trading',
45
46
  'get-best-trading-quote': 'trading',
46
47
  'dogeos-barkswap-get-quote': 'dogeos-barkswap',
47
48
  'dogeos-barkswap-execute-swap': 'dogeos-barkswap',
@@ -131,6 +132,17 @@ function inferActionProvider(action) {
131
132
  'get-curve-pool-details': 'curve',
132
133
  'deposit-curve-pool': 'curve',
133
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',
134
146
  'get-aegis-pools': 'aegis',
135
147
  'get-aegis-pool-state': 'aegis',
136
148
  'get-aegis-vault-state': 'aegis',
@@ -179,6 +191,7 @@ function inferActionProvider(action) {
179
191
  if (key.includes('aave')) return 'aave';
180
192
  if (key.includes('aegis')) return 'aegis';
181
193
  if (key.includes('curve')) return 'curve';
194
+ if (key.includes('uniswap')) return 'uniswap';
182
195
  if (key.includes('earn') || key.includes('yield') || key.includes('vault')) return 'earn';
183
196
  if (key.includes('bridge')) return 'bridge';
184
197
  if (key.includes('dogeos-barkswap')) return 'dogeos-barkswap';
@@ -260,9 +273,9 @@ function actionMatchesProvider(action, requestedProvider, allActions) {
260
273
  }
261
274
  if (requestedProvider.startsWith('dogeos')) return isProviderActionKey(action, requestedProvider);
262
275
  if (requestedProvider === 'earn') {
263
- 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);
264
277
  }
265
- 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') {
266
279
  const hasProtocolSpecificEarnRows = allActions.some((candidate) => getActionProviderWithInference(candidate) === requestedProvider);
267
280
  return (
268
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',