Skip to content

Feature/models and poller fix - #2

Open
qiyoulu wants to merge 2 commits into
M4n5ter:mainfrom
qiyoulu:feature/models-and-poller-fix
Open

qiyoulu wants to merge 2 commits into
M4n5ter:mainfrom
qiyoulu:feature/models-and-poller-fix

Conversation

@qiyoulu

@qiyoulu qiyoulu commented Sep 4, 2026

Copy link
Copy Markdown

No description provided.

recordTelegramPollStarted ran outside the try/catch in runLoop, so any
state-write failure (SQLITE_BUSY under drain contention) escaped the loop:
.finally() set running=false and nothing ever restarted the poller. The
bot silently stopped fetching updates until the process was restarted by
hand.

- move recordTelegramPollStarted inside the guarded try block
- wrap catch-block state writes so they cannot escape the loop either
- restart the loop after 5s if it unexpectedly exits
- add PRAGMA busy_timeout so writes wait instead of throwing under WAL contention
New /models command shows an inline-button picker of available models
sorted by recent session use, plus /model <query> for a fuzzy direct
switch. The chosen model is stored per conversation as
{providerID, modelID} in kv_state and applied to subsequent sessions.

- gateway session model runtime resolves effective model (override > concrete default)
- adapter exposes getDefaultModel from Config.model so the picker intro
  shows the concrete model instead of 'server default'
- callback query + message handlers for the picker and direct switch
- model picker state persisted in kv_state with conversation key
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant