@thirdfy/agent-cli 0.1.28 → 0.1.32
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 +31 -0
- package/README.md +9 -9
- package/bin/thirdfy-agent.mjs +116 -16
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,37 @@ All notable changes to `@thirdfy/agent-cli` are documented here. The format is b
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.1.32] - 2026-05-08
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Earn partners (Vaults.fyi and Yield.xyz):** `thirdfy-agent actions --provider vaults-fyi|yield-xyz` returns catalog-aligned hints (`get_vaults_fyi_vaults` / `get_yield_xyz_opportunities`, generic Earn reads, `deposit_earn_position` / `withdraw_earn_position`). Provider inference and `--provider earn` filtering include these providers alongside Morpho and Curve.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Public docs (`docs/command-reference.md`, `docs/action-inventory-and-compatibility.md`, `docs/providers/index.md`) describe partner earn discovery and transaction-prep-first writes.
|
|
16
|
+
- **`--provider earn` hints:** Umbrella `readActions` lists Morpho and Curve discovery actions (`get_morpho_vaults`, `get_curve_pools`) together with partner reads so Earn hints stay symmetric across sub-providers.
|
|
17
|
+
|
|
18
|
+
## [0.1.31] - 2026-05-07
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **Swap amounts (self / build-tx / execute-intent):** When using `amountInHuman` + `tokenInDecimals`, prepared params now set canonical `amountIn` to the **human decimal** string (matching `amountInRaw` normalization). Previously `amountIn` incorrectly carried base-unit raw integers, which could mis-size swaps outside the managed-wallet execute path.
|
|
23
|
+
|
|
24
|
+
## [0.1.30] - 2026-05-07
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **Swap amounts:** `amountInRaw` now requires `tokenInDecimals`; without it the CLI errors instead of sending base units as a human `amountIn` (catastrophic mis-size risk).
|
|
29
|
+
- **Managed wallet payload:** Legacy `amountIn` is treated as a **human decimal** string (API contract); base units require `amountInRaw` + `tokenInDecimals`.
|
|
30
|
+
- **Managed wallet payload:** `legacy_human` path strips `tokenInDecimals` from the execute payload for consistency.
|
|
31
|
+
|
|
32
|
+
## [0.1.29] - 2026-05-07
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **Managed wallet swaps:** Normalize `amountInRaw` / `amountInHuman` into the single human `amountIn` field required by Thirdfy managed-wallet swap execution, preventing ambiguous amount payloads for `agent_wallet` agents.
|
|
37
|
+
|
|
7
38
|
## [0.1.28] - 2026-05-05
|
|
8
39
|
|
|
9
40
|
### Added
|
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ npx @thirdfy/agent-cli --help
|
|
|
40
40
|
|
|
41
41
|
## Release notes
|
|
42
42
|
|
|
43
|
-
Version history and highlights: [CHANGELOG.md](./CHANGELOG.md).
|
|
43
|
+
Version history and highlights: [CHANGELOG.md](./CHANGELOG.md). Highlights through **v0.1.31** include provider discovery parity, portfolio analytics, managed-wallet swap normalization, and **self/build-tx** swap human-decimal `amountIn` parity when using `amountInHuman` + `tokenInDecimals`.
|
|
44
44
|
|
|
45
45
|
**Maintainers — npm:** follow [docs/releasing.md](./docs/releasing.md). From a clone with gitignored `.env`, use `npm run publish:npm:local -- --dry-run` then `npm run publish:npm:local`. Or run `npm run release:npm` after exporting tokens in the shell. Never commit npm tokens — use [.env.example](./.env.example) as a template only.
|
|
46
46
|
|
|
@@ -53,8 +53,8 @@ export THIRDFY_OWNER_SESSION_TOKEN="..."
|
|
|
53
53
|
|
|
54
54
|
thirdfy-agent actions --agent-api-key "$AGENT_API_KEY" --json
|
|
55
55
|
thirdfy-agent profile init --profile personal --json
|
|
56
|
-
thirdfy-agent preflight --agent-api-key "$AGENT_API_KEY" --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000"}' --estimated-amount-usd 25 --json
|
|
57
|
-
thirdfy-agent run --agent-api-key "$AGENT_API_KEY" --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000"}' --estimated-amount-usd 25 --json
|
|
56
|
+
thirdfy-agent preflight --agent-api-key "$AGENT_API_KEY" --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6}' --estimated-amount-usd 25 --json
|
|
57
|
+
thirdfy-agent run --agent-api-key "$AGENT_API_KEY" --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6}' --estimated-amount-usd 25 --json
|
|
58
58
|
thirdfy-agent intent-status --intent-id "<intentId>" --json
|
|
59
59
|
```
|
|
60
60
|
|
|
@@ -189,7 +189,7 @@ thirdfy-agent run \
|
|
|
189
189
|
--run-mode self \
|
|
190
190
|
--broadcast \
|
|
191
191
|
--action swap \
|
|
192
|
-
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","chainId":8453}' \
|
|
192
|
+
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6,"chainId":8453}' \
|
|
193
193
|
--json
|
|
194
194
|
```
|
|
195
195
|
|
|
@@ -203,7 +203,7 @@ thirdfy-agent run \
|
|
|
203
203
|
--run-mode hybrid \
|
|
204
204
|
--hybrid-wallet-mode agent_wallet \
|
|
205
205
|
--action swap \
|
|
206
|
-
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","chainId":8453}' \
|
|
206
|
+
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6,"chainId":8453}' \
|
|
207
207
|
--estimated-amount-usd 25 \
|
|
208
208
|
--json
|
|
209
209
|
```
|
|
@@ -232,7 +232,7 @@ thirdfy-agent doctor self --json
|
|
|
232
232
|
For `--action swap`, CLI enforces an explicit amount unit contract:
|
|
233
233
|
|
|
234
234
|
- Provide exactly one of:
|
|
235
|
-
- `amountInRaw` (base units integer string), or
|
|
235
|
+
- `amountInRaw` + `tokenInDecimals` (base units integer string), or
|
|
236
236
|
- `amountInHuman` + `tokenInDecimals` (CLI converts to `amountInRaw`)
|
|
237
237
|
- Legacy `amountIn` is accepted only as raw integer compatibility input.
|
|
238
238
|
- Ambiguous payloads (both/none) fail with `AMOUNT_UNIT_AMBIGUOUS`.
|
|
@@ -242,7 +242,7 @@ Examples:
|
|
|
242
242
|
```bash
|
|
243
243
|
# Raw/base units
|
|
244
244
|
thirdfy-agent run --agent-api-key "$AGENT_API_KEY" --action swap \
|
|
245
|
-
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","chainId":8453}' --json
|
|
245
|
+
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6,"chainId":8453}' --json
|
|
246
246
|
|
|
247
247
|
# Human units + decimals
|
|
248
248
|
thirdfy-agent run --agent-api-key "$AGENT_API_KEY" --action swap \
|
|
@@ -335,7 +335,7 @@ thirdfy-agent delegation redeem \
|
|
|
335
335
|
--run-mode thirdfy \
|
|
336
336
|
--agent-api-key "$AGENT_API_KEY" \
|
|
337
337
|
--action swap \
|
|
338
|
-
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000"}' \
|
|
338
|
+
--params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6}' \
|
|
339
339
|
--estimated-amount-usd 5 \
|
|
340
340
|
--json
|
|
341
341
|
```
|
|
@@ -369,7 +369,7 @@ thirdfy-agent managed wallet init --auth-token "$THIRDFY_AUTH_TOKEN" --json
|
|
|
369
369
|
# or: --owner-session-token "$THIRDFY_OWNER_SESSION_TOKEN"
|
|
370
370
|
thirdfy-agent managed wallet grant --auth-token "$THIRDFY_AUTH_TOKEN" --agent-key "0xYOUR_AGENT_KEY" --token-address "0x..." --max-usd-per-day 250 --json
|
|
371
371
|
# or: --owner-session-token "$THIRDFY_OWNER_SESSION_TOKEN"
|
|
372
|
-
thirdfy-agent agent run --agent-api-key "$AGENT_API_KEY" --signer-method fanout_intent --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000"}' --json
|
|
372
|
+
thirdfy-agent agent run --agent-api-key "$AGENT_API_KEY" --signer-method fanout_intent --action swap --params '{"tokenIn":"0x...","tokenOut":"0x...","amountInRaw":"1000000","tokenInDecimals":6}' --json
|
|
373
373
|
```
|
|
374
374
|
|
|
375
375
|
### Signer command model (managed + BYOW)
|
package/bin/thirdfy-agent.mjs
CHANGED
|
@@ -530,10 +530,18 @@ function getTradingProviderHint(providerId) {
|
|
|
530
530
|
category: 'earn',
|
|
531
531
|
canonicalReadAction: 'get_earn_opportunities',
|
|
532
532
|
canonicalWriteAction: 'deposit_earn_position',
|
|
533
|
-
readActions: [
|
|
533
|
+
readActions: [
|
|
534
|
+
'get_earn_opportunities',
|
|
535
|
+
'get_earn_provider',
|
|
536
|
+
'get_earn_position',
|
|
537
|
+
'get_morpho_vaults',
|
|
538
|
+
'get_curve_pools',
|
|
539
|
+
'get_vaults_fyi_vaults',
|
|
540
|
+
'get_yield_xyz_opportunities',
|
|
541
|
+
],
|
|
534
542
|
orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position'],
|
|
535
543
|
laneCompatibility:
|
|
536
|
-
'Generic earn writes use deposit_earn_position / withdraw_earn_position on normal Thirdfy policy/delegation rails; routing selects Morpho
|
|
544
|
+
'Generic earn writes use deposit_earn_position / withdraw_earn_position on normal Thirdfy policy/delegation rails; routing selects Morpho, Curve, Vaults.fyi, or Yield.xyz adapters per provider/opportunity.',
|
|
537
545
|
};
|
|
538
546
|
}
|
|
539
547
|
if (provider === 'morpho') {
|
|
@@ -563,6 +571,34 @@ function getTradingProviderHint(providerId) {
|
|
|
563
571
|
'Curve EVM writes are limited to the validated Base mainnet 4pool adapter; other pools remain discovery-only until per-pool calldata is validated.',
|
|
564
572
|
};
|
|
565
573
|
}
|
|
574
|
+
if (provider === 'vaults-fyi') {
|
|
575
|
+
return {
|
|
576
|
+
provider,
|
|
577
|
+
category: 'earn',
|
|
578
|
+
canonicalReadAction: 'get_vaults_fyi_vaults',
|
|
579
|
+
canonicalWriteAction: 'deposit_earn_position',
|
|
580
|
+
readActions: ['get_vaults_fyi_vaults', 'get_earn_opportunities', 'get_earn_provider', 'get_earn_position'],
|
|
581
|
+
orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position'],
|
|
582
|
+
laneCompatibility:
|
|
583
|
+
'Vaults.fyi writes are transaction-prep first. Thirdfy validates partner payloads, chain/user context, and allowed targets before returning or submitting prepared calls.',
|
|
584
|
+
example:
|
|
585
|
+
'thirdfy-agent actions --provider vaults-fyi && thirdfy-agent preflight --action deposit_earn_position --params \'{"providerId":"vaults-fyi","opportunityId":"...","vaultAddress":"0x...","tokenAddress":"0x...","amount":"10","chainId":8453}\'',
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
if (provider === 'yield-xyz') {
|
|
589
|
+
return {
|
|
590
|
+
provider,
|
|
591
|
+
category: 'earn',
|
|
592
|
+
canonicalReadAction: 'get_yield_xyz_opportunities',
|
|
593
|
+
canonicalWriteAction: 'deposit_earn_position',
|
|
594
|
+
readActions: ['get_yield_xyz_opportunities', 'get_earn_opportunities', 'get_earn_provider', 'get_earn_position'],
|
|
595
|
+
orderManagementActions: ['deposit_earn_position', 'withdraw_earn_position'],
|
|
596
|
+
laneCompatibility:
|
|
597
|
+
'Yield.xyz writes are transaction-prep first. Thirdfy calls Yield.xyz directly and validates returned unsigned transactions with @yieldxyz/shield before signing or returning prepared calls.',
|
|
598
|
+
example:
|
|
599
|
+
'thirdfy-agent actions --provider yield-xyz && thirdfy-agent preflight --action deposit_earn_position --params \'{"providerId":"yield-xyz","opportunityId":"ethereum-eth-lido-staking","tokenAddress":"0x...","amount":"0.01","chainId":1}\'',
|
|
600
|
+
};
|
|
601
|
+
}
|
|
566
602
|
return null;
|
|
567
603
|
}
|
|
568
604
|
|
|
@@ -582,11 +618,15 @@ function getCachedProviderHintFromCapabilities(provider) {
|
|
|
582
618
|
earn: 'deposit_earn_position',
|
|
583
619
|
morpho: 'deposit_earn_position',
|
|
584
620
|
curve: 'deposit_earn_position',
|
|
621
|
+
'vaults-fyi': 'deposit_earn_position',
|
|
622
|
+
'yield-xyz': 'deposit_earn_position',
|
|
585
623
|
};
|
|
586
624
|
const canonicalReadActions = {
|
|
587
625
|
earn: 'get_earn_opportunities',
|
|
588
626
|
morpho: 'get_morpho_vaults',
|
|
589
627
|
curve: 'get_curve_pools',
|
|
628
|
+
'vaults-fyi': 'get_vaults_fyi_vaults',
|
|
629
|
+
'yield-xyz': 'get_yield_xyz_opportunities',
|
|
590
630
|
prediction: 'get_prediction_markets',
|
|
591
631
|
};
|
|
592
632
|
return {
|
|
@@ -683,6 +723,17 @@ function decimalToRawUnits(amountHuman, decimals) {
|
|
|
683
723
|
return (wholePart + fracPart).toString();
|
|
684
724
|
}
|
|
685
725
|
|
|
726
|
+
function rawUnitsToDecimalString(amountRaw, decimals) {
|
|
727
|
+
const raw = normalizeIntegerRawAmount(amountRaw);
|
|
728
|
+
const base = 10n ** BigInt(decimals);
|
|
729
|
+
const n = BigInt(raw);
|
|
730
|
+
const whole = n / base;
|
|
731
|
+
const frac = n % base;
|
|
732
|
+
if (decimals === 0 || frac === 0n) return whole.toString();
|
|
733
|
+
const fracText = frac.toString().padStart(decimals, '0').replace(/0+$/, '');
|
|
734
|
+
return `${whole.toString()}.${fracText}`;
|
|
735
|
+
}
|
|
736
|
+
|
|
686
737
|
function normalizeSwapAmountContract(params) {
|
|
687
738
|
const hasRaw = params.amountInRaw !== undefined && params.amountInRaw !== null && String(params.amountInRaw).trim() !== '';
|
|
688
739
|
const hasHuman = params.amountInHuman !== undefined && params.amountInHuman !== null && String(params.amountInHuman).trim() !== '';
|
|
@@ -703,34 +754,58 @@ function normalizeSwapAmountContract(params) {
|
|
|
703
754
|
|
|
704
755
|
if (hasRaw) {
|
|
705
756
|
const amountInRaw = normalizeIntegerRawAmount(params.amountInRaw);
|
|
757
|
+
const hasDecimals =
|
|
758
|
+
params.tokenInDecimals !== undefined &&
|
|
759
|
+
params.tokenInDecimals !== null &&
|
|
760
|
+
String(params.tokenInDecimals).trim() !== '';
|
|
761
|
+
if (!hasDecimals) {
|
|
762
|
+
throw createCliError(
|
|
763
|
+
'AMOUNT_UNIT_DECIMALS_REQUIRED',
|
|
764
|
+
'amountInRaw requires tokenInDecimals (integer 0-36).'
|
|
765
|
+
);
|
|
766
|
+
}
|
|
767
|
+
const decimals = Number(params.tokenInDecimals);
|
|
768
|
+
if (!Number.isInteger(decimals) || decimals < 0 || decimals > 36) {
|
|
769
|
+
throw createCliError(
|
|
770
|
+
'AMOUNT_UNIT_DECIMALS_REQUIRED',
|
|
771
|
+
'amountInRaw requires tokenInDecimals (integer 0-36).'
|
|
772
|
+
);
|
|
773
|
+
}
|
|
774
|
+
const amountInHuman = rawUnitsToDecimalString(amountInRaw, decimals);
|
|
706
775
|
return {
|
|
707
776
|
params: {
|
|
708
777
|
...params,
|
|
709
778
|
amountInRaw,
|
|
710
|
-
amountIn:
|
|
779
|
+
amountIn: amountInHuman,
|
|
780
|
+
tokenInDecimals: decimals,
|
|
711
781
|
},
|
|
712
782
|
swapInput: {
|
|
713
783
|
amountInRaw,
|
|
714
|
-
amountInHuman
|
|
715
|
-
tokenInDecimals:
|
|
784
|
+
amountInHuman,
|
|
785
|
+
tokenInDecimals: decimals,
|
|
716
786
|
unitSource: 'raw',
|
|
717
787
|
},
|
|
718
788
|
};
|
|
719
789
|
}
|
|
720
790
|
|
|
721
791
|
if (hasLegacy) {
|
|
722
|
-
const
|
|
792
|
+
const amountInHuman = String(params.amountIn).trim();
|
|
793
|
+
if (!/^\d+(\.\d+)?$/.test(amountInHuman)) {
|
|
794
|
+
throw createCliError(
|
|
795
|
+
'AMOUNT_UNIT_INVALID',
|
|
796
|
+
'Legacy swap amountIn must be a decimal token-unit string (example: "1.25"). For base units use amountInRaw with tokenInDecimals.'
|
|
797
|
+
);
|
|
798
|
+
}
|
|
723
799
|
return {
|
|
724
800
|
params: {
|
|
725
801
|
...params,
|
|
726
|
-
|
|
727
|
-
amountIn: amountInRaw,
|
|
802
|
+
amountIn: amountInHuman,
|
|
728
803
|
},
|
|
729
804
|
swapInput: {
|
|
730
|
-
amountInRaw,
|
|
731
|
-
amountInHuman
|
|
805
|
+
amountInRaw: null,
|
|
806
|
+
amountInHuman,
|
|
732
807
|
tokenInDecimals: null,
|
|
733
|
-
unitSource: '
|
|
808
|
+
unitSource: 'legacy_human',
|
|
734
809
|
},
|
|
735
810
|
};
|
|
736
811
|
}
|
|
@@ -759,7 +834,7 @@ function normalizeSwapAmountContract(params) {
|
|
|
759
834
|
...params,
|
|
760
835
|
amountInHuman,
|
|
761
836
|
amountInRaw,
|
|
762
|
-
amountIn:
|
|
837
|
+
amountIn: amountInHuman,
|
|
763
838
|
tokenInDecimals: decimals,
|
|
764
839
|
},
|
|
765
840
|
swapInput: {
|
|
@@ -3089,6 +3164,26 @@ function buildManagedExecutePayload(flags, options) {
|
|
|
3089
3164
|
const params = getPreparedParams(flags);
|
|
3090
3165
|
const managedParams = { ...params };
|
|
3091
3166
|
if (flags.__swapInput?.unitSource === 'human' && flags.__swapInput.amountInHuman) {
|
|
3167
|
+
delete managedParams.amountInRaw;
|
|
3168
|
+
delete managedParams.amountInHuman;
|
|
3169
|
+
delete managedParams.tokenInDecimals;
|
|
3170
|
+
managedParams.amountIn = flags.__swapInput.amountInHuman;
|
|
3171
|
+
} else if (flags.__swapInput?.unitSource === 'raw' && flags.__swapInput.amountInRaw) {
|
|
3172
|
+
const decimals = flags.__swapInput.tokenInDecimals;
|
|
3173
|
+
delete managedParams.amountInHuman;
|
|
3174
|
+
delete managedParams.amountInRaw;
|
|
3175
|
+
delete managedParams.tokenInDecimals;
|
|
3176
|
+
if (!Number.isInteger(decimals) || decimals < 0 || decimals > 36) {
|
|
3177
|
+
throw createCliError(
|
|
3178
|
+
'AMOUNT_UNIT_DECIMALS_REQUIRED',
|
|
3179
|
+
'amountInRaw requires tokenInDecimals (integer 0-36).'
|
|
3180
|
+
);
|
|
3181
|
+
}
|
|
3182
|
+
managedParams.amountIn = rawUnitsToDecimalString(flags.__swapInput.amountInRaw, decimals);
|
|
3183
|
+
} else if (flags.__swapInput?.unitSource === 'legacy_human' && flags.__swapInput.amountInHuman) {
|
|
3184
|
+
delete managedParams.amountInRaw;
|
|
3185
|
+
delete managedParams.amountInHuman;
|
|
3186
|
+
delete managedParams.tokenInDecimals;
|
|
3092
3187
|
managedParams.amountIn = flags.__swapInput.amountInHuman;
|
|
3093
3188
|
}
|
|
3094
3189
|
const payload = {
|
|
@@ -3379,6 +3474,9 @@ function inferActionProvider(action) {
|
|
|
3379
3474
|
'get-curve-pool-details': 'curve',
|
|
3380
3475
|
'deposit-curve-pool': 'curve',
|
|
3381
3476
|
'withdraw-curve-pool': 'curve',
|
|
3477
|
+
'get-vaults-fyi-vaults': 'vaults-fyi',
|
|
3478
|
+
'get-vaults-fyi-opportunities': 'vaults-fyi',
|
|
3479
|
+
'get-yield-xyz-opportunities': 'yield-xyz',
|
|
3382
3480
|
'get-prediction-markets': 'polymarket',
|
|
3383
3481
|
'get-prediction-market': 'polymarket',
|
|
3384
3482
|
'get-prediction-order-book': 'polymarket',
|
|
@@ -3394,9 +3492,11 @@ function inferActionProvider(action) {
|
|
|
3394
3492
|
if (knownMap[key]) return knownMap[key];
|
|
3395
3493
|
if (key.includes('hyperliquid')) return 'hyperliquid';
|
|
3396
3494
|
if (key.includes('polymarket') || key.includes('prediction')) return 'polymarket';
|
|
3495
|
+
if (key.includes('vaults-fyi')) return 'vaults-fyi';
|
|
3496
|
+
if (key.includes('yield-xyz')) return 'yield-xyz';
|
|
3397
3497
|
if (key.includes('morpho')) return 'morpho';
|
|
3398
3498
|
if (key.includes('curve')) return 'curve';
|
|
3399
|
-
if (key.includes('earn')) return 'earn';
|
|
3499
|
+
if (key.includes('earn') || key.includes('yield') || key.includes('vault')) return 'earn';
|
|
3400
3500
|
if (key.includes('bridge')) return 'bridge';
|
|
3401
3501
|
if (key.includes('dogeos-barkswap')) return 'dogeos-barkswap';
|
|
3402
3502
|
if (key.includes('dogeos-laika')) return 'dogeos-laika';
|
|
@@ -3445,9 +3545,9 @@ function actionMatchesProvider(action, requestedProvider, allActions) {
|
|
|
3445
3545
|
if (requestedProvider === 'bridge') return isProviderActionKey(action, 'bridge');
|
|
3446
3546
|
if (requestedProvider.startsWith('dogeos')) return isProviderActionKey(action, requestedProvider);
|
|
3447
3547
|
if (requestedProvider === 'earn') {
|
|
3448
|
-
return provider === 'earn' || provider === 'morpho' || provider === 'curve' || isEarnCatalogAction(action);
|
|
3548
|
+
return provider === 'earn' || provider === 'morpho' || provider === 'curve' || provider === 'vaults-fyi' || provider === 'yield-xyz' || isEarnCatalogAction(action);
|
|
3449
3549
|
}
|
|
3450
|
-
if (requestedProvider === 'morpho' || requestedProvider === 'curve') {
|
|
3550
|
+
if (requestedProvider === 'morpho' || requestedProvider === 'curve' || requestedProvider === 'vaults-fyi' || requestedProvider === 'yield-xyz') {
|
|
3451
3551
|
const hasProtocolSpecificEarnRows = allActions.some((candidate) => getActionProviderWithInference(candidate) === requestedProvider);
|
|
3452
3552
|
return isProviderActionKey(action, requestedProvider) || (!hasProtocolSpecificEarnRows && isEarnCatalogAction(action));
|
|
3453
3553
|
}
|
|
@@ -4133,7 +4233,7 @@ Global flags:
|
|
|
4133
4233
|
--profile <name> personal | builder | network
|
|
4134
4234
|
--env <file> load env vars from file
|
|
4135
4235
|
--timeout <ms> request timeout
|
|
4136
|
-
--params <json> for swap:
|
|
4236
|
+
--params <json> for swap: amountInRaw + tokenInDecimals, or amountInHuman + tokenInDecimals, or legacy human amountIn (decimal string)
|
|
4137
4237
|
--broadcast with run --run-mode self, sign and broadcast using OWS
|
|
4138
4238
|
--user-did <did> required for managed wallet server execution paths
|
|
4139
4239
|
--allow-wallet-mismatch bypass strict funded-wallet vs execution-wallet guard
|