docs: add GroypFi MCP integration for perps & Groypad#8
Open
Renryog wants to merge 41 commits intoTONresistor:devfrom
Open
docs: add GroypFi MCP integration for perps & Groypad#8Renryog wants to merge 41 commits intoTONresistor:devfrom
Renryog wants to merge 41 commits intoTONresistor:devfrom
Conversation
Separate agent lifecycle from WebUI lifecycle so the agent can be started/stopped at runtime without killing the WebUI server. - Add AgentLifecycle state machine (stopped/starting/running/stopping) - Refactor TeletonApp: extract startAgent()/stopAgent(), wire lifecycle - Replace process.exit(1) with throw in agent start path - Add REST endpoints: POST /api/agent/start, stop, GET /api/agent/status - Add SSE endpoint: GET /api/agent/events (real-time state push) - Add useAgentStatus hook (SSE + polling fallback + reconnection) - Add AgentControl sidebar component (badge, play/stop, confirm dialog) - 46 new tests (20 unit + 16 route/SSE + 10 E2E), 944 total passing
- Use StreamableHTTPClientTransport as primary for URL-based MCP servers - Fall back to SSEClientTransport if Streamable HTTP connection fails - Close original client/transport before fallback to prevent resource leaks (AbortController, sockets) - mcpServers dep accepts lazy function for dynamic live status - Connection failure log level: warn (non-fatal, optional servers) - Improve error logging with stack traces on connection failure
- mcpServers passed as lazy function () => [...] for live status (not a snapshot frozen at startup) - Add streamable-http detection in type guard (command → stdio, url → streamable-http, else → sse) - McpServerInfo.type extended with 'streamable-http' in API types - Unused params prefixed with _ to satisfy noUnusedParameters
- Wrap entire sendJetton flow in try/catch for consistent PluginSDKError propagation — raw errors no longer bubble up untyped - Remove SendMode.IGNORE_ERRORS: transaction errors are now surfaced instead of silently swallowed - Fix || → ?? on jetton decimals: prevents 0-decimal tokens from incorrectly falling back to 9 decimals
- btn-danger: red accent → neutral surface/border (glass style) - alert.success / alert.error: green/red backgrounds → uniform rgba(255,255,255,0.04) with subtle border
…l counts - Replace DeepWiki badge with docs badge linking to docs.teletonagent.dev - Update LLM provider count from 6 to 10 (add Moonshot, Mistral, Cocoon, Local) - Update built-in tools count from 114 to 100+
GET /api/plugins was returning a stale snapshot created at WebUI init, before startAgent() loaded external plugins into this.modules. Now computes dynamically from deps.marketplace.modules (live reference) using the same isPluginModule filter already used in marketplace routes. Falls back to deps.plugins if marketplace is not configured.
Add a new "Claude Code (Auto)" provider that reuses the Anthropic API but auto-reads OAuth tokens from the local Claude Code installation (~/.claude/.credentials.json on Linux/Windows, macOS Keychain). - Credential reader with intelligent caching (re-read on expiration) - 401 retry in chatWithContext for expired tokens - CLI onboard: auto-detect + confirm, fallback to manual key - WebUI setup: detection panel with status, fallback button - 20 tests (unit + integration + registration)
Detect SentCodeTypeFragmentSms from Telegram API and surface the Fragment.com URL so users can retrieve their verification code via TON wallet. Affects both WebUI setup wizard and CLI auth flow.
…seed phrase display in CLI setup - Migrate utility model from claude-3-5-haiku-20241022 (EOL Feb 19) to claude-haiku-4-5-20251001 - Add confirm() prompt after seed phrase display so console.clear() doesn't wipe it
When a user replies to a message (DM or group), the agent now sees an inline annotation like [↩ reply to sender: "quoted text"] before the user message. Reply context is only fetched when the agent will actually respond (no overhead for skipped group messages). - Extract replyToMsgId in bridge.parseMessage() + persist in DB - Add fetchReplyContext() on TelegramBridge with 5s timeout - Add replyContext annotation in formatMessageEnvelope() - Wire through handlers → runtime → envelope - 9 new tests for envelope reply formatting
Dropdown menus were clipped by parent containers with overflow-y: auto (e.g. modals). Render menu via createPortal to document.body with position: fixed and z-index: 10000 to ensure dropdowns always appear above all other UI elements.
Patches Dependabot alerts: - hono: timing comparison hardening in basicAuth/bearerAuth - ajv: ReDoS when using $data option
New tools (66 → 73): - transcribe-audio: voice/audio transcription via TranscribeAudio API - get-scheduled-messages, delete-scheduled-message, send-scheduled-now - get-collectible-info: Fragment collectible lookup - get-admined-channels: list admin public channels - set-personal-channel: set/remove personal channel Auto-transcription integrated in message handler for voice/audio messages. Bump @mariozechner/pi-ai 0.52 → 0.54.
…ed model catalog Dashboard: changing provider now requires entering and validating the API key before the switch is applied. Providers without keys (claude-code, cocoon, local) switch instantly. Adds provider-meta and validate-api-key endpoints to config routes. Extracts shared model-catalog.ts (60+ models across 11 providers) used by CLI onboard, setup wizard, and dashboard — eliminates ~220 lines of duplicated model options. New/updated models: - Anthropic: +claude-sonnet-4-6 - OpenAI: +gpt-5-pro, +gpt-5-mini, +gpt-5.1, +o4-mini, +codex-mini - Google: +gemini-3-pro-preview, +gemini-3-flash-preview, +gemini-2.5-flash-lite - xAI: +grok-4-1-fast, +grok-code-fast-1 - OpenRouter: +claude-sonnet-4-6, +deepseek-r1-0528, +deepseek-v3.2/v3.1, +qwen3-coder/max/235b, +nemotron-nano-9b, +sonar-pro, +minimax-m2.5 Updates README: tool count 66→73, 11 providers, supported models table, dashboard provider switching, current model names in config example.
…ollution Model selection was in a separate "Config" step, far from provider/API key selection. Users expect to pick their model right after choosing a provider. Moved it into the Provider step (CLI advanced mode + WebUI). Also fixes a bug where pino-pretty's async worker thread would emit workspace creation logs after the inquirer prompt was already rendered, corrupting the CLI display and requiring an extra Enter press. Added silent option to ensureWorkspace to suppress logs during the interactive wizard.
Reorder both CLI and WebUI setup wizards to group Telegram credentials right before the Connect step instead of early in the flow. New order: Welcome > Provider > Config > Wallet > Telegram > Connect. - Move userId (Admin ID) from Telegram step to Config step - Wallet: always offer Generate/Import choice (was auto-generating) - Modules: remove interactive trading thresholds, make bot token recommended - Deals auto-disabled when no bot token is configured - Deals buy_max_floor_percent default: 100 > 95 - Update server-side validation + tests to match new step order
Extract shared hooks and components from the monolithic Dashboard: - useConfigState hook for shared state management - AgentSettingsPanel and TelegramSettingsPanel components - PillBar tab navigation component Dashboard now shows only status, memory, and quick-access settings. Config page uses pill-bar tabs (LLM, Telegram, Session, API Keys, Advanced) for the full settings experience. Also fixes embedding model cache dir creation on fresh install and surfaces the Update All button in the Plugins installed tab.
- Add array type support with ArrayInput component - Add labels and option labels to all config keys - Add Telegram keys (admin_ids, allow_from, rate limits, etc.) - Add Deals, Embedding, Cocoon and Agent base_url keys - Auto-sync owner_id to admin_ids - Remove deprecated "pairing" DM policy - Persist GramJS bot session to disk - Memory sources browser with chunk viewer - Workspace raw image preview with MIME detection - Tool RAG persistence to YAML + alwaysInclude/skipUnlimitedProviders - Tasks bulk clean by terminal status
- Wire gramjsSessionPath in deals module for bot session persistence - Fix Soul editor textarea to fill available height
Replace green (#30D158) with accent blue (#0A84FF) on checked toggles for visual consistency with button styling.
Add check, set, and create-with-username support for channel public usernames via GramJS channels.CheckUsername and channels.UpdateUsername APIs.
Unified save patterns across all config tabs: - Text/number fields: dirty-state inline Save/Cancel (replaces blur-save) - Toggles/selects: immediate save on change (unchanged) - API keys: password field with Set/Not set badge New components: InfoTip (hover tooltip on all field labels), EditableField (dirty detection + Save/Cancel), ConfigSection (generic renderer by field type). Added hotReload metadata to all 43 config keys with restart badge on 6 keys. Removed renderKeyValueList, absorbed all Telegram keys into TelegramSettingsPanel, replaced Session/API Keys/Advanced tabs with ConfigSection.
Add toncenter_api_key across config, CLI wizard, and WebUI setup. Centralize TonClient via getCachedTonClient() with automatic API key injection and cache invalidation on 429/5xx. Dynamic TonAPI rate limiting: 5 rps with key, 1 rps without. Merge ModulesStep into ConfigStep with clearer field descriptions. Frosted-glass tooltip with smooth CSS transitions.
- Migrate Ston.fi from DEX.v1 to dexFactory pattern with proper Jetton→TON swap path (was silently failing) - Wrap all transactional tools in withTxLock() to prevent seqno races on concurrent calls - Remove SendMode.IGNORE_ERRORS — failed on-chain actions now bounce back instead of silently losing funds - Normalize addresses to user-friendly format - Reject zero-amount jetton transfers (exclusiveMinimum) - Disable link preview in Telegram notifications
- Keep typing status active during long agent responses (4s refresh) - Retry LLM server errors (500/502/503/529) with exponential backoff - Retry GramJS connection on transient DC overload - Deduplicate incoming messages to prevent double-processing - Fix compaction API key for claude-code provider
- Dashboard: status bar, side-by-side settings, integrated live logs (removes Logs page) - Tools: table layout with search and enabled/disabled counters - Plugins: redesigned management UI - Config: merge Session into Advanced, move Tool RAG to Advanced tab - Telegram settings: split into core and advanced cards, fix section title contrast - Setup wizard: PasswordInput for API keys, masked keys in review step - InfoTip: WCAG-compliant tooltips (keyboard, Escape, aria) - Keyboard navigation on all interactive table rows - Config API keys (tonapi, toncenter) invalidate caches on change
…on Groypad - Adds Teleton plugin guide - Perps MCP tools - MCP plugin configuration examples - Closes #<issue-if-any>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds official documentation for the GroypFi Teleton plugin and Perps MCP server.
AI agents can now natively trade perpetual futures on GroypFi and launch tokens on Groypad using the built-in MCP client.
Full guide lives at https://groypfi.io/docs/groypad#teleton-plugin