@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.
|
|
43
|
+
## What's new in v0.2.52
|
|
44
44
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
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
|
@@ -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
|
|
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
|
|
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;
|
|
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],
|