@thirdfy/agent-cli 0.2.50 → 0.2.52

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.52] - 2026-08-18
8
+
9
+ ### Added
10
+
11
+ - Yield.xyz `claim_earn_rewards` / `claim-earn-rewards` earn-family routing, 180s write timeout, and provider hints (`providerId=yield-xyz`; no amount; optional `passthrough` from `get_earn_position.claimableRewards`). Pairs with Thirdfy API **3.14.2** and `thirdfy-mcp` **0.0.100**.
12
+
13
+ ## [0.2.51] - 2026-08-16
14
+
15
+ ### Fixed
16
+
17
+ - Earn writes `deposit_earn_position` / `withdraw_earn_position` use the 180s long HTTP timeout (same as Lighter onboarding). Default 30s aborted live Morpho deposits on Hermes (`CLI_UNHANDLED_ERROR` / "This operation was aborted"). Pairs with `thirdfy-mcp` **0.0.99**.
18
+
7
19
  ## [0.2.50] - 2026-08-14
8
20
 
9
21
  ### Added
package/README.md CHANGED
@@ -40,10 +40,10 @@ Run without global install:
40
40
  npx @thirdfy/agent-cli --help
41
41
  ```
42
42
 
43
- ## What's new in v0.2.50
43
+ ## What's new in v0.2.52
44
44
 
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`.
45
+ - Yield.xyz incentive claims use `claim_earn_rewards` (no amount; optional `passthrough` from `get_earn_position.claimableRewards`).
46
+ - Claim writes wait up to 180s, same as earn deposit and withdraw.
47
47
  - See [CHANGELOG.md](./CHANGELOG.md) and GitHub Releases for older versions.
48
48
 
49
49
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdfy/agent-cli",
3
- "version": "0.2.50",
3
+ "version": "0.2.52",
4
4
  "description": "Thirdfy Agent CLI for onboarding, governance preflight, execute-intent, and status polling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4,6 +4,9 @@ const LONG_RUNNING_ACTIONS = new Set([
4
4
  'complete_lighter_onboarding',
5
5
  'setup_lighter_api_key',
6
6
  'register_lighter_api_key',
7
+ 'deposit_earn_position',
8
+ 'withdraw_earn_position',
9
+ 'claim_earn_rewards',
7
10
  ]);
8
11
 
9
12
  function normalizeActionId(action) {
@@ -13,7 +16,7 @@ function normalizeActionId(action) {
13
16
  .toLowerCase();
14
17
  }
15
18
 
16
- /** Longer HTTP timeout for Lighter onboarding writes that poll CCTP credit or Ethereum changePubKey. */
19
+ /** Longer HTTP timeout for Lighter onboarding and Morpho/Aave earn writes (approve + vault call). */
17
20
  export function resolveActionTimeoutMs(action, baseTimeoutMs = DEFAULT_TIMEOUT_MS) {
18
21
  const base = Number.isFinite(baseTimeoutMs) && baseTimeoutMs > 0 ? baseTimeoutMs : DEFAULT_TIMEOUT_MS;
19
22
  if (!LONG_RUNNING_ACTIONS.has(normalizeActionId(action))) return base;
@@ -116,6 +116,7 @@ function inferActionProvider(action) {
116
116
  'get-earn-position': 'earn',
117
117
  'deposit-earn-position': 'earn',
118
118
  'withdraw-earn-position': 'earn',
119
+ 'claim-earn-rewards': 'earn',
119
120
  'get-capyfi-markets': 'capyfi',
120
121
  'get-fx-supported-assets': 'fx',
121
122
  'quote-fx-swap': 'fx',
@@ -215,7 +216,11 @@ function isEarnCatalogAction(action) {
215
216
 
216
217
  function isGenericEarnWriteAction(action) {
217
218
  const actionKey = rowActionKey(action);
218
- return actionKey === 'deposit_earn_position' || actionKey === 'withdraw_earn_position';
219
+ return (
220
+ actionKey === 'deposit_earn_position' ||
221
+ actionKey === 'withdraw_earn_position' ||
222
+ actionKey === 'claim_earn_rewards'
223
+ );
219
224
  }
220
225
 
221
226
  function isGenericEarnWriteForProvider(action, requestedProvider) {
@@ -366,9 +366,9 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
366
366
  'get-vaults-fyi-vaults',
367
367
  'get_yield_xyz_opportunities',
368
368
  ],
369
- orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position'],
369
+ orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position', 'claim_earn_rewards'],
370
370
  laneCompatibility:
371
- 'Generic earn writes use deposit_earn_position / withdraw_earn_position on normal Thirdfy policy/delegation rails; routing selects Morpho, Aave, Curve, Vaults.fyi, or Yield.xyz adapters per provider/opportunity.',
371
+ 'Generic earn writes use deposit_earn_position / withdraw_earn_position on normal Thirdfy policy/delegation rails; Yield.xyz incentive claims use claim_earn_rewards (no amount; optional passthrough from get_earn_position.claimableRewards). Routing selects Morpho, Aave, Curve, Vaults.fyi, or Yield.xyz adapters per provider/opportunity.',
372
372
  };
373
373
  }
374
374
  if (provider === 'capyfi') {
@@ -522,9 +522,9 @@ export function createProviderHints({ getNegotiatedCapabilitiesCache }) {
522
522
  canonicalReadAction: 'get_yield_xyz_opportunities',
523
523
  canonicalWriteAction: 'deposit_earn_position',
524
524
  readActions: ['get_yield_xyz_opportunities', 'get_earning_opportunities', 'get_earn_opportunities', 'get_earn_provider', 'get_earn_position'],
525
- orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position'],
525
+ orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position', 'claim_earn_rewards'],
526
526
  laneCompatibility:
527
- 'Yield.xyz writes are transaction-prep first. Always discover with get_yield_xyz_opportunities (or get_earning_opportunities) and pass the canonical opportunityId/yieldId. Thirdfy prepareDeposit calls GET /v1/yields/{yieldId} before enter/exit, then validates unsigned transactions with @yieldxyz/shield. Balances omit metadata.name; use yields_get / get_earn_position enrich for display names.',
527
+ 'Yield.xyz writes are transaction-prep first. Always discover with get_yield_xyz_opportunities (or get_earning_opportunities) and pass the canonical opportunityId/yieldId. Thirdfy prepareDeposit calls GET /v1/yields/{yieldId} before enter/exit, then validates unsigned transactions with @yieldxyz/shield. claim_earn_rewards claims pending CLAIM_REWARDS incentives (no amount; pass optional passthrough from get_earn_position.claimableRewards). Balances omit metadata.name; use yields_get / get_earn_position enrich for display names.',
528
528
  example:
529
529
  'thirdfy-agent run --action get_yield_xyz_opportunities --params \'{"chainId":8453,"asset":"USDC"}\' && thirdfy-agent preflight --action deposit_earn_position --params \'{"providerId":"yield-xyz","opportunityId":"<canonical-yieldId>","tokenAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10","chainId":8453}\'',
530
530
  supportedChains: [1, 10, 100, 130, 137, 42220, 8453, 42161, 4663],