@prktsol/prkt 1.0.0
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/.env.devnet.all-protocols.example +18 -0
- package/.env.devnet.autonomous.example +16 -0
- package/.env.devnet.jupiter.example +16 -0
- package/.env.devnet.kamino.example +17 -0
- package/.env.devnet.marinade.example +16 -0
- package/.env.devnet.orca.example +16 -0
- package/.env.devnet.raydium.example +17 -0
- package/.env.example +32 -0
- package/ARCHITECTURE.md +159 -0
- package/CLI.md +509 -0
- package/CLI_QUICKSTART.md +108 -0
- package/COMPATIBILITY.md +103 -0
- package/DEVNET_PROTOCOL_ADDRESSES.md +72 -0
- package/README.md +339 -0
- package/dist/agent/AgentManager.js +166 -0
- package/dist/agent/AgentRuntime.js +92 -0
- package/dist/agent/DecisionEngine.js +95 -0
- package/dist/agent/MockPriceFeed.js +13 -0
- package/dist/agent/intents/types.js +2 -0
- package/dist/agent/new-index.js +17 -0
- package/dist/agent/policyFactory.js +54 -0
- package/dist/agent/registry/AgentRegistry.js +16 -0
- package/dist/agent/runner/AgentRunner.js +266 -0
- package/dist/agent/strategies/MemoHeartbeatStrategy.js +15 -0
- package/dist/agent/strategies/SimpleScriptedTransferStrategy.js +27 -0
- package/dist/agent/strategies/TokenRebalancerStrategy.js +35 -0
- package/dist/agent/strategies/TreasuryDistributorStrategy.js +29 -0
- package/dist/agent/strategies/UniversalDeFiStrategy.js +19 -0
- package/dist/agent/types/AgentContext.js +2 -0
- package/dist/cli/index.js +1159 -0
- package/dist/cli/services/activityStore.js +42 -0
- package/dist/cli/services/agentRegistry.js +123 -0
- package/dist/cli/services/agentRuntime.js +55 -0
- package/dist/cli/services/storagePaths.js +64 -0
- package/dist/cli/services/strategyFactory.js +66 -0
- package/dist/cli/services/walletCrypto.js +120 -0
- package/dist/cli/services/walletRegistry.js +145 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/utils/completion.js +62 -0
- package/dist/cli/utils/output.js +44 -0
- package/dist/config/agentPolicies.js +37 -0
- package/dist/config/env.js +249 -0
- package/dist/config/policyPresets.js +105 -0
- package/dist/core/balances/BalanceService.js +34 -0
- package/dist/core/funding/DevnetFundingService.js +105 -0
- package/dist/core/idempotency/ExecutionIdempotencyGuard.js +100 -0
- package/dist/core/index.js +19 -0
- package/dist/core/rpc/RpcClient.js +45 -0
- package/dist/core/rpc/RpcFailoverClient.js +97 -0
- package/dist/core/tokens/TokenService.js +75 -0
- package/dist/core/transactions/PostTransactionVerifier.js +103 -0
- package/dist/core/transactions/TransactionService.js +104 -0
- package/dist/core/types/services.js +2 -0
- package/dist/core/wallet/WalletManager.js +120 -0
- package/dist/defi/DeFiCoordinator.js +93 -0
- package/dist/defi/DeFiExecutor.js +29 -0
- package/dist/defi/DeFiPolicyGuard.js +31 -0
- package/dist/defi/adapters/JupiterAdapter.js +25 -0
- package/dist/defi/adapters/KaminoAdapter.js +50 -0
- package/dist/defi/adapters/MarinadeAdapter.js +25 -0
- package/dist/defi/adapters/RaydiumAdapter.js +45 -0
- package/dist/defi/kamino/kaminoInstructionCompat.js +24 -0
- package/dist/defi/kamino/kaminoLiveConfig.js +60 -0
- package/dist/defi/kamino/loadKaminoMarketWithFallback.js +68 -0
- package/dist/defi/lp/LpInstructionBuilder.js +2 -0
- package/dist/defi/lp/RaydiumLpInstructionBuilder.js +100 -0
- package/dist/defi/lp/raydiumDevnetConfig.js +62 -0
- package/dist/defi/protocols.js +29 -0
- package/dist/defi/types.js +2 -0
- package/dist/defi/universal/UniversalDeFiOrchestrator.js +126 -0
- package/dist/defi/universal/adapters.js +73 -0
- package/dist/defi/universal/index.js +5 -0
- package/dist/defi/universal/liveExecutors.js +394 -0
- package/dist/defi/universal/types.js +2 -0
- package/dist/demo/scenarios/multiAgentDevnetScenario.js +170 -0
- package/dist/demo/scripts/runMultiAgentDevnetDemo.js +17 -0
- package/dist/dex/JupiterSwapClient.js +59 -0
- package/dist/dex/SwapExecutor.js +52 -0
- package/dist/index.js +22 -0
- package/dist/kora/KoraRpcClient.js +60 -0
- package/dist/kora/KoraSigner.js +57 -0
- package/dist/kora/gaslessDemo.js +18 -0
- package/dist/policy/PolicyGuard.js +158 -0
- package/dist/policy/emergencyLock.js +164 -0
- package/dist/policy/engine/PolicyEngine.js +237 -0
- package/dist/policy/errors.js +10 -0
- package/dist/policy/index.js +7 -0
- package/dist/policy/sandbox/SandboxExecutor.js +77 -0
- package/dist/policy/types/policy.js +2 -0
- package/dist/scripts/devnetFunding.js +28 -0
- package/dist/scripts/devnetWalletPreflight.js +16 -0
- package/dist/scripts/localnetCheck.js +27 -0
- package/dist/scripts/managedAgentWallet.js +81 -0
- package/dist/scripts/mode.js +6 -0
- package/dist/scripts/releaseReadiness.js +93 -0
- package/dist/scripts/runAgentUniversalDeFi.js +115 -0
- package/dist/scripts/runAutonomousAgentWalletDevnet.js +154 -0
- package/dist/scripts/runAutonomousPortfolioDevnet.js +390 -0
- package/dist/scripts/runBorrowStrategy.js +35 -0
- package/dist/scripts/runDeFiSuite.js +41 -0
- package/dist/scripts/runDemoRehearsal.js +111 -0
- package/dist/scripts/runDevnetWalletDemo.js +53 -0
- package/dist/scripts/runGaslessMemo.js +23 -0
- package/dist/scripts/runGaslessWalletDemo.js +60 -0
- package/dist/scripts/runKaminoDevnet.js +109 -0
- package/dist/scripts/runLpStrategy.js +32 -0
- package/dist/scripts/runMarinadeDevnet.js +97 -0
- package/dist/scripts/runOrcaLpDevnet.js +208 -0
- package/dist/scripts/runRaydiumLpDevnet.js +95 -0
- package/dist/scripts/runReleaseReadiness.js +22 -0
- package/dist/scripts/runStakeStrategy.js +33 -0
- package/dist/scripts/runStressTest.js +41 -0
- package/dist/scripts/runTradeLoop.js +53 -0
- package/dist/scripts/runUniversalDeFiDemo.js +84 -0
- package/dist/scripts/runYieldStrategy.js +33 -0
- package/dist/scripts/runtimeFactory.js +27 -0
- package/dist/scripts/shared.js +24 -0
- package/dist/scripts/simulateAttack.js +40 -0
- package/dist/scripts/simulateSwarm.js +106 -0
- package/dist/simulation/attack.js +30 -0
- package/dist/solana/programs.js +9 -0
- package/dist/spl/TokenWallet.js +65 -0
- package/dist/types/policy.js +2 -0
- package/dist/wallet/WalletManager.js +5 -0
- package/package.json +99 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=true
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=true
|
|
8
|
+
ENABLE_LIVE_KAMINO=true
|
|
9
|
+
ENABLE_LIVE_MARINADE=true
|
|
10
|
+
RAYDIUM_LP_CONFIG_PATH=raydium_lp.devnet.json
|
|
11
|
+
KAMINO_LIVE_CONFIG_PATH=kamino_live.json
|
|
12
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
13
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
14
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
15
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
16
|
+
# Requires both raydium_lp.devnet.json and kamino_live.json to be present and valid.
|
|
17
|
+
AGENT_PRIVATE_KEY=[]
|
|
18
|
+
DEVNET_TREASURY_PRIVATE_KEY=[]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
8
|
+
ENABLE_LIVE_KAMINO=true
|
|
9
|
+
ENABLE_LIVE_MARINADE=true
|
|
10
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
11
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
12
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
13
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
14
|
+
# Autonomous bounty demo generates its own wallet. If DEVNET_TREASURY_PRIVATE_KEY is set, it funds from your treasury wallet before falling back to airdrop.
|
|
15
|
+
AGENT_PRIVATE_KEY=[]
|
|
16
|
+
DEVNET_TREASURY_PRIVATE_KEY=[]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=true
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
8
|
+
ENABLE_LIVE_KAMINO=false
|
|
9
|
+
ENABLE_LIVE_MARINADE=false
|
|
10
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
11
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
12
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
13
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
14
|
+
# Jupiter devnet live path still depends on route/API availability and wallet funding.
|
|
15
|
+
AGENT_PRIVATE_KEY=[]
|
|
16
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
8
|
+
ENABLE_LIVE_KAMINO=true
|
|
9
|
+
ENABLE_LIVE_MARINADE=false
|
|
10
|
+
KAMINO_LIVE_CONFIG_PATH=kamino_live.json
|
|
11
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
12
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
13
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
14
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
15
|
+
# Requires kamino_live.json copied from kamino_live.example.json and filled with devnet values.
|
|
16
|
+
AGENT_PRIVATE_KEY=[]
|
|
17
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
8
|
+
ENABLE_LIVE_KAMINO=false
|
|
9
|
+
ENABLE_LIVE_MARINADE=true
|
|
10
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
11
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
12
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
13
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
14
|
+
# Use a funded devnet wallet or switch to REMOTE_SIGNER_*.
|
|
15
|
+
AGENT_PRIVATE_KEY=[]
|
|
16
|
+
DEVNET_TREASURY_PRIVATE_KEY=[]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
8
|
+
ENABLE_LIVE_KAMINO=false
|
|
9
|
+
ENABLE_LIVE_MARINADE=false
|
|
10
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
11
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
12
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
13
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
14
|
+
# Optional. If omitted, the Orca demo generates a fresh wallet. If DEVNET_TREASURY_PRIVATE_KEY is set, it funds from your treasury wallet before falling back to airdrop.
|
|
15
|
+
AGENT_PRIVATE_KEY=[]
|
|
16
|
+
DEVNET_TREASURY_PRIVATE_KEY=[]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
3
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
4
|
+
KORA_MOCK_MODE=true
|
|
5
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
6
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
7
|
+
ENABLE_LIVE_RAYDIUM_LP=true
|
|
8
|
+
ENABLE_LIVE_KAMINO=false
|
|
9
|
+
ENABLE_LIVE_MARINADE=false
|
|
10
|
+
RAYDIUM_LP_CONFIG_PATH=raydium_lp.devnet.json
|
|
11
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
12
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
13
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
14
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
15
|
+
# Requires raydium_lp.devnet.json copied from raydium_lp.devnet.example.json and filled with a real devnet pool/account set.
|
|
16
|
+
AGENT_PRIVATE_KEY=[]
|
|
17
|
+
|
package/.env.example
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
SOLANA_RPC_URL=https://api.devnet.solana.com
|
|
2
|
+
# Optional fallback RPC endpoint. Used by RpcFailoverClient when the primary is unreachable.
|
|
3
|
+
# SOLANA_RPC_FALLBACK_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
|
|
4
|
+
KORA_RPC_URL=https://kora.devnet.lazorkit.com
|
|
5
|
+
KORA_MOCK_MODE=true
|
|
6
|
+
JUPITER_API_BASE_URL=https://lite-api.jup.ag
|
|
7
|
+
ENABLE_LIVE_SWAP_PATH=false
|
|
8
|
+
ENABLE_LIVE_RAYDIUM_LP=false
|
|
9
|
+
ENABLE_LIVE_KAMINO=false
|
|
10
|
+
# Set true for the autonomous agent wallet bounty demo and direct Marinade staking demo.
|
|
11
|
+
ENABLE_LIVE_MARINADE=false
|
|
12
|
+
# KAMINO_LIVE_CONFIG_PATH=kamino_live.json
|
|
13
|
+
UNIVERSAL_DEFI_LIVE_FIRST=true
|
|
14
|
+
# Preferred production path: remote transaction signer with bearer auth.
|
|
15
|
+
# REMOTE_SIGNER_URL=https://signer.example.internal/sign
|
|
16
|
+
# REMOTE_SIGNER_BEARER_TOKEN=change-me
|
|
17
|
+
# REMOTE_SIGNER_PUBKEY=YourSignerPublicKeyHere
|
|
18
|
+
# Devnet USDC mint (default for this repository's devnet flows).
|
|
19
|
+
USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
|
|
20
|
+
EXTRA_WHITELISTED_PROGRAMS=
|
|
21
|
+
POLICY_SESSION_TTL_MINUTES=60
|
|
22
|
+
# Optional: signed emergency command controls.
|
|
23
|
+
# POLICY_EMERGENCY_COMMAND_PATH=emergency_command.json
|
|
24
|
+
# POLICY_EMERGENCY_ADMIN_SECRET=change-me
|
|
25
|
+
# POLICY_EMERGENCY_MAX_AGE_SECONDS=600
|
|
26
|
+
# JSON array of 64 integers generated by Solana keypair tooling. Devnet/demo only.
|
|
27
|
+
# Not required for the autonomous devnet demo, which generates a wallet programmatically.
|
|
28
|
+
# Leave unset in production when using REMOTE_SIGNER_*.
|
|
29
|
+
AGENT_PRIVATE_KEY=[]
|
|
30
|
+
# Optional devnet treasury/faucet wallet used to fund freshly generated agent wallets when the public faucet is flaky.
|
|
31
|
+
# Set this to your funded devnet wallet if you want autonomous demos and `wallet fund` to use treasury transfers first.
|
|
32
|
+
DEVNET_TREASURY_PRIVATE_KEY=[]
|
package/ARCHITECTURE.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# PRKT Architecture Deep Dive
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
PRKT is a layered agentic wallet runtime designed for secure autonomous operation on Solana devnet.
|
|
6
|
+
|
|
7
|
+
## Architecture Diagram
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart LR
|
|
11
|
+
A[Strategies] --> B[AgentRunner]
|
|
12
|
+
B --> C[Intents]
|
|
13
|
+
C --> D[PolicyEngine]
|
|
14
|
+
D --> E[SandboxExecutor]
|
|
15
|
+
E --> F[Wallet Core]
|
|
16
|
+
F --> G[Solana Devnet RPC]
|
|
17
|
+
|
|
18
|
+
B --> U[UniversalDeFiOrchestrator]
|
|
19
|
+
U --> J[Jupiter Live Executor]
|
|
20
|
+
U --> R[Raydium LP Live Executor]
|
|
21
|
+
U --> M[Fallback Executor]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Layer 1: Wallet Core
|
|
25
|
+
|
|
26
|
+
Path: `src/core`
|
|
27
|
+
|
|
28
|
+
Responsibilities:
|
|
29
|
+
|
|
30
|
+
- Wallet creation/loading (`WalletManager`)
|
|
31
|
+
- RPC abstraction (`RpcClient`)
|
|
32
|
+
- Build/simulate/send/confirm transactions (`TransactionService`)
|
|
33
|
+
- ATA + mint helpers (`TokenService`)
|
|
34
|
+
- SOL/SPL balances (`BalanceService`)
|
|
35
|
+
|
|
36
|
+
Rules:
|
|
37
|
+
|
|
38
|
+
- No strategy logic
|
|
39
|
+
- No policy decisions
|
|
40
|
+
|
|
41
|
+
## Layer 2: Policy + Sandbox
|
|
42
|
+
|
|
43
|
+
Path: `src/policy`
|
|
44
|
+
|
|
45
|
+
Responsibilities:
|
|
46
|
+
|
|
47
|
+
- Spend limits (per tx/session/day)
|
|
48
|
+
- Program and mint allowlists
|
|
49
|
+
- Unknown instruction deny-default
|
|
50
|
+
- Simulation-gated execution
|
|
51
|
+
- Approval modes (`sandbox` and `live`)
|
|
52
|
+
- Security audit trail
|
|
53
|
+
|
|
54
|
+
Key components:
|
|
55
|
+
|
|
56
|
+
- `PolicyEngine`
|
|
57
|
+
- `SandboxExecutor`
|
|
58
|
+
- `TxInspectionResult`
|
|
59
|
+
|
|
60
|
+
## Layer 3: Agent Runner
|
|
61
|
+
|
|
62
|
+
Path: `src/agent`
|
|
63
|
+
|
|
64
|
+
Responsibilities:
|
|
65
|
+
|
|
66
|
+
- Strategy loop and intent production
|
|
67
|
+
- Agent context isolation (wallet/config/policy)
|
|
68
|
+
- Parallel agent execution
|
|
69
|
+
- No direct key handling in strategy layer
|
|
70
|
+
|
|
71
|
+
Key components:
|
|
72
|
+
|
|
73
|
+
- `AgentRunner`
|
|
74
|
+
- `AgentRegistry`
|
|
75
|
+
- Typed intents (`transfer-sol`, `transfer-spl`, `mint-token`, `write-memo`, `defi-capability`)
|
|
76
|
+
- Strategies including universal DeFi capability strategy
|
|
77
|
+
|
|
78
|
+
## Layer 4: Protocol Interaction
|
|
79
|
+
|
|
80
|
+
Paths: `src/defi`, `src/demo`, `src/scripts`
|
|
81
|
+
|
|
82
|
+
Responsibilities:
|
|
83
|
+
|
|
84
|
+
- Protocol adapter model for Solana DeFi capabilities
|
|
85
|
+
- Live-first execution for devnet where available
|
|
86
|
+
- Safe fallback mode when live prerequisites fail
|
|
87
|
+
|
|
88
|
+
Current live protocol paths:
|
|
89
|
+
|
|
90
|
+
- Jupiter swap execution
|
|
91
|
+
- Raydium LP add-liquidity execution
|
|
92
|
+
|
|
93
|
+
## CLI Layer (Orchestration Only)
|
|
94
|
+
|
|
95
|
+
Path: `src/cli`
|
|
96
|
+
|
|
97
|
+
The CLI is an operational control plane that orchestrates existing layers:
|
|
98
|
+
|
|
99
|
+
- Wallet commands call Wallet Core services.
|
|
100
|
+
- Policy commands call PolicyEngine inspection.
|
|
101
|
+
- Agent commands call AgentRunner and universal DeFi executor flow.
|
|
102
|
+
- Monitor/audit commands read lightweight persistent state in `artifacts/`.
|
|
103
|
+
|
|
104
|
+
The CLI does not introduce protocol or policy business logic into command handlers.
|
|
105
|
+
|
|
106
|
+
## Security Model
|
|
107
|
+
|
|
108
|
+
### Assumptions
|
|
109
|
+
|
|
110
|
+
- Agent decision logic may be wrong or compromised.
|
|
111
|
+
- Operators may misconfigure environment settings.
|
|
112
|
+
|
|
113
|
+
### Controls
|
|
114
|
+
|
|
115
|
+
- Isolation: each agent gets an independent context
|
|
116
|
+
- Policy: hard limits + allowlists
|
|
117
|
+
- Sandbox: simulation and approval gating before broadcast
|
|
118
|
+
- Auditability: explicit allow/deny reasoning
|
|
119
|
+
- Live-first fallback: avoid uncontrolled failures while preserving determinism
|
|
120
|
+
|
|
121
|
+
### Residual Risks
|
|
122
|
+
|
|
123
|
+
- Bad external protocol config (for example invalid Raydium pool accounts)
|
|
124
|
+
- Operator key management issues
|
|
125
|
+
- Incomplete live adapter coverage for all protocols
|
|
126
|
+
- CLI wallet persistence is intended for local demo operations, not production custody
|
|
127
|
+
|
|
128
|
+
## Step-by-Step Devnet Demo Flow
|
|
129
|
+
|
|
130
|
+
1. Set env for devnet:
|
|
131
|
+
- `SOLANA_RPC_URL=https://api.devnet.solana.com`
|
|
132
|
+
- `REMOTE_SIGNER_URL=...`
|
|
133
|
+
- `REMOTE_SIGNER_BEARER_TOKEN=...`
|
|
134
|
+
- `REMOTE_SIGNER_PUBKEY=...`
|
|
135
|
+
- `AGENT_PRIVATE_KEY=[...]` for local devnet/demo use only
|
|
136
|
+
- `USDC_MINT=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU`
|
|
137
|
+
|
|
138
|
+
2. Enable live-first execution:
|
|
139
|
+
- `UNIVERSAL_DEFI_LIVE_FIRST=true`
|
|
140
|
+
- `ENABLE_LIVE_SWAP_PATH=true`
|
|
141
|
+
- `KORA_MOCK_MODE=false`
|
|
142
|
+
- optionally `ENABLE_LIVE_RAYDIUM_LP=true`
|
|
143
|
+
|
|
144
|
+
3. For Raydium live LP, create `raydium_lp.devnet.json` from `raydium_lp.devnet.example.json`.
|
|
145
|
+
|
|
146
|
+
4. Run universal capability demo:
|
|
147
|
+
```bash
|
|
148
|
+
npm run defi:universal
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
5. Run agent-runner universal flow:
|
|
152
|
+
```bash
|
|
153
|
+
npm run agent:defi:universal
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
6. Validate output:
|
|
157
|
+
- live signatures for available live paths
|
|
158
|
+
- explicit fallback messages where live requirements are missing
|
|
159
|
+
- final per-action execution results
|