tag:github.com,2008:https://github.com/outsmartchad/outsmart-cli/releases Release notes from outsmart-cli 2026-02-23T07:04:46Z tag:github.com,2008:Repository/807597872/v2.0.0-alpha.14 2026-02-23T07:05:04Z v2.0.0-alpha.14 <h2>Fix: Mainnet byte offsets for all 8 DEX decoders</h2> <h3>Changes</h3> <ul> <li><strong>DAMM v2</strong>: Moved to vault-based pricing (offsets 168/200/232/264), removed unreliable sqrtPrice decode; decimals fetched from mint accounts at startup</li> <li><strong>DBC</strong>: Moved to SDK-based pricing via <code>adapter.getPrice()</code>, resolves bonding curve price calculation that raw sqrtPrice offsets couldn't handle</li> <li>Added null check for <code>adapter.getPrice</code> (optional on <code>IDexAdapter</code> interface)</li> </ul> <h3>Verified on Mainnet</h3> <p>All 8 DEX decoders tested and producing correct prices:</p> <table> <thead> <tr> <th>DEX</th> <th>Price</th> <th>Status</th> </tr> </thead> <tbody> <tr> <td>Raydium CPMM</td> <td>0.000448 SOL</td> <td>✅</td> </tr> <tr> <td>Raydium AMM v4</td> <td>0.00204 SOL</td> <td>✅</td> </tr> <tr> <td>Raydium CLMM</td> <td>131.89 (RAY/SOL)</td> <td>✅</td> </tr> <tr> <td>Raydium LaunchLab</td> <td>0.0000041</td> <td>✅</td> </tr> <tr> <td>PumpSwap</td> <td>0.0000871 SOL</td> <td>✅</td> </tr> <tr> <td>Meteora DAMM v2</td> <td>0.00201 SOL</td> <td>✅</td> </tr> <tr> <td>Meteora DBC</td> <td>3.62e-8 SOL (SDK)</td> <td>✅</td> </tr> <tr> <td>Meteora DLMM</td> <td>0.00247 SOL (SDK)</td> <td>✅</td> </tr> </tbody> </table> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.13 2026-02-23T07:05:25Z v2.0.0-alpha.13 <h2>Fix: Raydium CPMM decimal offsets</h2> <ul> <li>Corrected <code>mint_0_decimals</code> / <code>mint_1_decimals</code> byte offsets from 323/324 to <strong>331/332</strong></li> <li>Root cause: missing <code>observation_key</code> (32 bytes at offset 296) in the pool layout map</li> <li>Verified on mainnet pool <code>Q2sPHPd...</code> (SOL/USELESS): decimals now read as 9/6 (correct)</li> </ul> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.12 2026-02-23T06:13:35Z v2.0.0-alpha.12 — gRPC Oracle Keeper <h2>What's New</h2> <h3>gRPC Oracle Keeper (Yellowstone/Geyser)</h3> <ul> <li>New <code>GrpcKeeper</code> class using Yellowstone gRPC account subscriptions for production-grade oracle price pushing</li> <li>More reliable than WebSocket: auto-reconnect, ping keepalive, processed commitment level</li> <li>Supports all 8 DEX types: Raydium CPMM/AMM v4/CLMM/LaunchLab, PumpSwap, Meteora DAMM v2/DBC/DLMM</li> <li>CLI: <code>outsmart perp grpc-keeper --pool &lt;POOL&gt; --market &lt;MARKET&gt; --dex &lt;DEX&gt; [-n devnet]</code></li> <li>Standalone script: <code>npx tsx scripts/grpc-keeper.ts</code></li> <li>Requires <code>GRPC_URL</code> and <code>GRPC_XTOKEN</code> env vars</li> </ul> <h3>Full Changelog</h3> <ul> <li><code>src/dex/percolator/grpc-keeper.ts</code> — GrpcKeeper class (732 lines)</li> <li><code>scripts/grpc-keeper.ts</code> — standalone gRPC keeper entry point</li> <li><code>src/cli.ts</code> — <code>perp grpc-keeper</code> subcommand</li> <li><code>src/index.ts</code> — GrpcKeeper + GrpcKeeperOptions exports</li> <li><code>README.md</code> — gRPC keeper docs, env vars, project structure</li> </ul> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.11 2026-02-23T05:46:40Z v2.0.0-alpha.11 <p>feat: WebSocket oracle keeper for 8 DEX types (raydium-cpmm, amm-v4, clmm, launchlab, pumpswap, meteora-damm-v2, dbc, dlmm)</p> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.10 2026-02-23T04:20:35Z v2.0.0-alpha.10 <h2>What's New</h2> <h3>Pyth Oracle Support</h3> <ul> <li>Create Pyth-pinned perp markets with <code>--oracle &lt;feedId&gt;</code> — price reads come from Pyth on-chain, no manual pushing needed</li> <li>Admin-oracle (Hyperp) mode unchanged for memecoins without Pyth feeds</li> <li>crank, trade, and liquidate auto-detect oracle mode from slab state</li> </ul> <h3>Oracle Keeper Bot</h3> <ul> <li><code>scripts/keeper.ts</code> — polling-based bot that pushes prices from Jupiter Price API to admin-oracle markets</li> <li>Skips unchanged prices to save SOL</li> <li>Usage: <code>npm run keeper -- --market &lt;SLAB&gt; --token &lt;MINT&gt; --interval 10</code></li> </ul> <h3>Perp CLI Commands (from alpha.9)</h3> <ul> <li>11 subcommands: long, short, close, status, deposit, withdraw, init-user, create-market, set-price, crank, markets</li> <li>SOL-denominated inputs, USD prices, auto-crank before trades, quiet mode</li> </ul> <h3>Full Changelog</h3> <p><a class="commit-link" href="https://github.com/outsmartchad/outsmart-cli/compare/v2.0.0-alpha.9...v2.0.0-alpha.10"><tt>v2.0.0-alpha.9...v2.0.0-alpha.10</tt></a></p> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.9 2026-02-22T15:28:02Z v2.0.0-alpha.9 — TradeCpi fix + 13/13 tests passing <h2>What's New</h2> <h3>TradeCpi EngineOverflow Fixed (Phase H breakthrough)</h3> <p><strong>Root cause:</strong> The vAMM matcher's <code>maxFillAbs</code> was set to <code>0n</code>, meaning the matcher literally couldn't fill any trade — it returned <code>exec_size = 0</code> (zero-fill), which the engine rejected as <code>size == 0 → RiskError::Overflow</code>.</p> <p><strong>Fix:</strong> Updated default vAMM params to match the production app (<code>percolator-launch/app/hooks/useVAMM.ts</code>):</p> <ul> <li><code>maxFillAbs</code>: <code>10^17</code> (effectively unlimited, was <code>0</code>)</li> <li><code>mode</code>: <code>0</code> (passive, was <code>1</code>/vAMM)</li> <li><code>tradingFeeBps/baseSpreadBps/maxTotalBps</code>: <code>50/50/200</code> bps</li> <li><code>liquidityNotionalE6</code>: <code>10^13</code> ($10M notional)</li> </ul> <h3>Full Percolator Integration — All 13 devnet tests pass</h3> <p>Complete lifecycle tested end-to-end on Solana devnet:</p> <ol> <li>Create market (10-step with vAMM matcher) ✅</li> <li>Init user (trader account) ✅</li> <li>Deposit collateral ✅</li> <li>Push oracle price ✅</li> <li>Keeper crank ✅</li> <li><strong>Open long position</strong> ✅ (was failing with EngineOverflow)</li> <li>Read market state ✅</li> <li>Find my position ✅</li> <li><strong>Close position</strong> ✅</li> <li>Verify flat ✅</li> <li>Withdraw collateral ✅</li> <li>Close account ✅</li> <li>Discover markets ✅</li> </ol> <h3>Other changes</h3> <ul> <li>Updated vendored <code>@percolator/core</code> accounts.ts with all account specs</li> <li>Added <code>encodeCloseSlab</code>, <code>encodeAdminForceClose</code> to vendored SDK</li> <li>18 adapter methods including teardown, adminForceClose, closeSlab</li> <li>Updated README.md and docs/index.html with Percolator section</li> <li>Removed debug logging from trade() method</li> <li>Withdraw test reads actual remaining capital</li> </ul> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="npm install outsmart@2.0.0-alpha.9"><pre>npm install outsmart@2.0.0-alpha.9</pre></div> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.8 2026-02-22T14:03:58Z v2.0.0-alpha.8 — Devnet/Mainnet dual RPC <p>PercolatorAdapter now picks DEVNET_ENDPOINT or MAINNET_ENDPOINT based on the network param. All methods route to the correct RPC automatically.</p> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.7 2026-02-22T13:55:16Z v2.0.0-alpha.7 — Percolator Perpetual Futures Adapter <h2>What's New</h2> <h3>PercolatorAdapter (Phase H1)</h3> <p>Standalone adapter for Percolator perpetual futures protocol. Creates and operates AI-powered perp exchanges on Solana.</p> <p><strong>15 methods:</strong></p> <ul> <li><code>createMarket()</code> — full 10-step market lifecycle (slab → init → oracle → crank → vAMM → LP)</li> <li><code>initUser()</code> / <code>deposit()</code> / <code>withdraw()</code> / <code>closeAccount()</code> — account management</li> <li><code>trade()</code> — TradeCpi (long/short via vAMM)</li> <li><code>crank()</code> / <code>pushOraclePrice()</code> / <code>liquidate()</code> — market operations</li> <li><code>createInsuranceMint()</code> / <code>depositInsuranceLP()</code> / <code>withdrawInsuranceLP()</code> — insurance fund</li> <li><code>getMarketState()</code> / <code>getMyPosition()</code> / <code>discoverMarkets()</code> — read-only queries</li> </ul> <p><strong>Key features:</strong></p> <ul> <li>Admin-oracle mode for full agent control over price feeds</li> <li>Vendored <code>@percolator/core</code> SDK (zero external deps beyond @solana/web3.js)</li> <li>Devnet programs deployed (small/medium/large tiers + matcher)</li> <li>Math utilities: PnL, liquidation price, margin, funding rate, vAMM quotes</li> </ul> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="npm install outsmart@2.0.0-alpha.7"><pre>npm install outsmart@2.0.0-alpha.7</pre></div> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.6 2026-02-22T10:41:53Z v2.0.0-alpha.6 <h2>Changes</h2> <ul> <li>Export <code>CreateCustomPoolParams</code>, <code>CreateConfigPoolParams</code>, <code>PoolFeeConfig</code> types from library API</li> <li>Export <code>PumpFunAdapter</code> class for token creation</li> <li>These exports enable <code>outsmart-agent</code> to wrap pool creation and PumpFun launches as MCP tools</li> </ul> <p><strong>npm:</strong> <code>npm install outsmart@2.0.0-alpha.6</code></p> outsmartchad tag:github.com,2008:Repository/807597872/v2.0.0-alpha.5 2026-02-22T03:28:35Z v2.0.0-alpha.5 <h2>Changes</h2> <ul> <li><strong>Add <code>registerAllAdapters()</code> export</strong> — enables library consumers (like <code>outsmart-agent</code>) to register all 18 DEX adapters with a single async call</li> <li><strong>Vulnerability fixes</strong> — dropped <code>@metaplex-foundation/js</code> and <code>@bloxroute/solana-trader-client-ts</code>, added overrides (20 vulns → 3)</li> <li><strong>Production hardening</strong> — TX simulation before send, RPC backoff with retries, <code>--dry-run</code> flag</li> <li><strong>Reduced test amounts</strong> — 0.002 SOL per test trade</li> <li><strong>Fixed DLMM SDK</strong> — handle <code>claimSwapFee</code> returning <code>Transaction[]</code></li> <li><strong>Library exports</strong> — <code>getWallet</code>, <code>getConnection</code>, <code>sendAndConfirmVtx</code>, <code>sendAndConfirmLegacyTx</code>, etc.</li> </ul> <h2>Install</h2> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="npm install outsmart@2.0.0-alpha.5"><pre>npm install outsmart@2.0.0-alpha.5</pre></div> <p>Full changelog: <a href="https://github.com/outsmartchad/outsmart-cli/commits/agent-trading-infra">https://github.com/outsmartchad/outsmart-cli/commits/agent-trading-infra</a></p> outsmartchad