@adriangalilea/utils 0.13.0 → 0.14.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/README.md +6 -13
- package/dist/bot/llm.d.ts +116 -22
- package/dist/bot/llm.d.ts.map +1 -1
- package/dist/bot/llm.js +214 -24
- package/dist/bot/llm.js.map +1 -1
- package/dist/bot/menu.d.ts +91 -1
- package/dist/bot/menu.d.ts.map +1 -1
- package/dist/bot/menu.js +45 -0
- package/dist/bot/menu.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -305,7 +305,8 @@ Then `pnpm install`. Every `ctx.send` / `ctx.sendDocument` / `ctx.reply` / etc.
|
|
|
305
305
|
| `@adriangalilea/utils/bot/kit` | `gracefulStart(bot)` — SIGINT/SIGTERM → `bot.stop()` → exit; force-kills if shutdown hangs.<br>`adminContext({ adminId? })` — reads `TELEGRAM_ADMIN_ID` from `kev` (with optional hardcoded fallback), decorates `ctx.adminId` + `ctx.isAdmin`. |
|
|
306
306
|
| `@adriangalilea/utils/bot/access-control` | Personal-bot ACL — gates non-admin/non-default users; admin gets DM with `[✅ Aprobar][❌ Denegar]` on first attempt; `/access` opens a persistent menu (revoke / reapprove / list pending). Backed by `@gramio/session` per-user + a small index. |
|
|
307
307
|
| `@adriangalilea/utils/bot/coalesce` | Joins client-split inbound messages back into one. When a user pastes >4096 chars, Telegram clients fragment it into separate `message` updates with no marker. Middleware detects the burst and emits one combined event. |
|
|
308
|
-
| `@adriangalilea/utils/bot/llm` | The full LLM-chatbot pipeline in one module. **Input:** `streamChat(response)` parses OpenAI-compatible SSE (OpenAI, vllm, mlx-lm, llama.cpp, Together, Groq, …) into a typed `AsyncGenerator<{type: 'content' \| 'reasoning', text}>`. **Output:** `ctx.startStream()`
|
|
308
|
+
| `@adriangalilea/utils/bot/llm` | The full LLM-chatbot pipeline in one module. **Input:** `streamChat(response)` parses OpenAI-compatible SSE (OpenAI, vllm, mlx-lm, llama.cpp, Together, Groq, …) into a typed `AsyncGenerator<{type: 'content' \| 'reasoning', text}>`. **Output:** `ctx.startStream()` (low-level: debounced markdown to Telegram, 4000-char split, exposes `wasPartial` after `.end()`). `ctx.startChatStream(response)` (high-level: consumes the stream, renders reasoning as a Telegram `expandable_blockquote` entity + content as streamed markdown — both go through `markdownToFormattable` with graceful degradation — returns `{ content, reasoning }`). **History:** `llmHistory({...})` returns `.plugin` (decorates `ctx.llm` with `.add() / .get() / .clear() / .all() / .clearAll()`, per-(user, thread) OpenAI `ChatMessage` shape, persisted in the shared session record so the menu's 🗑 Forget wipes it automatically) AND `.menuItem` (drop-in "🧹 Clear this thread" for `botMenu`). |
|
|
309
|
+
| `@adriangalilea/utils/bot/menu` | `botMenu({ command, description, items, privacy?, personalData?, adminContact })` — `/settings` command + InlineKeyboard router. With `personalData: { storage }`, auto-adds 🗑 Forget + 📥 Export buttons. `toggleMenuItem({ id, read, write, label: { off, on }, toast? })` — convenience factory for boolean-toggle items with dynamic label + optional toast, storage-agnostic via `read`/`write` closures. |
|
|
309
310
|
|
|
310
311
|
Standard wiring:
|
|
311
312
|
|
|
@@ -315,7 +316,7 @@ import { redisStorage } from '@gramio/storage-redis'
|
|
|
315
316
|
import { adminContext, gracefulStart } from '@adriangalilea/utils/bot/kit'
|
|
316
317
|
import { accessControl } from '@adriangalilea/utils/bot/access-control'
|
|
317
318
|
import { session } from '@gramio/session'
|
|
318
|
-
import { llmStream, llmHistory
|
|
319
|
+
import { llmStream, llmHistory } from '@adriangalilea/utils/bot/llm'
|
|
319
320
|
|
|
320
321
|
const storage = redisStorage() // ONE instance, shared
|
|
321
322
|
const userSession = session({ storage, key: 'session', initial: () => ({}) })
|
|
@@ -342,17 +343,9 @@ const bot = new Bot(process.env.BOT_TOKEN!)
|
|
|
342
343
|
}),
|
|
343
344
|
})
|
|
344
345
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
if (chunk.type === 'content') {
|
|
349
|
-
assistant += chunk.text
|
|
350
|
-
await stream.append(chunk.text)
|
|
351
|
-
}
|
|
352
|
-
// chunk.type === 'reasoning' is also yielded for thinking models
|
|
353
|
-
}
|
|
354
|
-
await stream.end()
|
|
355
|
-
ctx.llm.add({ role: 'assistant', content: assistant })
|
|
346
|
+
// High-level: handles reasoning (collapsed blockquote) + content streaming.
|
|
347
|
+
const { content } = await ctx.startChatStream(response)
|
|
348
|
+
ctx.llm.add({ role: 'assistant', content })
|
|
356
349
|
})
|
|
357
350
|
|
|
358
351
|
await gracefulStart(bot)
|
package/dist/bot/llm.d.ts
CHANGED
|
@@ -8,10 +8,21 @@
|
|
|
8
8
|
* `AsyncGenerator` of `{type, text}` with
|
|
9
9
|
* `content` / `reasoning` separation.
|
|
10
10
|
*
|
|
11
|
-
* `ctx.startStream()` — OUTPUT. Debounced
|
|
12
|
-
* Telegram, local
|
|
13
|
-
* `@gramio/format`,
|
|
14
|
-
* paragraph / line /
|
|
11
|
+
* `ctx.startStream()` — OUTPUT (low-level). Debounced
|
|
12
|
+
* `editMessageText` to Telegram, local
|
|
13
|
+
* Markdown parse via `@gramio/format`,
|
|
14
|
+
* 4000-char split on paragraph / line /
|
|
15
|
+
* word boundary.
|
|
16
|
+
*
|
|
17
|
+
* `ctx.startChatStream()` — OUTPUT (high-level). Consumes a fetch
|
|
18
|
+
* `Response` (or any `AsyncIterable<LLMChunk>`)
|
|
19
|
+
* and renders BOTH phases of a thinking
|
|
20
|
+
* model: `reasoning` chunks go into one
|
|
21
|
+
* `<blockquote expandable>` message;
|
|
22
|
+
* `content` chunks go into a streamed
|
|
23
|
+
* markdown message below it. Returns
|
|
24
|
+
* `{ content, reasoning }` once the
|
|
25
|
+
* source generator ends.
|
|
15
26
|
*
|
|
16
27
|
* `ctx.llm.add / .get / …` — HISTORY. Per-(user, thread) conversation
|
|
17
28
|
* buffer in OpenAI `ChatMessage` shape.
|
|
@@ -30,12 +41,10 @@
|
|
|
30
41
|
*
|
|
31
42
|
* Peer deps: `gramio`, `@gramio/session`, `@gramio/format`, `marked`.
|
|
32
43
|
*
|
|
33
|
-
* @example
|
|
44
|
+
* @example high-level — thinking model in ~10 LOC
|
|
34
45
|
* import { Bot } from 'gramio'
|
|
35
46
|
* import { session } from '@gramio/session'
|
|
36
|
-
* import {
|
|
37
|
-
* llmStream, llmHistory, streamChat,
|
|
38
|
-
* } from '@adriangalilea/utils/bot/llm'
|
|
47
|
+
* import { llmStream, llmHistory } from '@adriangalilea/utils/bot/llm'
|
|
39
48
|
*
|
|
40
49
|
* const userSession = session({ storage, key: 'session', initial: () => ({}) })
|
|
41
50
|
* const chat = llmHistory({ session: userSession, maxTurns: 20, retentionDays: 7 })
|
|
@@ -46,34 +55,35 @@
|
|
|
46
55
|
* .extend(chat.plugin)
|
|
47
56
|
* .on('message', async (ctx) => {
|
|
48
57
|
* ctx.llm.add({ role: 'user', content: ctx.text ?? '' })
|
|
49
|
-
* const messages = ctx.llm.get()
|
|
50
|
-
*
|
|
51
58
|
* const response = await fetch(process.env.LLM_URL!, {
|
|
52
59
|
* method: 'POST',
|
|
53
60
|
* headers: { 'Content-Type': 'application/json' },
|
|
54
61
|
* body: JSON.stringify({
|
|
55
62
|
* model: process.env.LLM_MODEL,
|
|
56
|
-
* messages: [{ role: 'system', content: 'You are helpful.' }, ...
|
|
63
|
+
* messages: [{ role: 'system', content: 'You are helpful.' }, ...ctx.llm.get()],
|
|
57
64
|
* stream: true,
|
|
58
65
|
* }),
|
|
59
66
|
* })
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* let assistant = ''
|
|
63
|
-
* for await (const chunk of streamChat(response)) {
|
|
64
|
-
* if (chunk.type === 'content') {
|
|
65
|
-
* assistant += chunk.text
|
|
66
|
-
* await stream.append(chunk.text)
|
|
67
|
-
* }
|
|
68
|
-
* }
|
|
69
|
-
* await stream.end()
|
|
70
|
-
* ctx.llm.add({ role: 'assistant', content: assistant })
|
|
67
|
+
* const { content } = await ctx.startChatStream(response)
|
|
68
|
+
* ctx.llm.add({ role: 'assistant', content })
|
|
71
69
|
* })
|
|
72
70
|
*
|
|
73
71
|
* bot.start()
|
|
72
|
+
*
|
|
73
|
+
* @example low-level — manual loop when you need to map/filter chunks
|
|
74
|
+
* import { streamChat } from '@adriangalilea/utils/bot/llm'
|
|
75
|
+
*
|
|
76
|
+
* const stream = ctx.startStream()
|
|
77
|
+
* for await (const chunk of streamChat(response)) {
|
|
78
|
+
* if (chunk.type === 'content') await stream.append(chunk.text)
|
|
79
|
+
* // reasoning chunks dropped here
|
|
80
|
+
* }
|
|
81
|
+
* await stream.end()
|
|
74
82
|
*/
|
|
75
83
|
import { type DeriveDefinitions, Plugin } from 'gramio';
|
|
76
84
|
import { session } from '@gramio/session';
|
|
85
|
+
import { type Polyglot } from '../say/index.js';
|
|
86
|
+
import type { MenuItem } from './menu.js';
|
|
77
87
|
/**
|
|
78
88
|
* A single chunk yielded by `streamChat`. Two kinds:
|
|
79
89
|
*
|
|
@@ -138,6 +148,18 @@ export declare class MarkdownStreamer {
|
|
|
138
148
|
private inFlight;
|
|
139
149
|
private dirty;
|
|
140
150
|
private ended;
|
|
151
|
+
/**
|
|
152
|
+
* `true` after `.end()` returns if the stream finished with un-flushed
|
|
153
|
+
* buffer or an outstanding error that the streamer couldn't recover
|
|
154
|
+
* from. Useful for partial-response diagnostics in catch blocks:
|
|
155
|
+
*
|
|
156
|
+
* try { for await (...) await stream.append(...) }
|
|
157
|
+
* finally {
|
|
158
|
+
* await stream.end()
|
|
159
|
+
* if (stream.wasPartial) logger.warn('LLM stream cut off')
|
|
160
|
+
* }
|
|
161
|
+
*/
|
|
162
|
+
wasPartial: boolean;
|
|
141
163
|
private chatId;
|
|
142
164
|
private threadId?;
|
|
143
165
|
private bot;
|
|
@@ -165,8 +187,62 @@ export declare class MarkdownStreamer {
|
|
|
165
187
|
export declare const llmStream: (defaults?: StreamOptions) => Plugin<{}, DeriveDefinitions & {
|
|
166
188
|
message: {
|
|
167
189
|
startStream: (opts?: StreamOptions) => MarkdownStreamer;
|
|
190
|
+
/**
|
|
191
|
+
* One-call helper for chat completions: consumes a `Response`
|
|
192
|
+
* (or any `AsyncIterable<LLMChunk>`), renders reasoning to an
|
|
193
|
+
* expandable blockquote message + content to a streamed markdown
|
|
194
|
+
* message, returns `{ content, reasoning }` when the stream ends.
|
|
195
|
+
*/
|
|
196
|
+
startChatStream: (source: Response | AsyncIterable<LLMChunk>, opts?: ChatStreamOptions) => Promise<ChatStreamResult>;
|
|
168
197
|
};
|
|
169
198
|
}, {}>;
|
|
199
|
+
/**
|
|
200
|
+
* Return shape of `consumeChatStream` / `ctx.startChatStream`. Both
|
|
201
|
+
* full transcripts are returned so the caller decides what to persist
|
|
202
|
+
* (typically `content` to `ctx.llm`; `reasoning` already lives in the
|
|
203
|
+
* Telegram message and is rarely worth storing).
|
|
204
|
+
*/
|
|
205
|
+
export type ChatStreamResult = {
|
|
206
|
+
/** Full assistant text concatenated from all `content` chunks. */
|
|
207
|
+
content: string;
|
|
208
|
+
/** Full reasoning text concatenated from all `reasoning` chunks. Empty for non-thinking models. */
|
|
209
|
+
reasoning: string;
|
|
210
|
+
};
|
|
211
|
+
export type ChatStreamOptions = StreamOptions;
|
|
212
|
+
/**
|
|
213
|
+
* One-shot helper that consumes an LLM stream and renders BOTH phases
|
|
214
|
+
* (reasoning, content) to Telegram with the canonical pattern:
|
|
215
|
+
*
|
|
216
|
+
* - reasoning chunks → one message containing a single
|
|
217
|
+
* `<blockquote expandable>…</blockquote>` (HTML), debounced edits,
|
|
218
|
+
* stays expanded after the stream ends so the user can review it
|
|
219
|
+
* collapsed/uncollapsed at will
|
|
220
|
+
* - content chunks → a fresh `MarkdownStreamer` message below the
|
|
221
|
+
* reasoning one (auto-threaded via SendMixin)
|
|
222
|
+
*
|
|
223
|
+
* Returns when the source generator ends. Equivalent to (and replaces)
|
|
224
|
+
* the ~50 LOC of bookkeeping every thinking-model bot would otherwise
|
|
225
|
+
* write by hand around `streamChat` + `ctx.startStream`.
|
|
226
|
+
*
|
|
227
|
+
* Accepts either a raw `fetch` `Response` (wrapped with `streamChat`
|
|
228
|
+
* internally) or an `AsyncIterable<LLMChunk>` (when you want to map /
|
|
229
|
+
* filter chunks before the stream hits Telegram).
|
|
230
|
+
*
|
|
231
|
+
* @example via ctx.startChatStream from the llmStream plugin
|
|
232
|
+
* const response = await fetch(LLM_URL, { method: 'POST', body })
|
|
233
|
+
* const { content } = await ctx.startChatStream(response)
|
|
234
|
+
* ctx.llm.add({ role: 'assistant', content })
|
|
235
|
+
*
|
|
236
|
+
* @example standalone, framework-agnostic
|
|
237
|
+
* const { content, reasoning } = await consumeChatStream(ctx, response)
|
|
238
|
+
*/
|
|
239
|
+
export declare const consumeChatStream: (ctx: {
|
|
240
|
+
chat: {
|
|
241
|
+
id: number;
|
|
242
|
+
};
|
|
243
|
+
threadId?: number;
|
|
244
|
+
bot: MarkdownStreamer["bot"];
|
|
245
|
+
}, source: Response | AsyncIterable<LLMChunk>, opts?: ChatStreamOptions) => Promise<ChatStreamResult>;
|
|
170
246
|
/**
|
|
171
247
|
* Multimodal content shape from OpenAI's chat-completions spec. Either
|
|
172
248
|
* a plain string or an ordered array of typed parts. Image URLs cover
|
|
@@ -215,9 +291,27 @@ export type LLMHistoryOptions = {
|
|
|
215
291
|
maxTurns: number;
|
|
216
292
|
/** Entries older than this (in days) are dropped on read. */
|
|
217
293
|
retentionDays: number;
|
|
294
|
+
/**
|
|
295
|
+
* Override the labels of the `menuItem` (the "🧹 clear this thread"
|
|
296
|
+
* button rendered inside a `botMenu`). Defaults are polyglot
|
|
297
|
+
* literals covering en + es.
|
|
298
|
+
*/
|
|
299
|
+
menuLabels?: {
|
|
300
|
+
/** Button label. Default: `{ en: '🧹 Clear this thread', es: '🧹 Limpiar este hilo' }`. */
|
|
301
|
+
item?: Polyglot<string>;
|
|
302
|
+
/** Toast shown after a successful clear. Default: `{ en: '🧹 Cleared.', es: '🧹 Limpio.' }`. */
|
|
303
|
+
cleared?: Polyglot<string>;
|
|
304
|
+
};
|
|
218
305
|
};
|
|
219
306
|
export type LLMHistoryFeature = {
|
|
220
307
|
plugin: ReturnType<typeof buildHistoryPlugin>;
|
|
308
|
+
/**
|
|
309
|
+
* Drop-in `MenuItem` for `botMenu({ items: [...] })`: a "clear this
|
|
310
|
+
* thread" button that calls `ctx.llm.clear()` on the current
|
|
311
|
+
* (user, thread) shard and acknowledges with a toast. Sibling
|
|
312
|
+
* threads stay intact.
|
|
313
|
+
*/
|
|
314
|
+
menuItem: MenuItem;
|
|
221
315
|
};
|
|
222
316
|
/**
|
|
223
317
|
* Methods decorated onto `ctx.llm`. All synchronous — reads/writes the
|
package/dist/bot/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/bot/llm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/bot/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/llm.js
CHANGED
|
@@ -8,10 +8,21 @@
|
|
|
8
8
|
* `AsyncGenerator` of `{type, text}` with
|
|
9
9
|
* `content` / `reasoning` separation.
|
|
10
10
|
*
|
|
11
|
-
* `ctx.startStream()` — OUTPUT. Debounced
|
|
12
|
-
* Telegram, local
|
|
13
|
-
* `@gramio/format`,
|
|
14
|
-
* paragraph / line /
|
|
11
|
+
* `ctx.startStream()` — OUTPUT (low-level). Debounced
|
|
12
|
+
* `editMessageText` to Telegram, local
|
|
13
|
+
* Markdown parse via `@gramio/format`,
|
|
14
|
+
* 4000-char split on paragraph / line /
|
|
15
|
+
* word boundary.
|
|
16
|
+
*
|
|
17
|
+
* `ctx.startChatStream()` — OUTPUT (high-level). Consumes a fetch
|
|
18
|
+
* `Response` (or any `AsyncIterable<LLMChunk>`)
|
|
19
|
+
* and renders BOTH phases of a thinking
|
|
20
|
+
* model: `reasoning` chunks go into one
|
|
21
|
+
* `<blockquote expandable>` message;
|
|
22
|
+
* `content` chunks go into a streamed
|
|
23
|
+
* markdown message below it. Returns
|
|
24
|
+
* `{ content, reasoning }` once the
|
|
25
|
+
* source generator ends.
|
|
15
26
|
*
|
|
16
27
|
* `ctx.llm.add / .get / …` — HISTORY. Per-(user, thread) conversation
|
|
17
28
|
* buffer in OpenAI `ChatMessage` shape.
|
|
@@ -30,12 +41,10 @@
|
|
|
30
41
|
*
|
|
31
42
|
* Peer deps: `gramio`, `@gramio/session`, `@gramio/format`, `marked`.
|
|
32
43
|
*
|
|
33
|
-
* @example
|
|
44
|
+
* @example high-level — thinking model in ~10 LOC
|
|
34
45
|
* import { Bot } from 'gramio'
|
|
35
46
|
* import { session } from '@gramio/session'
|
|
36
|
-
* import {
|
|
37
|
-
* llmStream, llmHistory, streamChat,
|
|
38
|
-
* } from '@adriangalilea/utils/bot/llm'
|
|
47
|
+
* import { llmStream, llmHistory } from '@adriangalilea/utils/bot/llm'
|
|
39
48
|
*
|
|
40
49
|
* const userSession = session({ storage, key: 'session', initial: () => ({}) })
|
|
41
50
|
* const chat = llmHistory({ session: userSession, maxTurns: 20, retentionDays: 7 })
|
|
@@ -46,34 +55,35 @@
|
|
|
46
55
|
* .extend(chat.plugin)
|
|
47
56
|
* .on('message', async (ctx) => {
|
|
48
57
|
* ctx.llm.add({ role: 'user', content: ctx.text ?? '' })
|
|
49
|
-
* const messages = ctx.llm.get()
|
|
50
|
-
*
|
|
51
58
|
* const response = await fetch(process.env.LLM_URL!, {
|
|
52
59
|
* method: 'POST',
|
|
53
60
|
* headers: { 'Content-Type': 'application/json' },
|
|
54
61
|
* body: JSON.stringify({
|
|
55
62
|
* model: process.env.LLM_MODEL,
|
|
56
|
-
* messages: [{ role: 'system', content: 'You are helpful.' }, ...
|
|
63
|
+
* messages: [{ role: 'system', content: 'You are helpful.' }, ...ctx.llm.get()],
|
|
57
64
|
* stream: true,
|
|
58
65
|
* }),
|
|
59
66
|
* })
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* let assistant = ''
|
|
63
|
-
* for await (const chunk of streamChat(response)) {
|
|
64
|
-
* if (chunk.type === 'content') {
|
|
65
|
-
* assistant += chunk.text
|
|
66
|
-
* await stream.append(chunk.text)
|
|
67
|
-
* }
|
|
68
|
-
* }
|
|
69
|
-
* await stream.end()
|
|
70
|
-
* ctx.llm.add({ role: 'assistant', content: assistant })
|
|
67
|
+
* const { content } = await ctx.startChatStream(response)
|
|
68
|
+
* ctx.llm.add({ role: 'assistant', content })
|
|
71
69
|
* })
|
|
72
70
|
*
|
|
73
71
|
* bot.start()
|
|
72
|
+
*
|
|
73
|
+
* @example low-level — manual loop when you need to map/filter chunks
|
|
74
|
+
* import { streamChat } from '@adriangalilea/utils/bot/llm'
|
|
75
|
+
*
|
|
76
|
+
* const stream = ctx.startStream()
|
|
77
|
+
* for await (const chunk of streamChat(response)) {
|
|
78
|
+
* if (chunk.type === 'content') await stream.append(chunk.text)
|
|
79
|
+
* // reasoning chunks dropped here
|
|
80
|
+
* }
|
|
81
|
+
* await stream.end()
|
|
74
82
|
*/
|
|
75
83
|
import { Plugin } from 'gramio';
|
|
84
|
+
import { expandableBlockquote } from '@gramio/format';
|
|
76
85
|
import { markdownToFormattable } from '@gramio/format/markdown';
|
|
86
|
+
import { say } from '../say/index.js';
|
|
77
87
|
/**
|
|
78
88
|
* Parse an OpenAI-compatible chat-completions SSE response into a
|
|
79
89
|
* typed `AsyncGenerator<LLMChunk>`. Reads `response.body` once.
|
|
@@ -152,6 +162,18 @@ export class MarkdownStreamer {
|
|
|
152
162
|
inFlight = false;
|
|
153
163
|
dirty = false;
|
|
154
164
|
ended = false;
|
|
165
|
+
/**
|
|
166
|
+
* `true` after `.end()` returns if the stream finished with un-flushed
|
|
167
|
+
* buffer or an outstanding error that the streamer couldn't recover
|
|
168
|
+
* from. Useful for partial-response diagnostics in catch blocks:
|
|
169
|
+
*
|
|
170
|
+
* try { for await (...) await stream.append(...) }
|
|
171
|
+
* finally {
|
|
172
|
+
* await stream.end()
|
|
173
|
+
* if (stream.wasPartial) logger.warn('LLM stream cut off')
|
|
174
|
+
* }
|
|
175
|
+
*/
|
|
176
|
+
wasPartial = false;
|
|
155
177
|
chatId;
|
|
156
178
|
threadId;
|
|
157
179
|
// Match gramio's `bot.api` shape structurally. `text` accepts string or any
|
|
@@ -229,8 +251,14 @@ export class MarkdownStreamer {
|
|
|
229
251
|
}
|
|
230
252
|
while (this.inFlight)
|
|
231
253
|
await sleep(50);
|
|
232
|
-
if (this.dirty)
|
|
254
|
+
if (this.dirty) {
|
|
233
255
|
await this.flushNow();
|
|
256
|
+
// If `dirty` is still set after the final flush, an edit error
|
|
257
|
+
// re-armed it and there's nothing more we'll do. Mark partial
|
|
258
|
+
// so the caller can log / fall back.
|
|
259
|
+
if (this.dirty)
|
|
260
|
+
this.wasPartial = true;
|
|
261
|
+
}
|
|
234
262
|
}
|
|
235
263
|
scheduleFlush() {
|
|
236
264
|
if (this.debounceTimer)
|
|
@@ -297,6 +325,13 @@ export const llmStream = (defaults = {}) => new Plugin('@adriangalilea/utils/bot
|
|
|
297
325
|
// gramio's `message` scope guarantees `ctx.chat`. `ctx.bot.api` is on
|
|
298
326
|
// every Context. Structural compat → no cast needed.
|
|
299
327
|
startStream: (opts = {}) => new MarkdownStreamer(ctx, { ...defaults, ...opts }),
|
|
328
|
+
/**
|
|
329
|
+
* One-call helper for chat completions: consumes a `Response`
|
|
330
|
+
* (or any `AsyncIterable<LLMChunk>`), renders reasoning to an
|
|
331
|
+
* expandable blockquote message + content to a streamed markdown
|
|
332
|
+
* message, returns `{ content, reasoning }` when the stream ends.
|
|
333
|
+
*/
|
|
334
|
+
startChatStream: (source, opts = {}) => consumeChatStream(ctx, source, { ...defaults, ...opts }),
|
|
300
335
|
}));
|
|
301
336
|
function findSplit(text, maxLen) {
|
|
302
337
|
// Prefer paragraph break, then line, then space. Reject splits in the
|
|
@@ -309,6 +344,144 @@ function findSplit(text, maxLen) {
|
|
|
309
344
|
return maxLen;
|
|
310
345
|
}
|
|
311
346
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
347
|
+
/**
|
|
348
|
+
* One-shot helper that consumes an LLM stream and renders BOTH phases
|
|
349
|
+
* (reasoning, content) to Telegram with the canonical pattern:
|
|
350
|
+
*
|
|
351
|
+
* - reasoning chunks → one message containing a single
|
|
352
|
+
* `<blockquote expandable>…</blockquote>` (HTML), debounced edits,
|
|
353
|
+
* stays expanded after the stream ends so the user can review it
|
|
354
|
+
* collapsed/uncollapsed at will
|
|
355
|
+
* - content chunks → a fresh `MarkdownStreamer` message below the
|
|
356
|
+
* reasoning one (auto-threaded via SendMixin)
|
|
357
|
+
*
|
|
358
|
+
* Returns when the source generator ends. Equivalent to (and replaces)
|
|
359
|
+
* the ~50 LOC of bookkeeping every thinking-model bot would otherwise
|
|
360
|
+
* write by hand around `streamChat` + `ctx.startStream`.
|
|
361
|
+
*
|
|
362
|
+
* Accepts either a raw `fetch` `Response` (wrapped with `streamChat`
|
|
363
|
+
* internally) or an `AsyncIterable<LLMChunk>` (when you want to map /
|
|
364
|
+
* filter chunks before the stream hits Telegram).
|
|
365
|
+
*
|
|
366
|
+
* @example via ctx.startChatStream from the llmStream plugin
|
|
367
|
+
* const response = await fetch(LLM_URL, { method: 'POST', body })
|
|
368
|
+
* const { content } = await ctx.startChatStream(response)
|
|
369
|
+
* ctx.llm.add({ role: 'assistant', content })
|
|
370
|
+
*
|
|
371
|
+
* @example standalone, framework-agnostic
|
|
372
|
+
* const { content, reasoning } = await consumeChatStream(ctx, response)
|
|
373
|
+
*/
|
|
374
|
+
export const consumeChatStream = async (ctx, source, opts = {}) => {
|
|
375
|
+
const chatId = ctx.chat.id;
|
|
376
|
+
const threadId = ctx.threadId;
|
|
377
|
+
const bot = ctx.bot;
|
|
378
|
+
const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
|
|
379
|
+
const gen = source instanceof Response ? streamChat(source) : source;
|
|
380
|
+
// ─── reasoning state ────────────────────────────────────────────
|
|
381
|
+
let reasoning = '';
|
|
382
|
+
let reasoningMessageId;
|
|
383
|
+
let reasoningTimer;
|
|
384
|
+
let reasoningDirty = false;
|
|
385
|
+
let reasoningInFlight = false;
|
|
386
|
+
// Same graceful-degradation pipeline as the content phase:
|
|
387
|
+
// markdownToFormattable parses the reasoning (lists, code blocks,
|
|
388
|
+
// bold — thinking models do emit markdown) into a FormattableString
|
|
389
|
+
// with native Telegram entities, and `expandableBlockquote` wraps
|
|
390
|
+
// the whole thing in a collapsed-by-default block quotation by
|
|
391
|
+
// adding the `expandable_blockquote` entity over the full text.
|
|
392
|
+
// Malformed mid-stream markdown degrades to plain text inside the
|
|
393
|
+
// blockquote instead of failing the message.
|
|
394
|
+
const renderReasoning = () => expandableBlockquote(markdownToFormattable(reasoning));
|
|
395
|
+
const sendReasoningMessage = async () => {
|
|
396
|
+
const params = {
|
|
397
|
+
chat_id: chatId,
|
|
398
|
+
...(threadId !== undefined && { message_thread_id: threadId }),
|
|
399
|
+
text: renderReasoning(),
|
|
400
|
+
};
|
|
401
|
+
const sent = await bot.api.sendMessage(params);
|
|
402
|
+
reasoningMessageId = sent.message_id;
|
|
403
|
+
};
|
|
404
|
+
const flushReasoning = async () => {
|
|
405
|
+
if (!reasoningDirty || reasoningMessageId === undefined)
|
|
406
|
+
return;
|
|
407
|
+
reasoningInFlight = true;
|
|
408
|
+
reasoningDirty = false;
|
|
409
|
+
try {
|
|
410
|
+
await bot.api.editMessageText({
|
|
411
|
+
chat_id: chatId,
|
|
412
|
+
message_id: reasoningMessageId,
|
|
413
|
+
text: renderReasoning(),
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
const msg = String(e?.message ?? e);
|
|
418
|
+
// "message is not modified" is benign when reasoning chunks
|
|
419
|
+
// arrive faster than the debounce can render.
|
|
420
|
+
if (!msg.includes('message is not modified')) {
|
|
421
|
+
reasoningDirty = true;
|
|
422
|
+
opts.onError?.(e);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
reasoningInFlight = false;
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
const scheduleReasoningFlush = () => {
|
|
430
|
+
if (reasoningTimer)
|
|
431
|
+
return;
|
|
432
|
+
reasoningTimer = setTimeout(async () => {
|
|
433
|
+
reasoningTimer = undefined;
|
|
434
|
+
if (reasoningInFlight) {
|
|
435
|
+
scheduleReasoningFlush();
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
await flushReasoning();
|
|
439
|
+
if (reasoningDirty)
|
|
440
|
+
scheduleReasoningFlush();
|
|
441
|
+
}, debounceMs);
|
|
442
|
+
};
|
|
443
|
+
// ─── content state ──────────────────────────────────────────────
|
|
444
|
+
let contentStreamer;
|
|
445
|
+
let content = '';
|
|
446
|
+
// ─── main loop ──────────────────────────────────────────────────
|
|
447
|
+
for await (const chunk of gen) {
|
|
448
|
+
if (chunk.type === 'reasoning') {
|
|
449
|
+
reasoning += chunk.text;
|
|
450
|
+
if (reasoningMessageId === undefined) {
|
|
451
|
+
await sendReasoningMessage();
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
reasoningDirty = true;
|
|
455
|
+
scheduleReasoningFlush();
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
else if (chunk.type === 'content') {
|
|
459
|
+
if (!contentStreamer) {
|
|
460
|
+
// Close out reasoning cleanly before content starts: flush any
|
|
461
|
+
// pending edit, drop the debounce. The blockquote stays in
|
|
462
|
+
// the chat as a finished message.
|
|
463
|
+
if (reasoningTimer) {
|
|
464
|
+
clearTimeout(reasoningTimer);
|
|
465
|
+
reasoningTimer = undefined;
|
|
466
|
+
}
|
|
467
|
+
if (reasoningDirty)
|
|
468
|
+
await flushReasoning();
|
|
469
|
+
contentStreamer = new MarkdownStreamer({ chat: { id: chatId }, threadId, bot }, opts);
|
|
470
|
+
}
|
|
471
|
+
content += chunk.text;
|
|
472
|
+
await contentStreamer.append(chunk.text);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
// Trailing reasoning (model emitted reasoning but no content yet).
|
|
476
|
+
if (reasoningTimer) {
|
|
477
|
+
clearTimeout(reasoningTimer);
|
|
478
|
+
reasoningTimer = undefined;
|
|
479
|
+
}
|
|
480
|
+
if (reasoningDirty)
|
|
481
|
+
await flushReasoning();
|
|
482
|
+
await contentStreamer?.end();
|
|
483
|
+
return { content, reasoning };
|
|
484
|
+
};
|
|
312
485
|
const GENERAL_THREAD = 'general';
|
|
313
486
|
const threadKey = (ctx) => {
|
|
314
487
|
// Message events: ctx.threadId. Callback events: ctx.message.threadId.
|
|
@@ -355,7 +528,24 @@ export const llmHistory = (opts) => {
|
|
|
355
528
|
maxTurns: opts.maxTurns,
|
|
356
529
|
retentionDays: opts.retentionDays,
|
|
357
530
|
});
|
|
358
|
-
|
|
531
|
+
const itemLabel = opts.menuLabels?.item ?? {
|
|
532
|
+
en: '🧹 Clear this thread',
|
|
533
|
+
es: '🧹 Limpiar este hilo',
|
|
534
|
+
};
|
|
535
|
+
const clearedToast = opts.menuLabels?.cleared ?? {
|
|
536
|
+
en: '🧹 Cleared.',
|
|
537
|
+
es: '🧹 Limpio.',
|
|
538
|
+
};
|
|
539
|
+
const menuItem = {
|
|
540
|
+
id: 'llmClear',
|
|
541
|
+
label: itemLabel,
|
|
542
|
+
action: async (ctx) => {
|
|
543
|
+
const c = ctx;
|
|
544
|
+
c.llm?.clear();
|
|
545
|
+
await c.answer?.({ text: say(clearedToast, c.lang ?? 'en') });
|
|
546
|
+
},
|
|
547
|
+
};
|
|
548
|
+
return { plugin, menuItem };
|
|
359
549
|
};
|
|
360
550
|
const buildHistoryPlugin = (args) => {
|
|
361
551
|
const { sessionPlugin, maxTurns, retentionDays } = args;
|
package/dist/bot/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/bot/llm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/bot/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/menu.d.ts
CHANGED
|
@@ -72,7 +72,21 @@
|
|
|
72
72
|
import { Plugin } from 'gramio';
|
|
73
73
|
import type { Storage } from '@gramio/storage';
|
|
74
74
|
import { type Polyglot } from '../say/index.js';
|
|
75
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Shape of the `ctx` an action / label / predicate sees.
|
|
77
|
+
*
|
|
78
|
+
* - Static fields (`bot`, `from`, `chat`, `session`, `threadId`,
|
|
79
|
+
* `message`) come from gramio's `CallbackQueryContext`.
|
|
80
|
+
* - Common reply methods (`send`, `reply`, `answer`, `editText`) are
|
|
81
|
+
* declared as optional so action callbacks can call them without
|
|
82
|
+
* `as unknown as` casts. They exist at runtime on every callback ctx
|
|
83
|
+
* gramio dispatches.
|
|
84
|
+
* - Plugin-decorated fields (`ctx.llm`, `ctx.say`, `ctx.lang`, …)
|
|
85
|
+
* live on the real gramio ctx but aren't declared here — narrow
|
|
86
|
+
* them via a local type assertion where you use them. The menu
|
|
87
|
+
* stays plugin-agnostic.
|
|
88
|
+
*/
|
|
89
|
+
export type MenuCtx = {
|
|
76
90
|
bot: unknown;
|
|
77
91
|
from?: {
|
|
78
92
|
id: number;
|
|
@@ -84,6 +98,20 @@ type MenuCtx = {
|
|
|
84
98
|
session?: {
|
|
85
99
|
language?: string;
|
|
86
100
|
};
|
|
101
|
+
threadId?: number;
|
|
102
|
+
message?: {
|
|
103
|
+
threadId?: number;
|
|
104
|
+
};
|
|
105
|
+
send?: (text: string | {
|
|
106
|
+
toString(): string;
|
|
107
|
+
}, params?: object) => Promise<unknown>;
|
|
108
|
+
reply?: (text: string | {
|
|
109
|
+
toString(): string;
|
|
110
|
+
}, params?: object) => Promise<unknown>;
|
|
111
|
+
answer?: (params: object) => Promise<unknown>;
|
|
112
|
+
editText?: (text: string | {
|
|
113
|
+
toString(): string;
|
|
114
|
+
}, params?: object) => Promise<unknown>;
|
|
87
115
|
};
|
|
88
116
|
/**
|
|
89
117
|
* Anything a button or header can render as. Authoring a polyglot
|
|
@@ -188,5 +216,67 @@ export declare class BotMenu {
|
|
|
188
216
|
get plugin(): Plugin<{}, import("gramio").DeriveDefinitions, {}>;
|
|
189
217
|
}
|
|
190
218
|
export declare const botMenu: (opts: BotMenuOptions) => BotMenu;
|
|
219
|
+
export type ToggleMenuItemOptions = {
|
|
220
|
+
/** Item id within the menu. Must be unique among siblings. */
|
|
221
|
+
id: string;
|
|
222
|
+
/**
|
|
223
|
+
* Reads the current boolean value. Typically `(ctx) =>
|
|
224
|
+
* ctx.session?.someField ?? false`. Storage-agnostic — return
|
|
225
|
+
* `false` by default so the toggle starts in the OFF state.
|
|
226
|
+
*/
|
|
227
|
+
read: (ctx: MenuCtx) => boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Persists the new value. Typically `(ctx, v) => {
|
|
230
|
+
* (ctx.session as any).someField = v }`. The menu plugin does NOT
|
|
231
|
+
* own a session — write through whatever your bot already uses.
|
|
232
|
+
*/
|
|
233
|
+
write: (ctx: MenuCtx, value: boolean) => void | Promise<void>;
|
|
234
|
+
/**
|
|
235
|
+
* Button labels for each state. Polyglot literals resolve against
|
|
236
|
+
* `ctx.session?.language` (set by `bot/language`); strings render
|
|
237
|
+
* as-is. Use functions for runtime composition (e.g. emoji ✓/✗ +
|
|
238
|
+
* dynamic name).
|
|
239
|
+
*/
|
|
240
|
+
label: {
|
|
241
|
+
off: Label;
|
|
242
|
+
on: Label;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Optional toast shown via `ctx.answer({ text })` after a tap. Same
|
|
246
|
+
* polyglot resolution as `label`. Omit to stay silent.
|
|
247
|
+
*/
|
|
248
|
+
toast?: {
|
|
249
|
+
off?: Label;
|
|
250
|
+
on?: Label;
|
|
251
|
+
};
|
|
252
|
+
order?: number;
|
|
253
|
+
visible?: Predicate;
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* Convenience factory for a boolean-toggle `MenuItem`. The label
|
|
257
|
+
* tracks `read(ctx)` and the action flips it through `write(ctx, v)`.
|
|
258
|
+
* Storage is the caller's concern — pass closures that read/write the
|
|
259
|
+
* field wherever you keep it (typically `ctx.session.something`).
|
|
260
|
+
*
|
|
261
|
+
* The current menu message is NOT auto-re-rendered after a tap — the
|
|
262
|
+
* new label is visible the next time the user re-opens or navigates.
|
|
263
|
+
* The optional `toast` gives immediate feedback in the meantime.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* toggleMenuItem({
|
|
267
|
+
* id: 'thinking',
|
|
268
|
+
* read: (ctx) => (ctx.session as { thinking?: boolean }).thinking ?? false,
|
|
269
|
+
* write: (ctx, v) => { (ctx.session as { thinking?: boolean }).thinking = v },
|
|
270
|
+
* label: {
|
|
271
|
+
* off: { en: '💭 Thinking: OFF', es: '💭 Razonamiento: OFF' },
|
|
272
|
+
* on: { en: '💭 Thinking: ON', es: '💭 Razonamiento: ON' },
|
|
273
|
+
* },
|
|
274
|
+
* toast: {
|
|
275
|
+
* off: { en: 'Thinking off.', es: 'Razonamiento off.' },
|
|
276
|
+
* on: { en: 'Thinking on.', es: 'Razonamiento on.' },
|
|
277
|
+
* },
|
|
278
|
+
* })
|
|
279
|
+
*/
|
|
280
|
+
export declare const toggleMenuItem: (opts: ToggleMenuItemOptions) => MenuItem;
|
|
191
281
|
export {};
|
|
192
282
|
//# sourceMappingURL=menu.d.ts.map
|
package/dist/bot/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,OAAO,EAGL,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAIpD,
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/menu.js
CHANGED
|
@@ -116,6 +116,51 @@ export class BotMenu {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
export const botMenu = (opts) => new BotMenu(opts);
|
|
119
|
+
/**
|
|
120
|
+
* Convenience factory for a boolean-toggle `MenuItem`. The label
|
|
121
|
+
* tracks `read(ctx)` and the action flips it through `write(ctx, v)`.
|
|
122
|
+
* Storage is the caller's concern — pass closures that read/write the
|
|
123
|
+
* field wherever you keep it (typically `ctx.session.something`).
|
|
124
|
+
*
|
|
125
|
+
* The current menu message is NOT auto-re-rendered after a tap — the
|
|
126
|
+
* new label is visible the next time the user re-opens or navigates.
|
|
127
|
+
* The optional `toast` gives immediate feedback in the meantime.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* toggleMenuItem({
|
|
131
|
+
* id: 'thinking',
|
|
132
|
+
* read: (ctx) => (ctx.session as { thinking?: boolean }).thinking ?? false,
|
|
133
|
+
* write: (ctx, v) => { (ctx.session as { thinking?: boolean }).thinking = v },
|
|
134
|
+
* label: {
|
|
135
|
+
* off: { en: '💭 Thinking: OFF', es: '💭 Razonamiento: OFF' },
|
|
136
|
+
* on: { en: '💭 Thinking: ON', es: '💭 Razonamiento: ON' },
|
|
137
|
+
* },
|
|
138
|
+
* toast: {
|
|
139
|
+
* off: { en: 'Thinking off.', es: 'Razonamiento off.' },
|
|
140
|
+
* on: { en: 'Thinking on.', es: 'Razonamiento on.' },
|
|
141
|
+
* },
|
|
142
|
+
* })
|
|
143
|
+
*/
|
|
144
|
+
export const toggleMenuItem = (opts) => ({
|
|
145
|
+
id: opts.id,
|
|
146
|
+
order: opts.order,
|
|
147
|
+
visible: opts.visible,
|
|
148
|
+
label: (ctx) => {
|
|
149
|
+
const l = opts.read(ctx) ? opts.label.on : opts.label.off;
|
|
150
|
+
return typeof l === 'function' ? l(ctx) : l;
|
|
151
|
+
},
|
|
152
|
+
action: async (ctx) => {
|
|
153
|
+
const wasOn = opts.read(ctx);
|
|
154
|
+
const willBeOn = !wasOn;
|
|
155
|
+
await opts.write(ctx, willBeOn);
|
|
156
|
+
const t = willBeOn ? opts.toast?.on : opts.toast?.off;
|
|
157
|
+
if (t === undefined)
|
|
158
|
+
return;
|
|
159
|
+
const resolved = typeof t === 'function' ? t(ctx) : t;
|
|
160
|
+
const text = typeof resolved === 'string' ? resolved : say(resolved, ctxLang(ctx));
|
|
161
|
+
await ctx.answer?.({ text });
|
|
162
|
+
},
|
|
163
|
+
});
|
|
119
164
|
// ─── internal: rendering + plugin ──────────────────────────────────
|
|
120
165
|
const labelOf = (l, ctx) => {
|
|
121
166
|
const resolved = typeof l === 'function' ? l(ctx) : l;
|
package/dist/bot/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED