wayfinder-paths 0.1.23__py3-none-any.whl → 0.1.25__py3-none-any.whl

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.

Potentially problematic release.


This version of wayfinder-paths might be problematic. Click here for more details.

Files changed (124) hide show
  1. wayfinder_paths/__init__.py +2 -0
  2. wayfinder_paths/adapters/balance_adapter/adapter.py +250 -0
  3. wayfinder_paths/adapters/balance_adapter/manifest.yaml +8 -0
  4. wayfinder_paths/adapters/balance_adapter/test_adapter.py +0 -11
  5. wayfinder_paths/adapters/boros_adapter/__init__.py +17 -0
  6. wayfinder_paths/adapters/boros_adapter/adapter.py +1574 -0
  7. wayfinder_paths/adapters/boros_adapter/client.py +476 -0
  8. wayfinder_paths/adapters/boros_adapter/manifest.yaml +10 -0
  9. wayfinder_paths/adapters/boros_adapter/parsers.py +88 -0
  10. wayfinder_paths/adapters/boros_adapter/test_adapter.py +460 -0
  11. wayfinder_paths/adapters/boros_adapter/test_golden.py +156 -0
  12. wayfinder_paths/adapters/boros_adapter/types.py +70 -0
  13. wayfinder_paths/adapters/boros_adapter/utils.py +85 -0
  14. wayfinder_paths/adapters/brap_adapter/adapter.py +1 -1
  15. wayfinder_paths/adapters/brap_adapter/manifest.yaml +9 -0
  16. wayfinder_paths/adapters/hyperlend_adapter/adapter.py +161 -26
  17. wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml +9 -0
  18. wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py +77 -13
  19. wayfinder_paths/adapters/hyperliquid_adapter/__init__.py +2 -9
  20. wayfinder_paths/adapters/hyperliquid_adapter/adapter.py +585 -61
  21. wayfinder_paths/adapters/hyperliquid_adapter/executor.py +47 -68
  22. wayfinder_paths/adapters/hyperliquid_adapter/manifest.yaml +14 -0
  23. wayfinder_paths/adapters/hyperliquid_adapter/paired_filler.py +2 -3
  24. wayfinder_paths/adapters/hyperliquid_adapter/test_adapter.py +17 -21
  25. wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py +3 -6
  26. wayfinder_paths/adapters/hyperliquid_adapter/test_executor.py +4 -8
  27. wayfinder_paths/adapters/hyperliquid_adapter/test_utils.py +2 -2
  28. wayfinder_paths/adapters/ledger_adapter/manifest.yaml +7 -0
  29. wayfinder_paths/adapters/ledger_adapter/test_adapter.py +1 -2
  30. wayfinder_paths/adapters/moonwell_adapter/adapter.py +592 -400
  31. wayfinder_paths/adapters/moonwell_adapter/manifest.yaml +14 -0
  32. wayfinder_paths/adapters/moonwell_adapter/test_adapter.py +126 -219
  33. wayfinder_paths/adapters/multicall_adapter/__init__.py +7 -0
  34. wayfinder_paths/adapters/multicall_adapter/adapter.py +166 -0
  35. wayfinder_paths/adapters/multicall_adapter/manifest.yaml +5 -0
  36. wayfinder_paths/adapters/multicall_adapter/test_adapter.py +97 -0
  37. wayfinder_paths/adapters/pendle_adapter/README.md +102 -0
  38. wayfinder_paths/adapters/pendle_adapter/__init__.py +7 -0
  39. wayfinder_paths/adapters/pendle_adapter/adapter.py +1992 -0
  40. wayfinder_paths/adapters/pendle_adapter/examples.json +11 -0
  41. wayfinder_paths/adapters/pendle_adapter/manifest.yaml +21 -0
  42. wayfinder_paths/adapters/pendle_adapter/test_adapter.py +666 -0
  43. wayfinder_paths/adapters/pool_adapter/manifest.yaml +6 -0
  44. wayfinder_paths/adapters/token_adapter/examples.json +0 -4
  45. wayfinder_paths/adapters/token_adapter/manifest.yaml +7 -0
  46. wayfinder_paths/conftest.py +24 -17
  47. wayfinder_paths/core/__init__.py +2 -0
  48. wayfinder_paths/core/adapters/BaseAdapter.py +0 -25
  49. wayfinder_paths/core/adapters/models.py +17 -7
  50. wayfinder_paths/core/clients/BRAPClient.py +1 -1
  51. wayfinder_paths/core/clients/TokenClient.py +47 -1
  52. wayfinder_paths/core/clients/WayfinderClient.py +1 -2
  53. wayfinder_paths/core/clients/protocols.py +21 -22
  54. wayfinder_paths/core/clients/test_ledger_client.py +448 -0
  55. wayfinder_paths/core/config.py +12 -0
  56. wayfinder_paths/core/constants/__init__.py +15 -0
  57. wayfinder_paths/core/constants/base.py +6 -1
  58. wayfinder_paths/core/constants/contracts.py +39 -26
  59. wayfinder_paths/core/constants/erc20_abi.py +0 -1
  60. wayfinder_paths/core/constants/hyperlend_abi.py +0 -4
  61. wayfinder_paths/core/constants/hyperliquid.py +16 -0
  62. wayfinder_paths/core/constants/moonwell_abi.py +0 -15
  63. wayfinder_paths/core/engine/manifest.py +66 -0
  64. wayfinder_paths/core/strategies/Strategy.py +0 -61
  65. wayfinder_paths/core/strategies/__init__.py +10 -1
  66. wayfinder_paths/core/strategies/opa_loop.py +167 -0
  67. wayfinder_paths/core/utils/test_transaction.py +289 -0
  68. wayfinder_paths/core/utils/transaction.py +44 -1
  69. wayfinder_paths/core/utils/web3.py +3 -0
  70. wayfinder_paths/mcp/__init__.py +5 -0
  71. wayfinder_paths/mcp/preview.py +185 -0
  72. wayfinder_paths/mcp/scripting.py +84 -0
  73. wayfinder_paths/mcp/server.py +52 -0
  74. wayfinder_paths/mcp/state/profile_store.py +195 -0
  75. wayfinder_paths/mcp/state/store.py +89 -0
  76. wayfinder_paths/mcp/test_scripting.py +267 -0
  77. wayfinder_paths/mcp/tools/__init__.py +0 -0
  78. wayfinder_paths/mcp/tools/balances.py +290 -0
  79. wayfinder_paths/mcp/tools/discovery.py +158 -0
  80. wayfinder_paths/mcp/tools/execute.py +770 -0
  81. wayfinder_paths/mcp/tools/hyperliquid.py +931 -0
  82. wayfinder_paths/mcp/tools/quotes.py +288 -0
  83. wayfinder_paths/mcp/tools/run_script.py +286 -0
  84. wayfinder_paths/mcp/tools/strategies.py +188 -0
  85. wayfinder_paths/mcp/tools/tokens.py +46 -0
  86. wayfinder_paths/mcp/tools/wallets.py +354 -0
  87. wayfinder_paths/mcp/utils.py +129 -0
  88. wayfinder_paths/policies/hyperliquid.py +1 -1
  89. wayfinder_paths/policies/lifi.py +18 -0
  90. wayfinder_paths/policies/util.py +8 -2
  91. wayfinder_paths/strategies/basis_trading_strategy/strategy.py +28 -119
  92. wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py +24 -53
  93. wayfinder_paths/strategies/boros_hype_strategy/__init__.py +3 -0
  94. wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py +450 -0
  95. wayfinder_paths/strategies/boros_hype_strategy/constants.py +255 -0
  96. wayfinder_paths/strategies/boros_hype_strategy/examples.json +37 -0
  97. wayfinder_paths/strategies/boros_hype_strategy/hyperevm_ops_mixin.py +114 -0
  98. wayfinder_paths/strategies/boros_hype_strategy/hyperliquid_ops_mixin.py +642 -0
  99. wayfinder_paths/strategies/boros_hype_strategy/manifest.yaml +36 -0
  100. wayfinder_paths/strategies/boros_hype_strategy/planner.py +460 -0
  101. wayfinder_paths/strategies/boros_hype_strategy/risk_ops_mixin.py +886 -0
  102. wayfinder_paths/strategies/boros_hype_strategy/snapshot_mixin.py +494 -0
  103. wayfinder_paths/strategies/boros_hype_strategy/strategy.py +1194 -0
  104. wayfinder_paths/strategies/boros_hype_strategy/test_planner_golden.py +374 -0
  105. wayfinder_paths/strategies/boros_hype_strategy/test_strategy.py +202 -0
  106. wayfinder_paths/strategies/boros_hype_strategy/types.py +365 -0
  107. wayfinder_paths/strategies/boros_hype_strategy/withdraw_mixin.py +997 -0
  108. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py +3 -12
  109. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py +7 -29
  110. wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py +63 -40
  111. wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/test_strategy.py +5 -15
  112. wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py +0 -34
  113. wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py +11 -34
  114. wayfinder_paths/tests/test_mcp_quote_swap.py +165 -0
  115. wayfinder_paths/tests/test_test_coverage.py +1 -4
  116. wayfinder_paths-0.1.25.dist-info/METADATA +377 -0
  117. wayfinder_paths-0.1.25.dist-info/RECORD +185 -0
  118. wayfinder_paths/scripts/create_strategy.py +0 -139
  119. wayfinder_paths/scripts/make_wallets.py +0 -142
  120. wayfinder_paths-0.1.23.dist-info/METADATA +0 -354
  121. wayfinder_paths-0.1.23.dist-info/RECORD +0 -120
  122. /wayfinder_paths/{scripts → mcp/state}/__init__.py +0 -0
  123. {wayfinder_paths-0.1.23.dist-info → wayfinder_paths-0.1.25.dist-info}/LICENSE +0 -0
  124. {wayfinder_paths-0.1.23.dist-info → wayfinder_paths-0.1.25.dist-info}/WHEEL +0 -0
@@ -0,0 +1,377 @@
1
+ Metadata-Version: 2.1
2
+ Name: wayfinder-paths
3
+ Version: 0.1.25
4
+ Summary: Wayfinder Path: strategies and adapters
5
+ Author: Wayfinder
6
+ Author-email: dev@wayfinder.ai
7
+ Requires-Python: >=3.12,<4.0
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Requires-Dist: aiocache (>=0.12.3,<0.13.0)
11
+ Requires-Dist: aiohttp (>=3.13.0,<4.0.0)
12
+ Requires-Dist: eth-account (>=0.13.7,<0.14.0)
13
+ Requires-Dist: httpx (>=0.28.1,<0.29.0)
14
+ Requires-Dist: hyperliquid-felix
15
+ Requires-Dist: loguru (>=0.7.3,<0.8.0)
16
+ Requires-Dist: numpy (>=1.26.0,<2.0.0)
17
+ Requires-Dist: pandas (>=2.2.0,<3.0.0)
18
+ Requires-Dist: pydantic (>=2.11.9,<3.0.0)
19
+ Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
20
+ Requires-Dist: web3 (>=7.13.0,<8.0.0)
21
+ Description-Content-Type: text/markdown
22
+
23
+ # Wayfinder Paths SDK
24
+
25
+ [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/)
26
+ [![PyPI](https://img.shields.io/pypi/v/wayfinder-paths.svg)](https://pypi.org/project/wayfinder-paths/)
27
+ [![Discord](https://img.shields.io/badge/discord-join-7289da.svg)](https://discord.gg/fUVwGMXjm3)
28
+
29
+ **An open-source SDK for building and managing automated DeFi strategies.** Use it locally to deposit into, monitor, rebalance, and exit strategies across multiple chains and protocols. Powered by the [Wayfinder API](https://wayfinder.ai).
30
+
31
+ ## What is Wayfinder Paths?
32
+
33
+ Wayfinder Paths is an SDK that lets you:
34
+
35
+ - **Enter and exit DeFi strategies** - Deposit funds, let strategies auto-rebalance, withdraw when ready
36
+ - **Build custom trading paths** - Create your own adapters and strategies for any protocol
37
+ - **Use Claude as your DeFi co-pilot** - With MCP (Model Context Protocol) integration, Claude can execute swaps, check balances, place perp orders, and manage your positions conversationally
38
+
39
+ Think of it as programmable DeFi infrastructure that connects your wallets to yield strategies, perpetual exchanges, lending protocols, and cross-chain bridges.
40
+
41
+ ## Getting Your Wayfinder API Key
42
+
43
+ **You need a Wayfinder API key to use this SDK.** The API provides token resolution, cross-chain routing, balance queries, and more.
44
+
45
+ 1. Go to [wayfinder.ai](https://wayfinder.ai)
46
+ 2. Create an account or log in
47
+ 3. Navigate to your account settings to generate an API key
48
+ 4. Add it to your `config.json` under `system.api_key`
49
+
50
+ ## Quick Start
51
+
52
+ ```bash
53
+ # Clone the repository
54
+ git clone https://github.com/WayfinderFoundation/wayfinder-paths.git
55
+ cd wayfinder-paths
56
+
57
+ # One-command setup (installs Poetry + deps, prompts for your Wayfinder API key, updates .mcp.json)
58
+ python3 scripts/setup.py
59
+
60
+ # Optional: create a strategy-specific wallet
61
+ poetry run python scripts/make_wallets.py --label stablecoin_yield_strategy
62
+
63
+ # Check strategy status
64
+ poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --action status --config config.json
65
+
66
+ # Deposit into a strategy
67
+ poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --action deposit \
68
+ --main-token-amount 100 --gas-token-amount 0.01 --config config.json
69
+ ```
70
+
71
+ ## Claude MCP Integration
72
+
73
+ **Turn Claude into an on-chain trading and DeFi engine.** The SDK includes an MCP server that gives Claude direct access to:
74
+
75
+ - **Wallet balances** across all supported chains
76
+ - **Token swaps** via the BRAP cross-chain router
77
+ - **Hyperliquid perpetuals** - market data, orders, leverage, withdrawals
78
+ - **Strategy management** - analyze, snapshot, and query any strategy
79
+ - **Script execution** - run custom Python scripts from `.wayfinder_runs/`
80
+
81
+ ### Setting Up MCP with Claude Code
82
+
83
+ This repo includes a project-scoped Claude Code MCP config at `.mcp.json` (you'll be prompted to enable it).
84
+ If you prefer a global config instead, add:
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "wayfinder": {
90
+ "command": "poetry",
91
+ "args": ["run", "python", "-m", "wayfinder_paths.mcp.server"],
92
+ "cwd": "/path/to/wayfinder-paths"
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ ### Available MCP Tools
99
+
100
+ | Tool | Description |
101
+ |------|-------------|
102
+ | `discover` | List available adapters and strategies |
103
+ | `describe` | Get detailed info about any adapter or strategy |
104
+ | `wallets` | List or create local wallets |
105
+ | `tokens` | Resolve token metadata by ID or address |
106
+ | `balances` | Query token/pool balances across chains |
107
+ | `quote_swap` | Get swap quotes without executing |
108
+ | `execute` | Execute swaps, sends, and Hyperliquid deposits |
109
+ | `hyperliquid` | Read-only perp market data and user state |
110
+ | `hyperliquid_execute` | Place orders, update leverage, withdraw |
111
+ | `run_strategy` | Analyze strategies, get snapshots and policies |
112
+ | `run_script` | Execute local Python scripts safely |
113
+
114
+ ### Example Conversation with Claude
115
+
116
+ ```
117
+ You: What's my balance on Arbitrum?
118
+
119
+ Claude: [Uses balances tool to query your wallet]
120
+ Your Arbitrum wallet (0x81830...) holds:
121
+ - 1,245.32 USDC ($1,245.32)
122
+ - 0.42 ETH ($1,512.00)
123
+ - 15,000 ARB ($8,250.00)
124
+
125
+ You: Swap 500 USDC to ETH
126
+
127
+ Claude: [Uses quote_swap, then execute with your approval]
128
+ Swapped 500 USDC for 0.139 ETH via Uniswap V3
129
+ TX: 0xabc123...
130
+
131
+ You: Open a 2x long on BTC with $1000
132
+
133
+ Claude: [Uses hyperliquid_execute to place the order]
134
+ Opened BTC-PERP long position:
135
+ - Size: 0.0234 BTC (~$1,000 notional)
136
+ - Leverage: 2x
137
+ - Entry: $42,735.50
138
+ ```
139
+
140
+ ## Available Strategies
141
+
142
+ | Strategy | Description | Chain | Risk |
143
+ |----------|-------------|-------|------|
144
+ | **Stablecoin Yield** | USDC yield optimization across Base pools | Base | Low |
145
+ | **HyperLend Stable Yield** | Stablecoin rotation on HyperLend | HyperEVM | Medium |
146
+ | **Moonwell wstETH Loop** | Leveraged LST carry trade | Base | High |
147
+ | **Basis Trading** | Delta-neutral funding rate capture | Hyperliquid | High |
148
+ | **Boros HYPE** | Multi-leg HYPE yield with rate locking | Multi-chain | High |
149
+
150
+ ### Strategy Lifecycle
151
+
152
+ ```python
153
+ from wayfinder_paths.core.strategies.Strategy import Strategy, StatusDict, StatusTuple
154
+
155
+ class MyStrategy(Strategy):
156
+ name = "My Strategy"
157
+
158
+ def __init__(self, config=None, **kwargs):
159
+ super().__init__(config, **kwargs)
160
+ balance_adapter = BalanceAdapter(config, **kwargs)
161
+ self.balance_adapter = balance_adapter
162
+
163
+ async def deposit(self, main_token_amount=0.0, gas_token_amount=0.0) -> StatusTuple:
164
+ """Move funds from main wallet into strategy wallet."""
165
+ return (True, "Deposited successfully")
166
+
167
+ async def update(self) -> StatusTuple:
168
+ """Rebalance or optimize positions."""
169
+ return (True, "Updated successfully")
170
+
171
+ async def exit(self, **kwargs) -> StatusTuple:
172
+ """Transfer funds from strategy wallet back to main wallet."""
173
+ return (True, "Exited successfully")
174
+
175
+ async def _status(self) -> StatusDict:
176
+ """Report current state."""
177
+ return {
178
+ "portfolio_value": 0.0,
179
+ "net_deposit": 0.0,
180
+ "strategy_status": {"message": "healthy"},
181
+ "gas_available": 0.0,
182
+ "gassed_up": True,
183
+ }
184
+ ```
185
+
186
+ ## Available Adapters
187
+
188
+ | Adapter | Purpose | External Protocol |
189
+ |---------|---------|-------------------|
190
+ | **BalanceAdapter** | Wallet balances, cross-wallet transfers | - |
191
+ | **BRAPAdapter** | Cross-chain swaps and bridges | Wayfinder BRAP Router |
192
+ | **BorosAdapter** | Fixed-rate lending positions | Boros Protocol |
193
+ | **HyperliquidAdapter** | Perps, spot, deposits, withdrawals | Hyperliquid DEX |
194
+ | **HyperlendAdapter** | Stablecoin lending | HyperLend Protocol |
195
+ | **MoonwellAdapter** | Lending/borrowing on Base | Moonwell Protocol |
196
+ | **PendleAdapter** | PT/YT discovery + Hosted SDK convert (swap/mint/roll/LP) | Pendle Protocol |
197
+ | **MulticallAdapter** | Batch contract calls | Multicall3 |
198
+ | **LedgerAdapter** | Transaction recording | - |
199
+ | **TokenAdapter** | Token metadata and prices | Wayfinder API |
200
+ | **PoolAdapter** | DeFi pool analytics | DeFi Llama |
201
+
202
+ ## Configuration
203
+
204
+ Create `config.json` in the project root:
205
+
206
+ ```json
207
+ {
208
+ "system": {
209
+ "api_base_url": "https://api.wayfinder.ai",
210
+ "api_key": "wk_your_api_key_here"
211
+ },
212
+ "strategy": {
213
+ "rpc_urls": {
214
+ "1": "https://eth.llamarpc.com",
215
+ "8453": "https://mainnet.base.org",
216
+ "42161": "https://arb1.arbitrum.io/rpc",
217
+ "999": "https://rpc.hyperliquid.xyz"
218
+ }
219
+ },
220
+ "wallets": [
221
+ {
222
+ "label": "main",
223
+ "address": "0x...",
224
+ "private_key_hex": "..."
225
+ }
226
+ ]
227
+ }
228
+ ```
229
+
230
+ ### Supported Chains
231
+
232
+ | Chain | ID | Code |
233
+ |-------|-----|------|
234
+ | Ethereum | 1 | `ethereum` |
235
+ | Base | 8453 | `base` |
236
+ | Arbitrum | 42161 | `arbitrum` |
237
+ | Polygon | 137 | `polygon` |
238
+ | BSC | 56 | `bsc` |
239
+ | HyperEVM | 999 | `hyperevm` |
240
+
241
+ ## Architecture
242
+
243
+ ```
244
+ ┌─────────────────────────────────────────────────────────────┐
245
+ │ Claude + MCP Server │
246
+ │ "Swap 100 USDC to ETH" → execute tool → transaction │
247
+ └─────────────────────────────────────────────────────────────┘
248
+
249
+
250
+ ┌─────────────────────────────────────────────────────────────┐
251
+ │ Strategy Layer │
252
+ │ Strategies orchestrate adapters to capture yield │
253
+ │ (deposit → update → update → ... → exit) │
254
+ └─────────────────────────────────────────────────────────────┘
255
+
256
+
257
+ ┌─────────────────────────────────────────────────────────────┐
258
+ │ Adapter Layer │
259
+ │ Protocol integrations: Hyperliquid, Moonwell, Boros, etc. │
260
+ │ All methods return (success: bool, data: Any) tuples │
261
+ └─────────────────────────────────────────────────────────────┘
262
+
263
+
264
+ ┌─────────────────────────────────────────────────────────────┐
265
+ │ Client Layer │
266
+ │ TokenClient, BRAPClient, LedgerClient │
267
+ │ Authenticated via X-API-KEY header │
268
+ └─────────────────────────────────────────────────────────────┘
269
+
270
+
271
+ ┌─────────────────────────────────────────────────────────────┐
272
+ │ Network Layer │
273
+ │ Wayfinder API • Chain RPCs • Protocol APIs │
274
+ └─────────────────────────────────────────────────────────────┘
275
+ ```
276
+
277
+ ## CLI Reference
278
+
279
+ ```bash
280
+ # Check strategy status
281
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action status
282
+
283
+ # Deposit funds into strategy
284
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action deposit \
285
+ --main-token-amount 100 --gas-token-amount 0.01
286
+
287
+ # Run strategy update cycle
288
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action update
289
+
290
+ # Withdraw funds
291
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action withdraw
292
+
293
+ # Exit strategy (return all funds to main wallet)
294
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action exit
295
+
296
+ # Run continuously
297
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action run
298
+
299
+ # Partial liquidation
300
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action partial-liquidate --amount 50
301
+ ```
302
+
303
+ ## Contributing
304
+
305
+ We welcome contributions! You can add your own strategies and adapters to the SDK.
306
+
307
+ ### Adding a New Strategy
308
+
309
+ ```bash
310
+ # Use the convenience command
311
+ just create-strategy "My Strategy Name"
312
+
313
+ # Or copy the template manually
314
+ cp -r wayfinder_paths/templates/strategy wayfinder_paths/strategies/my_strategy
315
+ ```
316
+
317
+ Implement the required methods:
318
+ - `deposit()` - Move funds from main wallet to strategy
319
+ - `update()` - Rebalance/optimize positions
320
+ - `exit()` - Return funds to main wallet
321
+ - `_status()` - Report current state
322
+
323
+ ### Adding a New Adapter
324
+
325
+ ```bash
326
+ cp -r wayfinder_paths/templates/adapter wayfinder_paths/adapters/my_adapter
327
+ ```
328
+
329
+ Implement protocol-specific methods, returning `(success, data)` tuples.
330
+
331
+ ### Contribution Process
332
+
333
+ The process for contributing new paths to the official SDK is still being defined. For now:
334
+
335
+ 1. Fork the repository
336
+ 2. Create your adapter or strategy
337
+ 3. Add tests
338
+ 4. Open a PR with a description of what your path does
339
+
340
+ Join our [Discord](https://discord.gg/fUVwGMXjm3) to discuss ideas and get help.
341
+
342
+ ## Testing
343
+
344
+ ```bash
345
+ # Generate test wallets
346
+ just create-wallets
347
+
348
+ # Run all tests
349
+ poetry run pytest -v
350
+
351
+ # Run smoke tests
352
+ poetry run pytest -k smoke -v
353
+
354
+ # Run adapter tests
355
+ poetry run pytest wayfinder_paths/adapters/ -v
356
+
357
+ # Run with coverage
358
+ poetry run pytest --cov=wayfinder_paths -v
359
+ ```
360
+
361
+ ## Security
362
+
363
+ - **Never commit `config.json`** - it contains private keys
364
+ - **Use test wallets** for development
365
+ - **DRY_RUN mode** - Set `DRY_RUN=1` env var to simulate executions
366
+ - **Idempotency** - MCP tools use idempotency keys to prevent duplicate transactions
367
+
368
+ ## Community
369
+
370
+ - [Discord](https://discord.gg/fUVwGMXjm3) - Get help, share strategies, discuss DeFi
371
+ - [GitHub Issues](https://github.com/WayfinderFoundation/wayfinder-paths/issues) - Report bugs, request features
372
+ - [Wayfinder](https://wayfinder.ai) - Get your API key
373
+
374
+ ## License
375
+
376
+ MIT License - see [LICENSE](LICENSE) for details.
377
+
@@ -0,0 +1,185 @@
1
+ wayfinder_paths/__init__.py,sha256=Qi-4SLA6bBSwQgxwcFcZhgaCj7K2DN69_e4ipLxQMHo,278
2
+ wayfinder_paths/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ wayfinder_paths/adapters/balance_adapter/README.md,sha256=xek-ZekUPDCUEiyciSYHOp3Z_QA1bgEW1RzXvwTySVE,2363
4
+ wayfinder_paths/adapters/balance_adapter/adapter.py,sha256=__gVhz2agQjjptPuXG4vuJEnLvqDHLYnDoBLAvGxyQc,16897
5
+ wayfinder_paths/adapters/balance_adapter/examples.json,sha256=3R1M4B_VsIy29viAuFT9nQbnQShWl8ZbU-rnSNWUW9U,129
6
+ wayfinder_paths/adapters/balance_adapter/manifest.yaml,sha256=w6Fb9Bui1QKjcGpRX1kzwe8GNGjQXAH6GtLp-D_Ez_Q,218
7
+ wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=BQWQWun9En4-10QUTSheSfp4bxypqDWWv1BjuHneu3w,2794
8
+ wayfinder_paths/adapters/boros_adapter/__init__.py,sha256=y32d5WyoTzrqmnk3i1Vi13iMAVoJiWO2mO9YEpg5pGg,337
9
+ wayfinder_paths/adapters/boros_adapter/adapter.py,sha256=FnT2nA9g0cEOG4gzV7RaTo5XRMLKd0jMdqj7GqJfdqM,61696
10
+ wayfinder_paths/adapters/boros_adapter/client.py,sha256=t-Tt9_HOEA3OfhRmkQg9-sf2BYkDQGD11yRdOht4bUM,15215
11
+ wayfinder_paths/adapters/boros_adapter/manifest.yaml,sha256=PGrhgw6A4Pf6Kqg9vGGL8QvL479K9yM0tpP3zhObxX4,240
12
+ wayfinder_paths/adapters/boros_adapter/parsers.py,sha256=r_KtWeLhfIyfTgWZB0CUMGv8N4higojsTsLMhuFP7NM,2792
13
+ wayfinder_paths/adapters/boros_adapter/test_adapter.py,sha256=xicpa62i2TiumlsYibxfKAw4NDQB5vA1GaAliusSYRo,16145
14
+ wayfinder_paths/adapters/boros_adapter/test_golden.py,sha256=9pQSYy8FdGfo38-jJPzvM9DlVK3OjuRQizEBsExp3FA,4895
15
+ wayfinder_paths/adapters/boros_adapter/types.py,sha256=SJN1cUUZF9-_HZaa8TIsLbsOvJ6I-btqjhvjXk_D3cM,1613
16
+ wayfinder_paths/adapters/boros_adapter/utils.py,sha256=fQY0AclEJbxFU4QHFcDsyRkEFPr2C3t6Mwp1FwtHfoU,2259
17
+ wayfinder_paths/adapters/brap_adapter/README.md,sha256=ZzVTYvVmQ-J8PakH2iy_oBKT1YwTEhkOtluCpZFcK1Q,1466
18
+ wayfinder_paths/adapters/brap_adapter/__init__.py,sha256=Hx4JW1tDijXS5YQhVliE0syw1RD1YKO2MM37wN_to9M,60
19
+ wayfinder_paths/adapters/brap_adapter/adapter.py,sha256=1zc8zFDD44ybdmbWuFjae3k7EclCh8hbsqfqaaKtZQ0,10873
20
+ wayfinder_paths/adapters/brap_adapter/examples.json,sha256=XBr7JqtSLyECs9XywZ6oJ9OXJ0TaPPpwCzHcqQZOxCg,1994
21
+ wayfinder_paths/adapters/brap_adapter/manifest.yaml,sha256=nerZ7ShLAuV-ebTby0LJjOrxDEkp37Ku7wW78ZOX1Yw,209
22
+ wayfinder_paths/adapters/brap_adapter/test_adapter.py,sha256=YZq6I0S895ZKPbwv_TbdPjwlIfRVIRf-DVqQhitIvqc,2924
23
+ wayfinder_paths/adapters/hyperlend_adapter/__init__.py,sha256=IDgYOx5rF2Zd8DjZ_VzmZc6EUGS34SfIVQ_M1PdZ0YQ,112
24
+ wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=tqnpZXFEETSvE7Xa9WY2OcosYE-ahKiJ9ScUys3FBAY,11870
25
+ wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml,sha256=M0xfk0KPpILSo-XtFgwFKIy-HZHunzBnXakh6yU_R_I,238
26
+ wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=QYpXpxSw-aG20DXPbNowPZs8Z9BnACa-OO8mc0EaR9I,13677
27
+ wayfinder_paths/adapters/hyperliquid_adapter/__init__.py,sha256=8kOiGrmGvk8BR16wHxVo1qaWwAQSTQbkcJg0cW46RCE,288
28
+ wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=icbhuoF3Kcawuz5P-b_UUFPKulE0WzsFKWUfBKlgDDU,43793
29
+ wayfinder_paths/adapters/hyperliquid_adapter/executor.py,sha256=wjTFzjwdwbahu86tEiUH3u8GLr8rDInVUABJyJwS6JQ,15970
30
+ wayfinder_paths/adapters/hyperliquid_adapter/manifest.yaml,sha256=lwADwkooWOivqIUEAxiVTdHBYuchHyuQR8y40K_AUgw,315
31
+ wayfinder_paths/adapters/hyperliquid_adapter/paired_filler.py,sha256=V_cIiNJYER6E3r8hYLTy1zR2YuO_GBKhn9rP5dkPaVs,35156
32
+ wayfinder_paths/adapters/hyperliquid_adapter/test_adapter.py,sha256=D9YDrlyCMJfk7h2mOig7ebKgZkxCbt481UeJbF-0KNg,3767
33
+ wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py,sha256=uKNNGx7r1Fg9eD3hVGUIGC4OUF0Un-Y4e89whYaJVG4,5786
34
+ wayfinder_paths/adapters/hyperliquid_adapter/test_executor.py,sha256=9VzTGtGjjfUOt5dpahOFvttP2Oyla6tpQopmWANL89g,3525
35
+ wayfinder_paths/adapters/hyperliquid_adapter/test_utils.py,sha256=n2_vLEqwDTQDweiDW3an6K9ceTweJMT96oi56J5ebfs,5596
36
+ wayfinder_paths/adapters/hyperliquid_adapter/utils.py,sha256=J0UcXR60BHLj147qMZHocrcvIQ71GhGx90u3JDZ3gg8,3838
37
+ wayfinder_paths/adapters/ledger_adapter/README.md,sha256=hxBXJg_wfH7gDTYqUL6yXkDARKTb1zdyYYIIxbvQMDQ,2574
38
+ wayfinder_paths/adapters/ledger_adapter/__init__.py,sha256=CrFEf6_7I27g5CQPPOAFYzQvm33IpdkbQHCKiDdwiWk,64
39
+ wayfinder_paths/adapters/ledger_adapter/adapter.py,sha256=Ei0Dhj7nSki67ZF8MQP-WJbXVhNtaOlYasgzndtKcO4,6661
40
+ wayfinder_paths/adapters/ledger_adapter/examples.json,sha256=DdqTSe4vnBrfIycQVQQ_JZom7fBGHbL7MR4ppK9ljCY,3936
41
+ wayfinder_paths/adapters/ledger_adapter/manifest.yaml,sha256=-WTDO7jk8aPmd788w4DJN86kgvU5FK6MBU6cWOu_Oqo,173
42
+ wayfinder_paths/adapters/ledger_adapter/test_adapter.py,sha256=B9yfpWPwwo0F8KfQWckP8FeFcN7yAq2zRBn9eFUFUA8,6818
43
+ wayfinder_paths/adapters/moonwell_adapter/README.md,sha256=A-xKZo4ssLh1-uJqlp9ihMrnlZ8hB-KW2e0MRH4pnhU,3036
44
+ wayfinder_paths/adapters/moonwell_adapter/__init__.py,sha256=5wMDRIM6z0QbSqKEqaV8tUGkpwrAABqz1T0hP4YJbMg,109
45
+ wayfinder_paths/adapters/moonwell_adapter/adapter.py,sha256=ERiJWrlVZhPVCvKwpWrvsBdenDxCx2CEo5JvcTeatvM,44244
46
+ wayfinder_paths/adapters/moonwell_adapter/manifest.yaml,sha256=A84L59KjeHJi116Kw0PDRytKsI4piOL16x7HwSOMtzY,331
47
+ wayfinder_paths/adapters/moonwell_adapter/test_adapter.py,sha256=5Q62lnAoBq1AfpXUVdossU1ClejNPsiDxIqOzrrfqCI,22566
48
+ wayfinder_paths/adapters/multicall_adapter/__init__.py,sha256=NoPCKUidjkiYjMtdIcPM3LObiEORRfaqxv1JQLD7Xa0,139
49
+ wayfinder_paths/adapters/multicall_adapter/adapter.py,sha256=DJ1hiToTZnS9E9qv343N6qQfNYCd22vYbfb_-9XTA1I,5742
50
+ wayfinder_paths/adapters/multicall_adapter/manifest.yaml,sha256=z8cGp0gNdWELgEvNy_3_KQUCvFIGNGkZQwYqAsaGc0c,145
51
+ wayfinder_paths/adapters/multicall_adapter/test_adapter.py,sha256=g3ywwEAv5kb9xBDEM42YfKa9eFPGw4NnPYyFVpBkvgU,3265
52
+ wayfinder_paths/adapters/pendle_adapter/README.md,sha256=iPcaNx6U7jRWrTW6B89iHwo9wG3MzaxdwOnVpX2vy9I,4011
53
+ wayfinder_paths/adapters/pendle_adapter/__init__.py,sha256=cvxoKzRFaya_GtxrYTnLmZVLxEo8BEmrmkOK6uLyppg,127
54
+ wayfinder_paths/adapters/pendle_adapter/adapter.py,sha256=ENIlhr5D4UJm121jN5UDSdhLeH-AN715LtkBCFK9h_Q,73575
55
+ wayfinder_paths/adapters/pendle_adapter/examples.json,sha256=MnEudDmf4fbe7EAK-2m5PT-6voMl7hlZah0r-wjs1Tw,1132
56
+ wayfinder_paths/adapters/pendle_adapter/manifest.yaml,sha256=nnbV5ukA-Ewd9pL2v2rhfPqLQEwLgeuYl-44UyVdG1I,617
57
+ wayfinder_paths/adapters/pendle_adapter/test_adapter.py,sha256=67Gf89pBnpzhoGmQVo3HnbbAgaEKRNl_JdhLOmDIBPw,24406
58
+ wayfinder_paths/adapters/pool_adapter/README.md,sha256=qxXNcTgxQ4-YEDC-ZHiQ5wTpV_76t-vK58vyDh0IBgU,1282
59
+ wayfinder_paths/adapters/pool_adapter/__init__.py,sha256=LTbty0SuACoj3X5yeGESDUdtJQt8zyB2Loq8BuEp7rE,60
60
+ wayfinder_paths/adapters/pool_adapter/adapter.py,sha256=NHxtFOt10l320AClQUWchUVrQp0ivST25UOczS7aYeQ,1298
61
+ wayfinder_paths/adapters/pool_adapter/examples.json,sha256=NW-7J6_zXxky8uMDRym3jJaPP8hZLEiytQ3WKoZEP54,855
62
+ wayfinder_paths/adapters/pool_adapter/manifest.yaml,sha256=RN6g_elSdROAK3o-XYEFIinbPTbZ1u8MVkm1U2xHW54,145
63
+ wayfinder_paths/adapters/pool_adapter/test_adapter.py,sha256=GGocdzXbeZMYXeVy7SOkY_ifC719rwYdqTIwQoxRJSo,2262
64
+ wayfinder_paths/adapters/token_adapter/README.md,sha256=JlZhT6MK3gYQ73uJU-DOrEx5eMZXvqceqrawJqNdygI,1623
65
+ wayfinder_paths/adapters/token_adapter/__init__.py,sha256=nEmxrvffEygn3iKH3cZTNLkhnUUhlUAEtshmrFRAjq8,62
66
+ wayfinder_paths/adapters/token_adapter/adapter.py,sha256=WmNU8-qQoR1DjNMBKBLI7Lv8iWRdS4MItl7LBOyjI1c,3257
67
+ wayfinder_paths/adapters/token_adapter/examples.json,sha256=t4BYKxpkz4zASO91TbjZIaQ3msApNY5ayZtZZrkgdCs,2362
68
+ wayfinder_paths/adapters/token_adapter/manifest.yaml,sha256=KR6msMamsFW6aMlpYeYeguuA_4ppj1h4_JAiS8EJYpc,162
69
+ wayfinder_paths/adapters/token_adapter/test_adapter.py,sha256=jDenD0BYbbb_xE3jKrA84io8iVEcvjk5SExf6UjQ410,3980
70
+ wayfinder_paths/conftest.py,sha256=LaCl5qQ5K41O2U7jPI4Tx4EYR7EWj05ZvNeQqYDVKqI,853
71
+ wayfinder_paths/core/__init__.py,sha256=q7wKxLea5W_Z9qjYtq_nVYgLMhnYjLxarxDKmPsr3QY,305
72
+ wayfinder_paths/core/adapters/BaseAdapter.py,sha256=QlpZswyBTeE6cI9nEvAQvxEUCER7htSZMMHyuy_T7lE,418
73
+ wayfinder_paths/core/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ wayfinder_paths/core/adapters/models.py,sha256=_d4ir3iHGbkTUyLOK6babxocYcjlBX9rXh6udPiN4Y0,1363
75
+ wayfinder_paths/core/analytics/__init__.py,sha256=d_upri6nw5-oUdhOCb45P-ojAqpb0JBGFMBdqFGBI8s,209
76
+ wayfinder_paths/core/analytics/bootstrap.py,sha256=npbLf9Jzx0tl4fHVumeUID5NnBwyHnjbQdIg7Ol-s-Y,1194
77
+ wayfinder_paths/core/analytics/stats.py,sha256=5JzhHEHivXuK5xvQa9BWgkpRD7WwVvQdJDGuILlS7Pc,1161
78
+ wayfinder_paths/core/analytics/test_analytics.py,sha256=COyUP9UBhE6471z9lQA2yM51SNKXZz0i3bkBztcilbs,4193
79
+ wayfinder_paths/core/clients/BRAPClient.py,sha256=xeWmWyennpLS2kF0X2GB009Kxpv_E2QEOMc7H4yDfUI,3340
80
+ wayfinder_paths/core/clients/ClientManager.py,sha256=rNGGcqU9Y7gdnlkNlXtWUW2EB8W50I7i-sxQVc8IZT8,2179
81
+ wayfinder_paths/core/clients/HyperlendClient.py,sha256=_10Hrbo3M4VbW3Nwlt1_rJMrz955u_AIanQotG0fwE8,5508
82
+ wayfinder_paths/core/clients/LedgerClient.py,sha256=9PtXW2o_WZGfvu7wIwBuCPzXYex2B1rsMDN70tKgJeA,11713
83
+ wayfinder_paths/core/clients/PoolClient.py,sha256=ij0aVwV73UiUndOmBrtpg1BhalSIr_Ab78pP7xQQHzY,4266
84
+ wayfinder_paths/core/clients/TokenClient.py,sha256=TRTKg4z0JFdNGjEaQ4UZlBAj1OS4eAyRwnEdUj2g5Yw,5008
85
+ wayfinder_paths/core/clients/WayfinderClient.py,sha256=y7S535kakRP7pFqYEqUXygdW5hv-FMmtxds9ZL476jQ,3423
86
+ wayfinder_paths/core/clients/__init__.py,sha256=8JbfbYKnVlXwEp9gbFKMY41xh-kQ9BTfC_QLZ9VhYS8,951
87
+ wayfinder_paths/core/clients/protocols.py,sha256=kNNyUssPkZVc1f82YdkF8deUyWBMKKLUYygBcHZ4JmA,5180
88
+ wayfinder_paths/core/clients/test_ledger_client.py,sha256=RE-IJ3MfbR9AGEeFhPduYhJRqwLoMaKDuHRf_yq0AHo,15228
89
+ wayfinder_paths/core/config.py,sha256=JZLFdxCMj5naJb3SAoieM--w7UNDrHP0YEMpz1Mmdps,1396
90
+ wayfinder_paths/core/constants/__init__.py,sha256=C5kXQnCPrzhjJrXxUUbnulBLgWK80A8y1znQaSQzPwU,2152
91
+ wayfinder_paths/core/constants/base.py,sha256=4jN3Qr8rBK2ZRAlFmRFeCyRPqwQwQufZx5E5eM8ispo,940
92
+ wayfinder_paths/core/constants/chains.py,sha256=DA03zVjukRGndBB2EROaxvc1uW8bt2550ySh9Cn2J34,729
93
+ wayfinder_paths/core/constants/contracts.py,sha256=R0Moh8Pm5cmDwEVpGytNS2tWjFNzVaRD0ZABeL4AXhU,2336
94
+ wayfinder_paths/core/constants/erc20_abi.py,sha256=o84ShHG1j59i1fkmG7qgBVo1bqdG5_5GRE1ptNlPBWU,2656
95
+ wayfinder_paths/core/constants/hyperlend_abi.py,sha256=rcXnfYvw6Np40lNK1SVTXVknoapu0HbP1DHAR6g4x9A,3893
96
+ wayfinder_paths/core/constants/hyperliquid.py,sha256=54RkDtsuvfm8LtE2W7cUkrxeSQZ7cyWhkL6lBBikHuo,565
97
+ wayfinder_paths/core/constants/moonwell_abi.py,sha256=IERwnQKUG7yyKiICXcfybt8LgPCD1sze95dA2vJalLQ,10940
98
+ wayfinder_paths/core/constants/tokens.py,sha256=lkpZXRJcnygcNKVvrIBgnUozPvcbpHT-BkqqpEG9Xug,326
99
+ wayfinder_paths/core/engine/manifest.py,sha256=-bFBClnIx21FeAq4p-p3nLvzOuZ5OoGVofSbO1W6n80,2201
100
+ wayfinder_paths/core/strategies/Strategy.py,sha256=knf2H22YpjwPpqwDP7CTglKPFsa_aIISaviHCqBgXbQ,3743
101
+ wayfinder_paths/core/strategies/__init__.py,sha256=5Hq9nJf1jS9oZuo0lRAOQw3hazZJg2jRmGCKtJF-1cs,247
102
+ wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
103
+ wayfinder_paths/core/strategies/descriptors.py,sha256=2Olef0VWols1CWb-TWcb5pil2rztC0jP6F_Trpv2hIw,1958
104
+ wayfinder_paths/core/strategies/opa_loop.py,sha256=Eoy4uUA2YSo9najJFUwS4wVykPKJ5A_i-Sf6XnwNsv0,5483
105
+ wayfinder_paths/core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ wayfinder_paths/core/utils/evm_helpers.py,sha256=m_h9eMjcMW5a3Di6PGkpZOwpZkZ-tVdwiLsTZqFJacE,3809
107
+ wayfinder_paths/core/utils/test_transaction.py,sha256=0GtXROAWmll-zgbIquO9TeqcClhhCmJJNFg1XoYAYIc,10613
108
+ wayfinder_paths/core/utils/tokens.py,sha256=bSrfu1_58SKcc75j5u01mp1upKWdnMllbo2xUMCxDAs,4328
109
+ wayfinder_paths/core/utils/transaction.py,sha256=2xgX7sZGDB3UzDh1IUrAcuU2FBdahtxyrWtlvcwx07o,8236
110
+ wayfinder_paths/core/utils/wallets.py,sha256=ccCQ128lDShO265AFMOCdijzPLucWe-Neg5wjLrOsnk,1948
111
+ wayfinder_paths/core/utils/web3.py,sha256=KeoUjnVXR8ZQLqjd1ZH4fMowRGSBfykirZFWfiICfN8,2071
112
+ wayfinder_paths/mcp/__init__.py,sha256=ldUqhq_wbWe7-fJB9UWVFyh1rAoeqwD0TuYu0oSw5Ec,172
113
+ wayfinder_paths/mcp/preview.py,sha256=qZmylK3T5h5efJXnjx0Vvm-O5toI61uyug68eFajaMA,6452
114
+ wayfinder_paths/mcp/scripting.py,sha256=fRT-x3wL1kQXkVBl3KUALeAzLhJNhK3v6K7x2RrqGTg,2344
115
+ wayfinder_paths/mcp/server.py,sha256=DfiJHc8ZH5xRSdKyIRW2ZS8z865AI2yU3hpflhYL4c0,1516
116
+ wayfinder_paths/mcp/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ wayfinder_paths/mcp/state/profile_store.py,sha256=wth_EkIFiVV1Uw7s6na7TzsZLmqa63KY7Ip5-y7-Yuk,6235
118
+ wayfinder_paths/mcp/state/store.py,sha256=BPKwnVJUMAodMiFpXVSoLm0tQinb4GCH_fg--YbFM_g,2797
119
+ wayfinder_paths/mcp/test_scripting.py,sha256=X-Fyy3lkpqOQjU_g5G9OaAOeliVqOJmh3u_PA-ogGe0,9314
120
+ wayfinder_paths/mcp/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ wayfinder_paths/mcp/tools/balances.py,sha256=UcpSOZfa3Iz4MfU7GEiPV0SET_pEmI2XXAfASIt02cY,10225
122
+ wayfinder_paths/mcp/tools/discovery.py,sha256=tFcRc7EF95Cy1ClVwNJ-fmOp_hNzX-GjchoZwrZjOKw,5595
123
+ wayfinder_paths/mcp/tools/execute.py,sha256=ks_ZaRvvojU7JucsVaZy2FgPhAOnALJcGKKvswq9kt4,26185
124
+ wayfinder_paths/mcp/tools/hyperliquid.py,sha256=10GZOtyKlNVW31ZT7S7-SkG-18C7GOg2OZAsds7L3s0,31845
125
+ wayfinder_paths/mcp/tools/quotes.py,sha256=zYEJc4ik6yBCggBARRoRJHIS1vUL6QPQ10vtd6Ag0Nw,9359
126
+ wayfinder_paths/mcp/tools/run_script.py,sha256=RF83GyhXZlXEIcK24vS9bHDDm8Q1scQktBrxWBp6WX8,7887
127
+ wayfinder_paths/mcp/tools/strategies.py,sha256=WSqVWXjvrOsS9X4sffI42lUf2h4QWRWjRQ0t9aHSifQ,6746
128
+ wayfinder_paths/mcp/tools/tokens.py,sha256=AtFv39e6mJ9WeH1ufZ1U0KW6CUbUi2HtVAoiBbnD39A,1535
129
+ wayfinder_paths/mcp/tools/wallets.py,sha256=Xk63su9jUq-tgzejjlwBHyJfKCfxEaW6sMumvjdl6Mc,11840
130
+ wayfinder_paths/mcp/utils.py,sha256=eVRsaEm6FLAGtzt9fG5wrt3jAn6DvqOc_bn_wZDbpuk,3613
131
+ wayfinder_paths/policies/enso.py,sha256=JdmjzGBrIBsqq0nTQN5sbWbcGk5wktoxqAIl9NIvHV0,433
132
+ wayfinder_paths/policies/erc20.py,sha256=K5PQCUivBrU2nYmIdsIARzRiFy36Rijver-RJnaxNT8,960
133
+ wayfinder_paths/policies/evm.py,sha256=8fJpjAl6XVxr51sVMw_VkWmIaI_lj2T7qrLcR8_sWgs,713
134
+ wayfinder_paths/policies/hyper_evm.py,sha256=WNbU2JjWa236HY3AxeQLO6ofFmKoU0bFboTt8KWZVmY,641
135
+ wayfinder_paths/policies/hyperlend.py,sha256=70Zf133lL0Q1HudaZlFEcqINeAYkU5SEncONDMYrb-o,375
136
+ wayfinder_paths/policies/hyperliquid.py,sha256=940rzpLVbIdn8RmFrEKbe0uYcRC2JVDBiKxh6CZiF6Y,795
137
+ wayfinder_paths/policies/lifi.py,sha256=0n9KgXGZ0qyOaEGe_fQquo7PnDBJ8Jfih0uCI7JX7KY,645
138
+ wayfinder_paths/policies/moonwell.py,sha256=aWp3ZgB_NWWuJuIo6idGEiCQN3DRqigXm5ButDRzjAM,1622
139
+ wayfinder_paths/policies/prjx.py,sha256=ncXOGXTkSrzPgtw2VhIC-ep3Il5-V4o9kRX_etIOEEM,702
140
+ wayfinder_paths/policies/util.py,sha256=0g5zQlHfFqvq8ijQwmpe4a58ZPx25ehuZ9CrWY3sS-8,1018
141
+ wayfinder_paths/run_strategy.py,sha256=n2beh0jxi88jNr0nhijz6lP4O77F9j10zFnjQyjugyU,5036
142
+ wayfinder_paths/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
+ wayfinder_paths/strategies/basis_trading_strategy/README.md,sha256=kZtG5NVVZwWsuz65n2SrwPMUGow9xsfIRplbHI0ARgE,3540
144
+ wayfinder_paths/strategies/basis_trading_strategy/__init__.py,sha256=kVcehFjBUtoi5xzSHI56jtDghsy0nYl6XIE6BI1l6aI,79
145
+ wayfinder_paths/strategies/basis_trading_strategy/constants.py,sha256=dYQn_297CB1x9whic8YEMdEig0vibclDGCasjJL10mI,122
146
+ wayfinder_paths/strategies/basis_trading_strategy/examples.json,sha256=q2wlAH8Gr-LUJeamKzWL1EtChL3TBWe0HQ4_P-VCdqQ,429
147
+ wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py,sha256=F324ILz9w6uT7fkOVUa7gltp2LMEyGBlw3tz-ANcff8,37634
148
+ wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=egBxpzymYbjPwhBTSvg9ejzW2_ViLtqcKt_ZKIHi53Y,142980
149
+ wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=BnjgsYEDkqnG5Qm6zmyOXzgwnunB95UPtr7HLopU9tA,34126
150
+ wayfinder_paths/strategies/basis_trading_strategy/types.py,sha256=xTkLYqwvS0meMdlRAvIKNH9AANRyz63bQSYFSxLI6n4,740
151
+ wayfinder_paths/strategies/boros_hype_strategy/__init__.py,sha256=OZlSnGYwlMUsNWWBMIqA7glI5oX9XDQvlgEZ_Ph2uDY,73
152
+ wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py,sha256=dXeaRRdT-2FKtB76OL-vyBjEHpATE8zUJpEU7lc3N24,17710
153
+ wayfinder_paths/strategies/boros_hype_strategy/constants.py,sha256=OZqZiQltpbCmKwBBIrKGe0h6nUzl1USPQwiLv_p6p80,11361
154
+ wayfinder_paths/strategies/boros_hype_strategy/examples.json,sha256=_d3WauNJs6DTaS3oIhLn94lKn9_TtK26bdmS3bOrU9A,638
155
+ wayfinder_paths/strategies/boros_hype_strategy/hyperevm_ops_mixin.py,sha256=UZ7a2AWvGvLCVshsKlfmpuQTpkne0MHYgNdgXFDLc2w,4300
156
+ wayfinder_paths/strategies/boros_hype_strategy/hyperliquid_ops_mixin.py,sha256=aLqjRQvJjqLbNf3UhS62l9yPHQ0nxkq1shjFhCfAiXY,25109
157
+ wayfinder_paths/strategies/boros_hype_strategy/manifest.yaml,sha256=Tb7lfXD1261qNhCupRJgHzqEoDRcP0dCkZ4B_PsTXv8,1763
158
+ wayfinder_paths/strategies/boros_hype_strategy/planner.py,sha256=9tckKI_y2OGkwsNEmkKnly8jWC2L39KICZ3zS_U6vTM,17890
159
+ wayfinder_paths/strategies/boros_hype_strategy/risk_ops_mixin.py,sha256=coc3xTZe8hjEEkdjAgKSilcoy39zvTOwxltUjWLsAE8,39294
160
+ wayfinder_paths/strategies/boros_hype_strategy/snapshot_mixin.py,sha256=UtciP6cwFW0I_x_j8CIpFaS9Jvf4CZeNXV3XpZgK5k8,20685
161
+ wayfinder_paths/strategies/boros_hype_strategy/strategy.py,sha256=oJAJfCmFbx_8xrjuyl-HI63E5nprQbiorSwqlhUXoWw,49331
162
+ wayfinder_paths/strategies/boros_hype_strategy/test_planner_golden.py,sha256=IIxEDzAyf1ErjErgCMajKtv4Wv4D5u2-Uzn9l4Bns88,10565
163
+ wayfinder_paths/strategies/boros_hype_strategy/test_strategy.py,sha256=hNOXCI8LNdWHjXSx0yVvx8lsf9rWC2ku-ECEwZ_7LVY,6729
164
+ wayfinder_paths/strategies/boros_hype_strategy/types.py,sha256=qjtGgZs78siy8Yok8YoNTbf3z18qnimRFOyBaOXKjfU,12274
165
+ wayfinder_paths/strategies/boros_hype_strategy/withdraw_mixin.py,sha256=kQEuDWSU-4UVeaXCC6SJw3FZkb2yI8iJaCxd0_txHcQ,47447
166
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=cqCmcWIPiOpCwt-82dnOgHnN64ZUITITR3jqIUYDXmA,2906
167
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=GbVo2p6QiG6M7Ma5s671lw8G9JwnMl1h0n9mrtt-ZS8,164
168
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=z9Baa4hH8XRUE4e1kxlpwIY0TfaFABy_GofHWgJUNCY,92790
169
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=2jvtqUKUXVRhXo90ByaPpEjUZ8CT41wn9q7Bwhi-J3I,14457
170
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md,sha256=PZVbRXfoMNNrZUZY3YOWBW9A-6By7vi-IBBDIfvcdNc,3594
171
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/examples.json,sha256=kgNRdZcqne8XTm-Y8Hv1a1pdajRQsey4Qhd5La-iWss,164
172
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py,sha256=WucYr1JFRUfbfnwYrrrh3P2aR-QhtMpTRtJqiPnOZCg,152762
173
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/test_strategy.py,sha256=G92MbYJGSiRxh3TfrIxhq1RB9_wWXM36C0_1l8EyKsI,37171
174
+ wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=efyLd2AJHL_JtHF3eZsnHk2wF4NWzEnuLKRA2vOpLtE,2844
175
+ wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
176
+ wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=7TJ_U4vRTCcTWIg9BPS3OOfySeoyBpDwHhKaQkhNHP0,71801
177
+ wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=G9TnCjqO5Vd9FnXZmLpJZOavHdj_EPsAJIjwUUOUtP8,17182
178
+ wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
+ wayfinder_paths/tests/test_mcp_quote_swap.py,sha256=kRYLfAD5WZ4myqNdFxZ9wZ0NMDFgZpriCIkPQA1B1L8,5475
180
+ wayfinder_paths/tests/test_test_coverage.py,sha256=ZU0zhlm1PllvQkrnESPtEVdr-VcFDT6EtPiPRreLukk,7118
181
+ wayfinder_paths/tests/test_utils.py,sha256=VzweYVaO20deZOwR8RKGYFrDnKTW0gZLm3dBwZiMK28,1015
182
+ wayfinder_paths-0.1.25.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
183
+ wayfinder_paths-0.1.25.dist-info/METADATA,sha256=_E182S_vewy08kpbsq6XKsJ_CnpWP_6wyQBrUGBieZY,14422
184
+ wayfinder_paths-0.1.25.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
185
+ wayfinder_paths-0.1.25.dist-info/RECORD,,