@moxxy/plugin-telegram 0.41.3 → 0.42.1

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.
Files changed (90) hide show
  1. package/dist/channel/callback-handler.d.ts +5 -2
  2. package/dist/channel/callback-handler.d.ts.map +1 -1
  3. package/dist/channel/callback-handler.js +31 -58
  4. package/dist/channel/callback-handler.js.map +1 -1
  5. package/dist/channel/mirror.d.ts +23 -0
  6. package/dist/channel/mirror.d.ts.map +1 -0
  7. package/dist/channel/mirror.js +23 -0
  8. package/dist/channel/mirror.js.map +1 -0
  9. package/dist/channel/model-picker.d.ts +17 -0
  10. package/dist/channel/model-picker.d.ts.map +1 -0
  11. package/dist/channel/model-picker.js +58 -0
  12. package/dist/channel/model-picker.js.map +1 -0
  13. package/dist/channel/model.d.ts +22 -0
  14. package/dist/channel/model.d.ts.map +1 -0
  15. package/dist/channel/model.js +11 -0
  16. package/dist/channel/model.js.map +1 -0
  17. package/dist/channel/pairing-handler.d.ts +2 -0
  18. package/dist/channel/pairing-handler.d.ts.map +1 -1
  19. package/dist/channel/pairing-handler.js +4 -0
  20. package/dist/channel/pairing-handler.js.map +1 -1
  21. package/dist/channel/send-rich.d.ts +16 -0
  22. package/dist/channel/send-rich.d.ts.map +1 -0
  23. package/dist/channel/send-rich.js +25 -0
  24. package/dist/channel/send-rich.js.map +1 -0
  25. package/dist/channel/slash-handler.d.ts +8 -6
  26. package/dist/channel/slash-handler.d.ts.map +1 -1
  27. package/dist/channel/slash-handler.js +29 -51
  28. package/dist/channel/slash-handler.js.map +1 -1
  29. package/dist/channel/text-handler.d.ts +6 -4
  30. package/dist/channel/text-handler.d.ts.map +1 -1
  31. package/dist/channel/text-handler.js +23 -52
  32. package/dist/channel/text-handler.js.map +1 -1
  33. package/dist/channel/turn-runner.d.ts +10 -4
  34. package/dist/channel/turn-runner.d.ts.map +1 -1
  35. package/dist/channel/turn-runner.js +22 -5
  36. package/dist/channel/turn-runner.js.map +1 -1
  37. package/dist/channel/voice-handler.d.ts.map +1 -1
  38. package/dist/channel/voice-handler.js +2 -0
  39. package/dist/channel/voice-handler.js.map +1 -1
  40. package/dist/channel.d.ts +8 -10
  41. package/dist/channel.d.ts.map +1 -1
  42. package/dist/channel.js +55 -55
  43. package/dist/channel.js.map +1 -1
  44. package/dist/format.d.ts +1 -0
  45. package/dist/format.d.ts.map +1 -1
  46. package/dist/format.js +1 -1
  47. package/dist/format.js.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +3 -72
  51. package/dist/index.js.map +1 -1
  52. package/dist/keys.d.ts +3 -0
  53. package/dist/keys.d.ts.map +1 -1
  54. package/dist/keys.js +3 -0
  55. package/dist/keys.js.map +1 -1
  56. package/dist/pair-flow.d.ts +2 -1
  57. package/dist/pair-flow.d.ts.map +1 -1
  58. package/dist/pair-flow.js +9 -23
  59. package/dist/pair-flow.js.map +1 -1
  60. package/dist/tools/send-message.d.ts +21 -0
  61. package/dist/tools/send-message.d.ts.map +1 -0
  62. package/dist/tools/send-message.js +84 -0
  63. package/dist/tools/send-message.js.map +1 -0
  64. package/package.json +11 -10
  65. package/src/channel/callback-handler.test.ts +4 -33
  66. package/src/channel/callback-handler.ts +34 -65
  67. package/src/channel/mirror.test.ts +59 -0
  68. package/src/channel/mirror.ts +36 -0
  69. package/src/channel/model-picker.ts +75 -0
  70. package/src/channel/model.test.ts +203 -0
  71. package/src/channel/model.ts +33 -0
  72. package/src/channel/pairing-handler.test.ts +38 -0
  73. package/src/channel/pairing-handler.ts +5 -0
  74. package/src/channel/send-rich.ts +36 -0
  75. package/src/channel/slash-handler.test.ts +68 -0
  76. package/src/channel/slash-handler.ts +35 -66
  77. package/src/channel/text-handler.test.ts +6 -5
  78. package/src/channel/text-handler.ts +28 -52
  79. package/src/channel/turn-runner.test.ts +84 -0
  80. package/src/channel/turn-runner.ts +31 -9
  81. package/src/channel/voice-handler.ts +2 -0
  82. package/src/channel/voice-reply.test.ts +16 -14
  83. package/src/channel.ts +68 -57
  84. package/src/format.ts +1 -1
  85. package/src/index.ts +8 -75
  86. package/src/keys.ts +4 -0
  87. package/src/pair-flow.ts +9 -23
  88. package/src/subcommands.test.ts +2 -1
  89. package/src/tools/send-message.test.ts +118 -0
  90. package/src/tools/send-message.ts +97 -0
@@ -1,12 +1,15 @@
1
1
  import { InlineKeyboard } from 'grammy';
2
2
  import { assertDefined, isSelectableMode } from '@moxxy/sdk';
3
3
  import { resolveVoiceToggle } from '@moxxy/channel-kit';
4
+ import { providerScreen } from './model-picker.js';
4
5
  /**
5
6
  * Install guidance shown when enabling `/voice` with no active synthesizer —
6
7
  * mirrors the voice-handler's transcriber guidance wording, pointing at the TTS
7
8
  * plugin instead of the STT one.
8
9
  */
9
10
  export const VOICE_NO_SYNTH_HINT = 'No text-to-speech backend is configured yet, so replies stay text-only. Install one with `moxxy plugins install tts-openai` and run `moxxy login openai` (or set OPENAI_API_KEY) to enable spoken replies.';
11
+ /** Telegram bots have no calls; a voice message is the way to talk. */
12
+ export const NO_CALLS_REPLY = 'Telegram does not let bots take or place calls. Send me a voice message instead — I will answer with one.';
10
13
  /**
11
14
  * Slash-command dispatcher for the Telegram channel.
12
15
  *
@@ -16,7 +19,7 @@ export const VOICE_NO_SYNTH_HINT = 'No text-to-speech backend is configured yet,
16
19
  * commands without needing a switch case here.
17
20
  *
18
21
  * Falls through to channel-local cases for Telegram-specific UI
19
- * (model/loop pickers as inline keyboards, /yolo toggle, /tools and
22
+ * (model/mode pickers as inline keyboards, /auto-approve, /tools and
20
23
  * /skills as text dumps).
21
24
  */
22
25
  export async function runSlash(ctx, text, state, cb) {
@@ -55,18 +58,26 @@ export async function runSlash(ctx, text, state, cb) {
55
58
  // 2) Channel-local cases.
56
59
  switch (head) {
57
60
  case '/model':
58
- await renderModelPicker(ctx, session, state, args);
61
+ if (args.trim())
62
+ await ctx.reply(await cb.model.run(args));
63
+ else
64
+ await renderModelPicker(ctx, cb.model);
59
65
  return;
60
66
  case '/mode':
61
67
  await renderModePicker(ctx, session);
62
68
  return;
69
+ case '/auto-approve':
70
+ case '/auto_approve':
63
71
  case '/yolo': {
64
- const enabled = cb.toggleYolo();
72
+ const enabled = await cb.toggleYolo();
65
73
  await ctx.reply(enabled
66
- ? '⚠ yolo mode ON — tool calls auto-approved for the rest of this session'
67
- : 'yolo mode OFF — tool prompts will resume');
74
+ ? '⚠ auto-approve ON — tool calls run without asking for the rest of this session'
75
+ : 'auto-approve OFF — tool prompts will resume');
68
76
  return;
69
77
  }
78
+ case '/call':
79
+ await ctx.reply(NO_CALLS_REPLY);
80
+ return;
70
81
  case '/voice': {
71
82
  const result = resolveVoiceToggle({
72
83
  arg: args,
@@ -106,50 +117,11 @@ export async function runSlash(ctx, text, state, cb) {
106
117
  await ctx.reply(`unknown command: ${head} (try /help)`);
107
118
  }
108
119
  }
109
- /** Telegram inline keyboards get unwieldy past this many rows; cap the picker. */
110
- const MODEL_PICKER_CAP = 30;
111
- async function renderModelPicker(ctx, session, state, filter = '') {
112
- const providers = session.providers.list();
113
- if (providers.length === 0) {
114
- await ctx.reply('no providers registered');
115
- return;
116
- }
117
- const keyboard = new InlineKeyboard();
118
- const providerName = session.providers.getActiveName() ?? '';
119
- const activeModel = state.activeModelOverride ?? state.model ?? '';
120
- // Same boot-time readiness set the TUI uses to flag unconfigured
121
- // providers — set by `@moxxy/cli` at setup time. Providers that
122
- // failed credential resolution get a "(not connected)" suffix
123
- // and a tap on them surfaces the right setup command instead of
124
- // a no-op switch.
125
- const ready = session.readyProviders ?? new Set();
126
- // `/model <substring>` narrows the list so a model that sorts past the
127
- // keyboard cap is still reachable from chat (the cap below would otherwise
128
- // silently hide it with no fallback).
129
- const needle = filter.trim().toLowerCase();
130
- // Flatten so we can both apply the substring filter and report how many the
131
- // cap hides (vs. how many the filter excluded).
132
- const all = providers.flatMap((p) => p.models.map((m) => ({ provider: p.name, model: m.id })));
133
- const matched = needle
134
- ? all.filter((e) => `${e.provider}::${e.model}`.toLowerCase().includes(needle))
135
- : all;
136
- if (matched.length === 0) {
137
- await ctx.reply(`no model matches "${filter.trim()}" — try /model with no argument.`);
138
- return;
139
- }
140
- const shown = matched.slice(0, MODEL_PICKER_CAP);
141
- for (const e of shown) {
142
- const isCurrent = providerName === e.provider && activeModel === e.model;
143
- const connected = ready.has(e.provider);
144
- const label = `${isCurrent ? '• ' : ''}${e.provider}: ${e.model}` +
145
- (connected ? '' : ' (not connected)');
146
- keyboard.text(label, `model:${e.provider}::${e.model}`).row();
147
- }
148
- const hidden = matched.length - shown.length;
149
- const prompt = hidden > 0
150
- ? `Pick a model (${hidden} more not shown — narrow with /model <text>):`
151
- : 'Pick a model:';
152
- await ctx.reply(prompt, { reply_markup: keyboard });
120
+ /** `/model` without an argument: the providers first (see model-picker). */
121
+ async function renderModelPicker(ctx, model) {
122
+ const { current, options } = await model.choices();
123
+ const screen = providerScreen(current, options);
124
+ await ctx.reply(screen.text, { parse_mode: 'HTML', reply_markup: screen.keyboard });
153
125
  }
154
126
  async function renderModePicker(ctx, session) {
155
127
  // Special modes (e.g. collaborative, entered via /collab) are hidden from the
@@ -174,6 +146,8 @@ async function renderModePicker(ctx, session) {
174
146
  }
175
147
  await ctx.reply('Pick a mode:', { reply_markup: keyboard });
176
148
  }
149
+ /** Telegram's bot-command name constraint (no hyphens). */
150
+ const BOT_COMMAND_RE = /^[a-z0-9_]{1,32}$/;
177
151
  /**
178
152
  * Push the union of registry commands + Telegram-local commands to
179
153
  * Telegram so they appear in the chat's command menu (the "/" picker
@@ -184,9 +158,10 @@ export async function publishBotCommands(bot, session, logger) {
184
158
  if (!session || !bot)
185
159
  return;
186
160
  const LOCAL = [
187
- { command: 'model', description: 'Switch provider + model (inline keyboard)' },
161
+ { command: 'model', description: 'Show or switch the model this bot uses' },
188
162
  { command: 'mode', description: 'Switch mode' },
189
- { command: 'yolo', description: 'Toggle auto-approve mode' },
163
+ { command: 'auto_approve', description: 'Toggle auto-approve: tool calls run without asking' },
164
+ { command: 'call', description: 'Talk by voice (Telegram bots cannot call — send a voice message)' },
190
165
  { command: 'voice', description: 'Toggle spoken voice replies' },
191
166
  { command: 'tools', description: 'List the tools the active session can call' },
192
167
  { command: 'skills', description: 'List the discovered skills' },
@@ -197,6 +172,9 @@ export async function publishBotCommands(bot, session, logger) {
197
172
  .map((c) => ({ command: c.name, description: c.description }));
198
173
  const seen = new Set(shared.map((c) => c.command));
199
174
  const merged = [...shared, ...LOCAL.filter((c) => !seen.has(c.command))]
175
+ // Telegram rejects the whole list over one name outside [a-z0-9_]; such
176
+ // commands still work typed out.
177
+ .filter((c) => BOT_COMMAND_RE.test(c.command))
200
178
  .sort((a, b) => a.command.localeCompare(b.command))
201
179
  // Telegram caps descriptions at 256 chars and rejects empties.
202
180
  .map((c) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"slash-handler.js","sourceRoot":"","sources":["../../src/channel/slash-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slash-handler.js","sourceRoot":"","sources":["../../src/channel/slash-handler.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,11 @@ import type { TelegramApprovalResolver } from '../approval.js';
4
4
  import type { TelegramPermissionResolver } from '../permission.js';
5
5
  import type { ChannelHandle } from '@moxxy/sdk';
6
6
  import type { FramePump } from './frame-pump.js';
7
+ import type { TelegramModel } from './model.js';
7
8
  import type { AwaitingApprovalText } from './callback-handler.js';
8
9
  import type { PairingHandler } from './pairing-handler.js';
9
10
  export interface TextHandlerState {
10
11
  readonly session: Session | null;
11
- readonly model: string | undefined;
12
- readonly activeModelOverride: string | null;
13
- readonly yolo: boolean;
14
12
  readonly voiceReplies: boolean;
15
13
  readonly busy: boolean;
16
14
  readonly turnController: AbortController | null;
@@ -25,9 +23,13 @@ export interface TextHandlerDeps {
25
23
  }
26
24
  export interface TextHandlerCallbacks {
27
25
  readonly setAwaitingApprovalText: (state: AwaitingApprovalText | null) => void;
28
- readonly toggleYolo: () => boolean;
26
+ /** `/auto-approve` — switch the conversation's shared auto-approve. */
27
+ readonly toggleYolo: () => Promise<boolean>;
28
+ /** Drop the bot-local auto-approve flag (a `/new` conversation starts with it off). */
29
29
  readonly setYolo: (value: boolean) => void;
30
30
  readonly setVoiceReplies: (on: boolean) => Promise<void>;
31
+ /** This bot's own model (`/model`). */
32
+ readonly model: Pick<TelegramModel, 'run' | 'choices'>;
31
33
  readonly runUserTurn: (ctx: Context, chatId: number, text: string) => Promise<void>;
32
34
  /** Host-issued pairing fallback: try to pair an unauthorized chat whose message
33
35
  * is the 6-digit code. Returns true when handled (so we skip the generic
@@ -1 +1 @@
1
- {"version":3,"file":"text-handler.d.ts","sourceRoot":"","sources":["../../src/channel/text-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF;;wEAEoE;IACpE,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,oBAAoB,GACvB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
1
+ {"version":3,"file":"text-handler.d.ts","sourceRoot":"","sources":["../../src/channel/text-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/E,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF;;wEAEoE;IACpE,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,eAAe,EACrB,EAAE,EAAE,oBAAoB,GACvB,OAAO,CAAC,IAAI,CAAC,CAgEf"}
@@ -1,3 +1,4 @@
1
+ import { applySessionAction } from '@moxxy/channel-kit';
1
2
  import { runSlash } from './slash-handler.js';
2
3
  /**
3
4
  * Top-level dispatch for inbound text messages: authorization gate,
@@ -45,15 +46,10 @@ export async function handleTextMessage(ctx, state, deps, cb) {
45
46
  return;
46
47
  }
47
48
  if (text.startsWith('/')) {
48
- await runSlash(ctx, text, {
49
- session: state.session,
50
- model: state.model,
51
- activeModelOverride: state.activeModelOverride,
52
- yolo: state.yolo,
53
- voiceReplies: state.voiceReplies,
54
- }, {
49
+ await runSlash(ctx, text, { session: state.session, voiceReplies: state.voiceReplies }, {
55
50
  toggleYolo: cb.toggleYolo,
56
51
  setVoiceReplies: cb.setVoiceReplies,
52
+ model: cb.model,
57
53
  performSessionAction: (c, action, notice) => performSessionAction(c, action, notice, state, deps, cb),
58
54
  });
59
55
  return;
@@ -65,52 +61,27 @@ export async function handleTextMessage(ctx, state, deps, cb) {
65
61
  await cb.runUserTurn(ctx, chatId, text);
66
62
  }
67
63
  /**
68
- * Channel-side handler for `session-action` outputs from registered
69
- * commands. The TUI does the same thing; both channels translate the
70
- * action into their own UI semantics (Telegram = reply text, Ink =
71
- * setState + exit).
64
+ * Channel-side handler for `session-action` outputs from registered commands
65
+ * (`applySessionAction` in @moxxy/channel-kit, shared with the other bots).
72
66
  */
73
67
  async function performSessionAction(ctx, action, notice, state, deps, cb) {
74
- if (!state.session)
75
- return;
76
- if (action === 'exit') {
77
- await ctx.reply(notice ?? 'closing Telegram channel');
78
- if (state.handle)
79
- await state.handle.stop('user /exit');
80
- return;
81
- }
82
- if (action === 'clear') {
83
- deps.framePump.resetRenderer();
84
- if (notice)
85
- await ctx.reply(`✓ ${notice}`);
86
- return;
87
- }
88
- if (action === 'new') {
89
- if (state.turnController && !state.turnController.signal.aborted) {
90
- state.turnController.abort('user reset');
91
- }
92
- deps.framePump.resetRenderer();
93
- cb.setYolo(false);
94
- cb.setAwaitingApprovalText(null);
95
- deps.approvalResolver.abortAll('session reset');
96
- deps.permissionResolver.abortAll('session reset');
97
- // Wipe the history at its source. On a RemoteSession `reset()` asks the
98
- // runner to clear its authoritative log (and persisted JSONL) and
99
- // re-sync every attached mirror; on a local Session it clears the
100
- // EventLog + truncates the sidecar. A mirror-only `log.clear()` would
101
- // be cosmetic AND desync this client, so only claim success when the
102
- // reset actually happened.
103
- try {
104
- if (typeof state.session.reset === 'function')
105
- await state.session.reset();
106
- else
107
- state.session.log.clear();
108
- }
109
- catch (err) {
110
- await ctx.reply(`⚠ /new failed: ${err instanceof Error ? err.message : String(err)} — history NOT cleared`);
111
- return;
112
- }
113
- await ctx.reply(`✓ ${notice ?? 'new session — conversation history cleared'}`);
114
- }
68
+ const reply = await applySessionAction(action, notice, {
69
+ session: state.session,
70
+ turnController: state.turnController,
71
+ handle: state.handle,
72
+ channelName: 'Telegram',
73
+ abortPending: (reason) => {
74
+ deps.approvalResolver.abortAll(reason);
75
+ deps.permissionResolver.abortAll(reason);
76
+ },
77
+ onReset: (kind) => {
78
+ deps.framePump.resetRenderer();
79
+ if (kind !== 'new')
80
+ return;
81
+ cb.setYolo(false);
82
+ cb.setAwaitingApprovalText(null);
83
+ },
84
+ });
85
+ await ctx.reply(reply);
115
86
  }
116
87
  //# sourceMappingURL=text-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-handler.js","sourceRoot":"","sources":["../../src/channel/text-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-handler.js","sourceRoot":"","sources":["../../src/channel/text-handler.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,21 @@ export interface TurnRunnerDeps {
13
13
  readonly typing: TypingIndicator;
14
14
  readonly logger?: TurnRunnerLogger;
15
15
  /**
16
- * Called once with the FINAL assistant text after it has been flushed to the
17
- * chat (so the text reply always lands first). Backs the optional voice
18
- * reply. Best-effort — its failure is logged and never breaks the text turn.
16
+ * Sends the FINAL assistant text as a voice note after it has been flushed to
17
+ * the chat (so the text reply always lands first), on a `spoken` turn only.
18
+ * Best-effort — its failure is logged and never breaks the text turn.
19
19
  */
20
- readonly onFinalReply?: (text: string) => Promise<void>;
20
+ readonly speakReply?: (text: string) => Promise<void>;
21
21
  }
22
+ /** What the model must know about replying on Telegram (see channelTurnContext). */
23
+ export declare const TELEGRAM_TURN_CONTEXT: string;
24
+ /** Added while voice replies are on: the reply goes back as a voice message too. */
25
+ export declare const TELEGRAM_VOICE_CONTEXT: string;
22
26
  export interface TurnRunnerOptions {
23
27
  readonly chatId: number;
24
28
  readonly text: string;
29
+ /** Voice replies are on (`/voice`): the reply is also spoken back. */
30
+ readonly spoken?: boolean;
25
31
  readonly model: string | undefined;
26
32
  readonly controller: AbortController;
27
33
  /** turnId for this turn. The channel mints it so it can also record it as an
@@ -1 +1 @@
1
- {"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC;4DACwD;IACxD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
1
+ {"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,QAKhC,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,QAGM,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC;4DACwD;IACxD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Df"}
@@ -1,4 +1,15 @@
1
- import { driveTurn, subscribeTurn } from '@moxxy/channel-kit';
1
+ import { channelTurnContext, driveTurn, subscribeTurn } from '@moxxy/channel-kit';
2
+ /** What the model must know about replying on Telegram (see channelTurnContext). */
3
+ export const TELEGRAM_TURN_CONTEXT = channelTurnContext({
4
+ service: 'Telegram',
5
+ sendTool: 'telegram_send_message',
6
+ delivery: 'their Telegram chat with the bot',
7
+ uploadLimit: '50 MB per file',
8
+ });
9
+ /** Added while voice replies are on: the reply goes back as a voice message too. */
10
+ export const TELEGRAM_VOICE_CONTEXT = 'Your reply will also be sent back as a voice message, read ' +
11
+ 'aloud: answer briefly, in plain spoken sentences, without markdown, code blocks, tables or links. ' +
12
+ 'Speak in the language of the request.';
2
13
  /**
3
14
  * Drive a single user turn end-to-end: kick off typing, subscribe the
4
15
  * frame pump to session events, run the turn through `runTurn`, flush
@@ -8,7 +19,7 @@ import { driveTurn, subscribeTurn } from '@moxxy/channel-kit';
8
19
  * turn without poisoning the session-level signal.
9
20
  */
10
21
  export async function runUserTurn(ctx, deps, opts) {
11
- const { session, bot, framePump, typing, logger, onFinalReply } = deps;
22
+ const { session, bot, framePump, typing, logger, speakReply } = deps;
12
23
  const { chatId, text, model, controller, turnId } = opts;
13
24
  framePump.beginTurn(chatId);
14
25
  // Kick off "typing…" right away so the user gets immediate feedback.
@@ -28,16 +39,22 @@ export async function runUserTurn(ctx, deps, opts) {
28
39
  framePump.scheduleEdit();
29
40
  });
30
41
  try {
31
- await driveTurn(session, { turnId, prompt: text, model, signal: controller.signal });
42
+ await driveTurn(session, {
43
+ turnId,
44
+ prompt: text,
45
+ model,
46
+ systemPrompt: opts.spoken ? `${TELEGRAM_TURN_CONTEXT}\n\n${TELEGRAM_VOICE_CONTEXT}` : TELEGRAM_TURN_CONTEXT,
47
+ signal: controller.signal,
48
+ });
32
49
  await framePump.flush(true);
33
50
  // The text reply is now out. Speak the final assistant body if a voice
34
51
  // reply is wired — isolated so a synth/transcode/transport failure can
35
52
  // never break (or re-report) the already-delivered text turn.
36
- if (onFinalReply) {
53
+ if (opts.spoken && speakReply) {
37
54
  const finalText = framePump.renderState.snapshot().body;
38
55
  if (finalText.trim()) {
39
56
  try {
40
- await onFinalReply(finalText);
57
+ await speakReply(finalText);
41
58
  }
42
59
  catch (err) {
43
60
  logger?.warn('telegram voice reply hook failed', {
@@ -1 +1 @@
1
- {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgC9D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAY,EACZ,IAAoB,EACpB,IAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEzD,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,qEAAqE;IACrE,oEAAoE;IACpE,iEAAiE;IACjE,qEAAqE;IACrE,0BAA0B;IAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE1B,6EAA6E;IAC7E,2EAA2E;IAC3E,qEAAqE;IACrE,6EAA6E;IAC7E,2CAA2C;IAC3C,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,SAAS;YAAE,SAAS,CAAC,YAAY,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,uEAAuE;QACvE,uEAAuE;QACvE,8DAA8D;QAC9D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACxD,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,EAAE,IAAI,CAAC,kCAAkC,EAAE;wBAC/C,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACtD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE;YACnC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"voice-handler.d.ts","sourceRoot":"","sources":["../../src/channel/voice-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkB3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,wEAAwE;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC5B,OAAO,CAAC;QACX,EAAE,EAAE,OAAO,CAAC;QACZ,0EAA0E;QAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wFAAwF;QACxF,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC/C,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,qBAAqB,GACxB,OAAO,CAAC,IAAI,CAAC,CAuIf"}
1
+ {"version":3,"file":"voice-handler.d.ts","sourceRoot":"","sources":["../../src/channel/voice-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkB3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,wEAAwE;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC5B,OAAO,CAAC;QACX,EAAE,EAAE,OAAO,CAAC;QACZ,0EAA0E;QAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wFAAwF;QACxF,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC/C,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;KACrC,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,qBAAqB,GACxB,OAAO,CAAC,IAAI,CAAC,CAyIf"}
@@ -133,6 +133,8 @@ export async function handleVoiceMessage(ctx, state, deps, cb) {
133
133
  // agent acts on it. Italics keep it visually distinct from a normal
134
134
  // reply.
135
135
  await ctx.reply(`_heard:_ ${transcript}`, { parse_mode: 'Markdown' });
136
+ // The transcript is a prompt like any other: `/voice` decides whether the
137
+ // reply is spoken back.
136
138
  await cb.runUserTurn(ctx, chatId, transcript);
137
139
  }
138
140
  //# sourceMappingURL=voice-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"voice-handler.js","sourceRoot":"","sources":["../../src/channel/voice-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voice-handler.js","sourceRoot":"","sources":["../../src/channel/voice-handler.ts"],"names":[],"mappings":"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"}
package/dist/channel.d.ts CHANGED
@@ -44,12 +44,13 @@ export declare class TelegramChannel implements Channel<TelegramStartOpts> {
44
44
  private hostPairingCode;
45
45
  private readonly connectListeners;
46
46
  private currentChatId;
47
- private lastChatId;
47
+ private readonly mirror;
48
+ private readonly mirrorTarget;
48
49
  private logUnsub;
49
50
  private session;
50
51
  private model;
51
- private activeModelOverride;
52
- private yolo;
52
+ /** `/auto-approve` — the conversation's shared switch (see AutoApproveSwitch). */
53
+ private readonly autoApprove;
53
54
  private voiceReplies;
54
55
  private readonly turns;
55
56
  private awaitingApprovalText;
@@ -103,14 +104,11 @@ export declare class TelegramChannel implements Channel<TelegramStartOpts> {
103
104
  * `bot.catch` only sees rejections of the AWAITED middleware chain.
104
105
  */
105
106
  private dispatchInBackground;
107
+ /** `/model` and its picker, answering "not ready" before start(). */
108
+ private pickerModel;
109
+ /** This bot's own model (see TelegramModel); null before start(). */
110
+ private botModel;
106
111
  private runUserTurn;
107
- /**
108
- * Post the assistant's prose for a turn this channel did not initiate. Gated
109
- * by `!busy` (our own turns are rendered by the FramePump from the runUserTurn
110
- * iterator) and by having served a chat at least once. Sent as plain text to
111
- * avoid parse-mode pitfalls; the view itself lives on the web surface.
112
- */
113
- private mirrorForeignTurn;
114
112
  private askForPermission;
115
113
  private askForApproval;
116
114
  private dispatchCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}