@markusylisiurunen/tau 0.3.67 → 0.3.69

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 (107) hide show
  1. package/dist/core/personas.js +47 -3
  2. package/dist/core/personas.js.map +1 -1
  3. package/dist/core/static/tau_docs/remote-sessions.md +1 -1
  4. package/dist/core/static/tau_docs/telegram.md +3 -3
  5. package/dist/core/static/tau_docs/tui.md +2 -2
  6. package/dist/core/telegram/adapter.js +26 -10
  7. package/dist/core/telegram/adapter.js.map +1 -1
  8. package/dist/core/utils/gemini_speech.js +1 -1
  9. package/dist/core/utils/gemini_transcription.js +1 -1
  10. package/dist/core/utils/openai_transcription.js +72 -22
  11. package/dist/core/utils/openai_transcription.js.map +1 -1
  12. package/dist/core/utils/speech_to_text.js +17 -24
  13. package/dist/core/utils/speech_to_text.js.map +1 -1
  14. package/dist/core/version.js +2 -2
  15. package/dist/diff_tool/app/dist/assets/{angular-html-BeSCPCet.js → angular-html-GYtPR4ZN.js} +1 -1
  16. package/dist/diff_tool/app/dist/assets/{angular-ts-M6ucwcXp.js → angular-ts-CP8tBFCL.js} +1 -1
  17. package/dist/diff_tool/app/dist/assets/{apl-BTy2T_s_.js → apl-DlYjD5SW.js} +1 -1
  18. package/dist/diff_tool/app/dist/assets/{astro-cFE44UBz.js → astro-D8wjxID2.js} +1 -1
  19. package/dist/diff_tool/app/dist/assets/{blade-BSzl0tbR.js → blade-DwY1HngW.js} +1 -1
  20. package/dist/diff_tool/app/dist/assets/{c-wBFdKaz6.js → c-CAILAMk6.js} +1 -1
  21. package/dist/diff_tool/app/dist/assets/{chapel-b-MisDxs.js → chapel-VXP46g0K.js} +1 -1
  22. package/dist/diff_tool/app/dist/assets/{cobol-dLRFXfHq.js → cobol-BwAQKs_L.js} +1 -1
  23. package/dist/diff_tool/app/dist/assets/{coffee-DY5l5u2h.js → coffee-DeNZ8VRy.js} +1 -1
  24. package/dist/diff_tool/app/dist/assets/{cpp-DjXgSTII.js → cpp-CF9ADHZh.js} +1 -1
  25. package/dist/diff_tool/app/dist/assets/{crystal-CP6xOayN.js → crystal-Dlr9u7o6.js} +1 -1
  26. package/dist/diff_tool/app/dist/assets/{css-xaNrTKYV.js → css-DqAHzxWB.js} +1 -1
  27. package/dist/diff_tool/app/dist/assets/{edge-BOmlY556.js → edge-ds7vvsur.js} +1 -1
  28. package/dist/diff_tool/app/dist/assets/{elixir-DcKGE0v2.js → elixir-Es7Jrt6x.js} +1 -1
  29. package/dist/diff_tool/app/dist/assets/{elm-Cr3UN5CN.js → elm-D11ntXWx.js} +1 -1
  30. package/dist/diff_tool/app/dist/assets/{erb-B0s1W7oL.js → erb-BqfIFYyn.js} +1 -1
  31. package/dist/diff_tool/app/dist/assets/{git-rebase-BicxzMm4.js → git-rebase-BNJHcUvp.js} +1 -1
  32. package/dist/diff_tool/app/dist/assets/{glimmer-js-ODVU1BSP.js → glimmer-js-DNpIS5IN.js} +1 -1
  33. package/dist/diff_tool/app/dist/assets/{glimmer-ts-BjlaPEbT.js → glimmer-ts-Bv4OLkK5.js} +1 -1
  34. package/dist/diff_tool/app/dist/assets/{glsl-DARqrBAL.js → glsl-BrwGmSBp.js} +1 -1
  35. package/dist/diff_tool/app/dist/assets/{graphql-9AgTO0pa.js → graphql-BNCK5rQk.js} +1 -1
  36. package/dist/diff_tool/app/dist/assets/{hack-a62s-UZ0.js → hack-DuFQc5W0.js} +1 -1
  37. package/dist/diff_tool/app/dist/assets/{haml-D2r7a_kb.js → haml-DfSIBmXD.js} +1 -1
  38. package/dist/diff_tool/app/dist/assets/{handlebars-CIj0uB_t.js → handlebars-97zL-LWI.js} +1 -1
  39. package/dist/diff_tool/app/dist/assets/{html-D8D8vyLW.js → html-5cQu52Yo.js} +1 -1
  40. package/dist/diff_tool/app/dist/assets/{html-derivative-CLdYoNWv.js → html-derivative-BtDKJ__D.js} +1 -1
  41. package/dist/diff_tool/app/dist/assets/{http-BHeQHXaH.js → http-DDVZeUrK.js} +1 -1
  42. package/dist/diff_tool/app/dist/assets/{hurl-CHiE6F8G.js → hurl-jYWcmpTH.js} +1 -1
  43. package/dist/diff_tool/app/dist/assets/index-B1D38aHD.js +1559 -0
  44. package/dist/diff_tool/app/dist/assets/{java-vZct0aFW.js → java-DztsnWnX.js} +1 -1
  45. package/dist/diff_tool/app/dist/assets/{javascript-CYtnIw0K.js → javascript-B9237BHu.js} +1 -1
  46. package/dist/diff_tool/app/dist/assets/{jinja-CLfmA9uq.js → jinja-8JSK8Y6a.js} +1 -1
  47. package/dist/diff_tool/app/dist/assets/{jison-XTtTo0I_.js → jison-B5IknAGj.js} +1 -1
  48. package/dist/diff_tool/app/dist/assets/{json-GZxy-acy.js → json-DRnIZCq8.js} +1 -1
  49. package/dist/diff_tool/app/dist/assets/{jsx-C7hyhPZ0.js → jsx-CFiWn8fZ.js} +1 -1
  50. package/dist/diff_tool/app/dist/assets/{julia-BmMkiSmK.js → julia-BtFBdMTG.js} +1 -1
  51. package/dist/diff_tool/app/dist/assets/{just-RxJWAQxh.js → just-C14ODGGY.js} +1 -1
  52. package/dist/diff_tool/app/dist/assets/{latex-poGrpwNW.js → latex-DeaaLUFy.js} +1 -1
  53. package/dist/diff_tool/app/dist/assets/{liquid-Bi2qx1OK.js → liquid-HEBlYFrk.js} +1 -1
  54. package/dist/diff_tool/app/dist/assets/{lua-CKOivslC.js → lua-CR87cBpR.js} +1 -1
  55. package/dist/diff_tool/app/dist/assets/{marko-B71GrBHJ.js → marko-Eh01TuqB.js} +1 -1
  56. package/dist/diff_tool/app/dist/assets/{mdc-DFiDlus5.js → mdc-B6RhKbU2.js} +1 -1
  57. package/dist/diff_tool/app/dist/assets/{nginx-ByKHg69_.js → nginx-VWZdkDqr.js} +1 -1
  58. package/dist/diff_tool/app/dist/assets/{nim-BwiP7WMs.js → nim-CHz86e8d.js} +1 -1
  59. package/dist/diff_tool/app/dist/assets/{org-Cy_LFEd1.js → org-VhIfCSLb.js} +1 -1
  60. package/dist/diff_tool/app/dist/assets/{perl-L6AmMgUk.js → perl-aD0uyR3K.js} +1 -1
  61. package/dist/diff_tool/app/dist/assets/{php-r2zLMjgX.js → php-DgAIzA1E.js} +1 -1
  62. package/dist/diff_tool/app/dist/assets/{pug-BCKOpP4a.js → pug-DrOOTekJ.js} +1 -1
  63. package/dist/diff_tool/app/dist/assets/{qml-BGFEfuZ-.js → qml-CBowC-In.js} +1 -1
  64. package/dist/diff_tool/app/dist/assets/{r-25U_CdGU.js → r-BDVQ17do.js} +1 -1
  65. package/dist/diff_tool/app/dist/assets/{razor-SIQ_YLlC.js → razor-3Cui7XJA.js} +1 -1
  66. package/dist/diff_tool/app/dist/assets/{regexp-DCxK7MQQ.js → regexp-CGlnek7r.js} +1 -1
  67. package/dist/diff_tool/app/dist/assets/{rst-9_Rowq3o.js → rst-BJ8-NYKF.js} +1 -1
  68. package/dist/diff_tool/app/dist/assets/{ruby-O5wpMn8A.js → ruby-CYg2GUU3.js} +1 -1
  69. package/dist/diff_tool/app/dist/assets/{sas-C-k458kN.js → sas-DfcBvB-I.js} +1 -1
  70. package/dist/diff_tool/app/dist/assets/{scss-BwP9aXVf.js → scss-S7r2xNkU.js} +1 -1
  71. package/dist/diff_tool/app/dist/assets/{shellscript-BFMLRpod.js → shellscript-U4EOW3nV.js} +1 -1
  72. package/dist/diff_tool/app/dist/assets/{shellsession-DlRPuye4.js → shellsession-DYrNCgPk.js} +1 -1
  73. package/dist/diff_tool/app/dist/assets/{soy-C5Ch5nY5.js → soy-B25GTE01.js} +1 -1
  74. package/dist/diff_tool/app/dist/assets/{sql-BHt0XWX7.js → sql-CrqkYif6.js} +1 -1
  75. package/dist/diff_tool/app/dist/assets/{stata-CgvX5dGK.js → stata-CMX2LAnU.js} +1 -1
  76. package/dist/diff_tool/app/dist/assets/{surrealql-Cj3grwXO.js → surrealql-DDFKL5G0.js} +1 -1
  77. package/dist/diff_tool/app/dist/assets/{svelte-DveFys-B.js → svelte-CLZCBtO7.js} +1 -1
  78. package/dist/diff_tool/app/dist/assets/{templ-DmoziF6W.js → templ-BKLVAgyX.js} +1 -1
  79. package/dist/diff_tool/app/dist/assets/{tex-CQEH3eWy.js → tex-DbqBQGS7.js} +1 -1
  80. package/dist/diff_tool/app/dist/assets/{ts-tags-CyATrp4W.js → ts-tags-B9kA6WQP.js} +1 -1
  81. package/dist/diff_tool/app/dist/assets/{tsx-SmI3BYI2.js → tsx-CxQG0405.js} +1 -1
  82. package/dist/diff_tool/app/dist/assets/{twig-CZdHY8II.js → twig-0z1Xause.js} +1 -1
  83. package/dist/diff_tool/app/dist/assets/{typescript-BEXbDl0M.js → typescript-R3tpeET4.js} +1 -1
  84. package/dist/diff_tool/app/dist/assets/{typst-DVVDEOeR.js → typst-DiHSix3p.js} +1 -1
  85. package/dist/diff_tool/app/dist/assets/{vue-cLMg-8kU.js → vue-C-Pb_COm.js} +1 -1
  86. package/dist/diff_tool/app/dist/assets/{vue-html-DsBku6bW.js → vue-html-CA18u2Ne.js} +1 -1
  87. package/dist/diff_tool/app/dist/assets/{vue-vine-CJ-uTo5p.js → vue-vine-CMnXmPqz.js} +1 -1
  88. package/dist/diff_tool/app/dist/assets/{xml-DFarLFG4.js → xml-5qEjbdVg.js} +1 -1
  89. package/dist/diff_tool/app/dist/assets/{xsl-C-KcDKTd.js → xsl-CeJj5xD1.js} +1 -1
  90. package/dist/diff_tool/app/dist/assets/{yaml-C-7s0ZGy.js → yaml-C2k4Cqy8.js} +1 -1
  91. package/dist/diff_tool/app/dist/index.html +1 -1
  92. package/dist/host/hosted_ephemeral_agent_session.js +18 -4
  93. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  94. package/dist/host/local_session_host.js +54 -7
  95. package/dist/host/local_session_host.js.map +1 -1
  96. package/dist/host/session_protocol_handler.js +29 -2
  97. package/dist/host/session_protocol_handler.js.map +1 -1
  98. package/dist/protocol/session_protocol.js +22 -5
  99. package/dist/protocol/session_protocol.js.map +1 -1
  100. package/dist/tui/listen_capture.js +0 -1
  101. package/dist/tui/listen_capture.js.map +1 -1
  102. package/dist/tui/session_chat_controller.js +255 -39
  103. package/dist/tui/session_chat_controller.js.map +1 -1
  104. package/dist/tui/ui/footer.js +1 -1
  105. package/dist/tui/ui/footer.js.map +1 -1
  106. package/package.json +9 -9
  107. package/dist/diff_tool/app/dist/assets/index-ryW0IvBs.js +0 -1565
@@ -172,10 +172,11 @@ const CODER_SYSTEM_PROMPT = [
172
172
  ].join("\n\n");
173
173
  const PERSONA_SPECS = [
174
174
  {
175
- id: "gemini-3.7-flash",
176
- description: "Gemini 3.7 Flash",
175
+ id: "gemini-3.8-flash",
176
+ description: "Gemini 3.8 Flash",
177
177
  provider: "google",
178
- modelId: "gemini-3.7-flash",
178
+ modelId: "gemini-3.8-flash",
179
+ catalogOnly: true,
179
180
  allowedReasoningLevels: ["low", "medium", "high"],
180
181
  settings: { reasoning: "medium" },
181
182
  skills: "*",
@@ -261,6 +262,46 @@ const PERSONA_SPECS = [
261
262
  settings: { reasoning: "medium", serviceTier: "priority" },
262
263
  skills: "*",
263
264
  },
265
+ {
266
+ id: "gpt-6-astra",
267
+ description: "GPT-6 Astra",
268
+ provider: "openai",
269
+ modelId: "gpt-6-astra",
270
+ catalogOnly: true,
271
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh", "max"],
272
+ settings: { reasoning: "medium" },
273
+ skills: "*",
274
+ },
275
+ {
276
+ id: "gpt-6-astra-chatgpt",
277
+ description: "GPT-6 Astra (ChatGPT)",
278
+ provider: "openai-codex",
279
+ modelId: "gpt-6-astra",
280
+ catalogOnly: true,
281
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh", "max"],
282
+ settings: { reasoning: "medium" },
283
+ skills: "*",
284
+ },
285
+ {
286
+ id: "gpt-6-astra-chatgpt-fast",
287
+ description: "GPT-6 Astra Fast (ChatGPT)",
288
+ provider: "openai-codex",
289
+ modelId: "gpt-6-astra",
290
+ catalogOnly: true,
291
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh", "max"],
292
+ settings: { reasoning: "medium", serviceTier: "priority" },
293
+ skills: "*",
294
+ },
295
+ {
296
+ id: "fable-5.1",
297
+ description: "Claude Fable 5.1",
298
+ provider: "anthropic",
299
+ modelId: "claude-fable-5-1",
300
+ catalogOnly: true,
301
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh", "max"],
302
+ settings: { reasoning: "medium" },
303
+ skills: "*",
304
+ },
264
305
  {
265
306
  id: "opus-5",
266
307
  description: "Claude Opus 5",
@@ -329,6 +370,9 @@ function buildPersona(spec, variant, modelResolver) {
329
370
  }
330
371
  export function createBuiltinPersonas(modelResolver = resolveModel) {
331
372
  return PERSONA_SPECS.flatMap((spec) => {
373
+ if (spec.catalogOnly && !modelResolver(spec.provider, spec.modelId)) {
374
+ return [];
375
+ }
332
376
  if (spec.id.includes("-codex-")) {
333
377
  const coderPersona = buildPersona(spec, "coder", modelResolver);
334
378
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/core/personas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/core/personas.ts"],"names":[],"mappings":"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"}
@@ -186,7 +186,7 @@ Different changes have different owners:
186
186
 
187
187
  ## Reconnect and observe safely
188
188
 
189
- A WebSocket connection observes a hosted session; it does not own or delete it. If a TUI disconnects while a turn runs, the host keeps working. Reattach with the same session id to obtain the current persisted state and continue receiving updates.
189
+ A WebSocket connection observes a hosted session; it does not own or delete its durable state. After the last observer disconnects, the host unloads an idle live runtime while retaining its persisted snapshot. If a client disconnects while work runs, the host keeps working and unloads the runtime only after that work settles. Reattach with the same session id to recover the current persisted state and continue receiving updates.
190
190
 
191
191
  A clean `tau serve` shutdown interrupts active work, persists live sessions, and closes clients. On restart, the host lists sessions whose execution environments it can restore. Recovery returns sessions idle, drops pending queued and steering messages, discards live subagents, and changes an active persistent goal to blocked. Use `/goal resume` only after checking why the host stopped.
192
192
 
@@ -280,16 +280,16 @@ An attachment-only DM queues files for the next text or voice/audio turn; it doe
280
280
 
281
281
  The local execution environment can access these runner temporary paths. Pending attachments and group context are not snapshot data. Shutdown clears their queues, and startup removes stale `tau-telegram-attachments-*` directories.
282
282
 
283
- Telegram `voice` and `audio` messages are downloaded and transcribed. Direct DM turns and bot-triggering group turns echo the transcript to the chat before submission so the sender can verify it.
283
+ Telegram `voice` and `audio` messages up to 20 minutes long are downloaded and transcribed. Direct DM turns and bot-triggering group turns echo the transcript to the chat before submission so the sender can verify it.
284
284
 
285
285
  OpenAI is the default. Select Gemini with `speechToText.provider`. Runner credentials are:
286
286
 
287
287
  - Gemini: `GEMINI_API_KEY`, then `apiKeys.google`
288
288
  - OpenAI: `OPENAI_API_KEY`, then `apiKeys.openai`
289
289
 
290
- Gemini extracts spelling hints from recent conversation with Gemini 3.7 Flash, uploads downloaded audio for `gemini-3.5-transcribe` smart transcription, and attempts to delete the remote file afterward. OpenAI normalizes downloaded audio with runner-side `ffmpeg` and uploads it to `gpt-transcribe`. Missing keys reject the audio. See [credentials](credentials.md).
290
+ Gemini extracts spelling hints from recent conversation with Gemini 3.8 Flash, uploads downloaded audio for `gemini-3.5-transcribe` smart transcription, and attempts to delete the remote file afterward. OpenAI normalizes downloaded audio with runner-side `ffmpeg` and uploads it to `gpt-transcribe`. Missing keys reject the audio. See [credentials](credentials.md).
291
291
 
292
- `/tts_on` uses `gemini-3.7-flash`, `gemini-3.1-flash-tts-preview`, Despina, the Google key, and runner `ffmpeg` with Opus. Source and rewritten text each allow 10,000 Unicode characters; audio allows 32 MiB. Rewrite and job timeouts are one and five minutes. Jobs are ephemeral. Failure sends `voice response failed. please try again.` without affecting text; details stay in logs.
292
+ `/tts_on` uses `gemini-3.8-flash`, `gemini-3.1-flash-tts-preview`, Despina, the Google key, and runner `ffmpeg` with Opus. Source and rewritten text each allow 10,000 Unicode characters; audio allows 32 MiB. Rewrite and job timeouts are one and five minutes. Jobs are ephemeral. Failure sends `voice response failed. please try again.` without affecting text; details stay in logs.
293
293
 
294
294
  ## Command client tools
295
295
 
@@ -197,9 +197,9 @@ The TUI also advertises diff review as a client tool unless `--no-client-tools`
197
197
 
198
198
  ## Use speech
199
199
 
200
- `/listen` and Ctrl+Y are currently macOS-only. Recording uses local `ffmpeg` with the AVFoundation audio input and stops when Ctrl+Y is pressed again, when Escape is pressed, or after five minutes. Startup fails if the microphone produces no audio within 15 seconds. The transcript is inserted at the cursor for review and is not submitted automatically.
200
+ `/listen` and Ctrl+Y are currently macOS-only. Recording uses local `ffmpeg` with the AVFoundation audio input and stops when Ctrl+Y is pressed again, when Escape is pressed, or after 20 minutes. Startup fails if the microphone produces no audio within 15 seconds. Stopping manually or reaching the 20-minute limit finishes transcription and inserts the transcript at the cursor for review without submitting it.
201
201
 
202
- If transcription fails, Tau retains the local WAV and reports its path. Run `/listen retry` to transcribe the same audio again with the current provider and conversation context, or `/listen discard` to delete it. A replacement recording deletes the retained file only after the new capture starts producing audio. Tau keeps at most one failed recording, and exiting leaves that file at the reported path for manual recovery. For live transcription, both providers extract spelling hints from recent conversation while recording begins, buffer audio until the transcription session is ready, and then stream subsequent audio. Gemini uses Gemini 3.7 Flash for hint extraction and `gemini-3.5-transcribe-live` in smart mode; OpenAI uses GPT-5.6 Luna and `gpt-live-transcribe`. Hint extraction failure does not fail transcription. On retry, Gemini uploads the retained recording for `gemini-3.5-transcribe` smart transcription and attempts to delete the remote file afterward; OpenAI uploads it to `gpt-transcribe` with recent context.
202
+ If transcription fails, Tau retains the local WAV and reports its path. Run `/listen retry` to transcribe the same audio again with the current provider and conversation context, or `/listen discard` to delete it. Retained recordings longer than 20 minutes are rejected rather than sent to the provider. A replacement recording deletes the retained file only after the new capture starts producing audio. Tau keeps at most one failed recording, and exiting leaves that file at the reported path for manual recovery. For live transcription, both providers extract spelling hints from recent conversation while recording begins, buffer audio until the transcription session is ready, and then stream subsequent audio. Gemini uses Gemini 3.8 Flash for hint extraction and `gemini-3.5-transcribe-live` in smart mode; OpenAI uses GPT-5.6 Luna and `gpt-live-transcribe`. Hint extraction failure does not fail transcription. On retry, Gemini uploads the retained recording for `gemini-3.5-transcribe` smart transcription and attempts to delete the remote file afterward; OpenAI uploads it to `gpt-transcribe` with recent context.
203
203
 
204
204
  Install `ffmpeg` and configure a speech-to-text provider:
205
205
 
@@ -4,7 +4,7 @@ import { basename, extname, join } from "node:path";
4
4
  import { z } from "zod";
5
5
  import { TauSessionProtocolResponseError } from "../../transport/errors.js";
6
6
  import { formatAdaptiveNumber, formatTokenWindow } from "../utils/format.js";
7
- import { createSpeechToTextTranscription, } from "../utils/speech_to_text.js";
7
+ import { createSpeechToTextTranscription, SPEECH_TO_TEXT_CLIENT_MAX_DURATION_MS, } from "../utils/speech_to_text.js";
8
8
  import { collectSpeechToTextContext, } from "../utils/speech_to_text_context.js";
9
9
  import { formatTauUserText, splitTauUserText } from "../utils/user_metadata.js";
10
10
  import { formatZodError } from "../utils/zod.js";
@@ -517,9 +517,14 @@ const TelegramPhotoVariantSchema = telegramPartialObject({
517
517
  width: z.number(),
518
518
  height: z.number(),
519
519
  });
520
- const TelegramVoiceSchema = TelegramFileSchema.pick({ file_id: true, mime_type: true });
521
- const TelegramAudioSchema = TelegramFileSchema.pick({
520
+ const TelegramVoiceSchema = TelegramFileSchema.extend({
521
+ duration: z.number().int().nonnegative(),
522
+ }).pick({ file_id: true, duration: true, mime_type: true });
523
+ const TelegramAudioSchema = TelegramFileSchema.extend({
524
+ duration: z.number().int().nonnegative(),
525
+ }).pick({
522
526
  file_id: true,
527
+ duration: true,
523
528
  mime_type: true,
524
529
  file_name: true,
525
530
  });
@@ -1202,22 +1207,26 @@ class TelegramAdapterImpl {
1202
1207
  await this.answerCallbackQuery(callbackQuery.id, callbackHandled ? "done" : undefined);
1203
1208
  }
1204
1209
  parseAudioMessage(message) {
1205
- const voiceFileId = message.voice?.file_id?.trim();
1206
- if (voiceFileId) {
1210
+ const voice = message.voice;
1211
+ const voiceFileId = voice?.file_id?.trim();
1212
+ if (voice && voiceFileId) {
1207
1213
  return {
1208
1214
  fileId: voiceFileId,
1209
- mimeType: message.voice?.mime_type?.trim() || DEFAULT_TELEGRAM_VOICE_MIME_TYPE,
1215
+ durationMs: voice.duration * 1_000,
1216
+ mimeType: voice.mime_type?.trim() || DEFAULT_TELEGRAM_VOICE_MIME_TYPE,
1210
1217
  fileName: DEFAULT_TELEGRAM_VOICE_FILE_NAME,
1211
1218
  };
1212
1219
  }
1213
- const audioFileId = message.audio?.file_id?.trim();
1214
- if (!audioFileId) {
1220
+ const audio = message.audio;
1221
+ const audioFileId = audio?.file_id?.trim();
1222
+ if (!audio || !audioFileId) {
1215
1223
  return undefined;
1216
1224
  }
1217
1225
  return {
1218
1226
  fileId: audioFileId,
1219
- mimeType: message.audio?.mime_type?.trim() || DEFAULT_TELEGRAM_AUDIO_MIME_TYPE,
1220
- fileName: message.audio?.file_name?.trim() || DEFAULT_TELEGRAM_AUDIO_FILE_NAME,
1227
+ durationMs: audio.duration * 1_000,
1228
+ mimeType: audio.mime_type?.trim() || DEFAULT_TELEGRAM_AUDIO_MIME_TYPE,
1229
+ fileName: audio.file_name?.trim() || DEFAULT_TELEGRAM_AUDIO_FILE_NAME,
1221
1230
  };
1222
1231
  }
1223
1232
  async queueMessageAttachments(chatId, message, options = {}) {
@@ -1915,6 +1924,13 @@ class TelegramAdapterImpl {
1915
1924
  }
1916
1925
  }
1917
1926
  async transcribeTelegramAudio(chatId, message, options = {}) {
1927
+ if (message.durationMs > SPEECH_TO_TEXT_CLIENT_MAX_DURATION_MS) {
1928
+ const error = "audio transcription failed: audio is longer than 20 minutes";
1929
+ if (!options.silent) {
1930
+ await this.reply(chatId, error);
1931
+ }
1932
+ return { error };
1933
+ }
1918
1934
  const apiKey = this.getSpeechToTextApiKey();
1919
1935
  if (!apiKey) {
1920
1936
  const error = this.getSpeechToTextApiKeyErrorMessage("transcribe Telegram audio");