release: Teleton Agent v0.10.0#26
Merged
Merged
Conversation
- drop unused MemoryDatabase methods (getStats/vacuum/optimize/getVectorDimensions/transaction) - drop unused loadSessionStore/saveSessionStore/SessionStore and their tests - delete orphan migration SQL (1.5.0/1.6.0) never loaded by runMigrations
- extract rowToUser/rowToChat in memory/feed (was inlined 4x/2x) - add classifyMedia() in bridge-interface, used by both bridges - extract cachePeer() in user bridge (eviction was inlined twice)
runModifyingHook/runObservingHook were ~90% duplicate. Extract canRun() guard and runOne() (timeout + catch policy); drop unused withTimeout log param.
The 15 telegram tool index files re-exported every tool/executor by name,
but nothing consumes them: the registry aggregates via the tools[] arrays and
the two external callers import the executor file directly. Keep only the
tools[] arrays. Removes the export*/export{} glue (~125 lines).
registry.execute() already maps thrown errors to {success:false,error} and logs
them, so the withToolErrors wrapper was a third error-mapping layer. Unwrap the
10 executors that used it and delete wrap.ts; behavior is unchanged (these
executors run only through registry.execute).
- extract prepareJettonTransfer() shared by sendJetton (broadcast) and createJettonTransfer (offline sign), which diverged only on delivery (~120 LOC) - extract invalidateOnTransientHttpError() for the 429/5xx node-cache drop repeated in 4 send/get paths - drop the 85-line dead type re-export barrel in sdk/index.ts; the one consumer (plugin-loader) imports PluginSDK directly from @teleton-agent/sdk Behavior unchanged; full SDK suite (491 tests) green. Public DexSDK pass-through methods kept (declared API surface for plugins).
The dm-only/group-only tool scopes were collapsed to access-level 'all' and had no runtime effect, so finance tools marked dm-only (send gift, transfer collectible) were reachable in groups (group_policy defaults to 'open'). checkAccess now gates on the tool's declared channel scope, independent of the DB-overridable access level. Adds coverage; full suite (1510 tests) green.
Extract recreateForModeChange, installHookRunner, emitAgentStartHook, and installMessagePipeline from the ~250-line startAgent into private methods (now ~150). Pure reorganization; full suite (1510 tests) green.
Remove the automated P2P gift/TON trading subsystem and everything that only existed to serve it: - src/deals/ and src/agent/tools/deals/ (propose/verify/cancel/status/list) - the DealBot and its services (bot/index.ts, deal-service, verification-poller, message-builder); the shared plugin bot infra (inline-router, rate-limiter, gramjs-bot, inline-transport, callback-router) is kept - telegram_send_gift / telegram_transfer_collectible (gated by hasVerifiedDeal, i.e. only usable inside an authorized deal) - deals config (schema, configurable-keys, validator, onboard, setup wizard) - the /strategy admin command and dead deal types/constants This also resolves the dm-only/deals interaction from the channel-scope fix. typecheck + lint + full suite (1502 tests) green.
Use inferred Knip entrypoints with export checks, remove orphaned barrels and helpers, centralize package metadata, and share wallet derivation.
Share request construction across chat modes, derive provider IDs from the registry, and keep model availability gates in the catalog.
Route tool and SDK record updates through one validated service with canonical encoding, ownership checks, transaction locking, and characterization tests.
Share STON.fi simulation, DeDust pool selection, decimal resolution, and slippage math across tools and SDK swaps with characterization tests.
Use one browser/server contract source, canonicalize route errors and Telegram auth failures, and make the frontend build run TypeScript validation.
Preserve the existing types barrel while separating TON, Telegram, plugin infrastructure, and common logger contracts.
Keep the public API facade while separating shared client types, HTTP/auth transport, and setup endpoints; remove an unreachable duplicate return.
Keep the command facade stable while extracting config construction, interactive steps, non-interactive setup, and UI launch lifecycle.
Move provider resources, plugin lifecycle and event dispatch, server dependency assembly, and owner resolution out of TeletonApp with focused tests.
Separate tool batches, model iteration and recovery, and RAG tool selection from AgentRuntime while preserving its orchestration contract.
Keep provider lifecycle state aligned with reloaded configuration and decouple bot-token validation from the interactive onboarding module.
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.
Summary
Breaking changes
Verification