@markusylisiurunen/tau 0.3.79 → 0.3.81

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 (323) hide show
  1. package/dist/code_mode/command.js +4 -16
  2. package/dist/code_mode/command.js.map +1 -1
  3. package/dist/code_mode/images.js +5 -6
  4. package/dist/code_mode/images.js.map +1 -1
  5. package/dist/code_mode/index.d.ts +1 -3
  6. package/dist/code_mode/index.js +1 -2
  7. package/dist/code_mode/index.js.map +1 -1
  8. package/dist/code_mode/runtime.d.ts +8 -4
  9. package/dist/code_mode/runtime.js +52 -63
  10. package/dist/code_mode/runtime.js.map +1 -1
  11. package/dist/core/agent/agent_runtime.js +68 -76
  12. package/dist/core/agent/agent_runtime.js.map +1 -1
  13. package/dist/core/auth/auth_manager.js +3 -7
  14. package/dist/core/auth/auth_manager.js.map +1 -1
  15. package/dist/core/auth/auth_messages.js +1 -1
  16. package/dist/core/auth/auth_messages.js.map +1 -1
  17. package/dist/core/auth/auth_storage.js +71 -7
  18. package/dist/core/auth/auth_storage.js.map +1 -1
  19. package/dist/core/auth/cli.js +8 -7
  20. package/dist/core/auth/cli.js.map +1 -1
  21. package/dist/core/auth/credential_store.js +88 -186
  22. package/dist/core/auth/credential_store.js.map +1 -1
  23. package/dist/core/auth/index.js +1 -1
  24. package/dist/core/auth/index.js.map +1 -1
  25. package/dist/core/auth/providers/openai_codex.js +51 -229
  26. package/dist/core/auth/providers/openai_codex.js.map +1 -1
  27. package/dist/core/cli.js +1 -2
  28. package/dist/core/cli.js.map +1 -1
  29. package/dist/core/code_mode/bash.js +269 -0
  30. package/dist/core/code_mode/bash.js.map +1 -0
  31. package/dist/core/code_mode/capability.js +2 -0
  32. package/dist/core/code_mode/capability.js.map +1 -0
  33. package/dist/core/code_mode/history.js +62 -0
  34. package/dist/core/code_mode/history.js.map +1 -0
  35. package/dist/core/code_mode/mcp.js +121 -0
  36. package/dist/core/code_mode/mcp.js.map +1 -0
  37. package/dist/core/code_mode/models.js +256 -0
  38. package/dist/core/code_mode/models.js.map +1 -0
  39. package/dist/core/{tools → code_mode}/nook.js +13 -77
  40. package/dist/core/code_mode/nook.js.map +1 -0
  41. package/dist/core/code_mode/sdk.js +97 -0
  42. package/dist/core/code_mode/sdk.js.map +1 -0
  43. package/dist/core/{tools → code_mode}/web.js +31 -90
  44. package/dist/core/code_mode/web.js.map +1 -0
  45. package/dist/core/config/content_loader.js +30 -131
  46. package/dist/core/config/content_loader.js.map +1 -1
  47. package/dist/core/config/index.js.map +1 -1
  48. package/dist/core/config/paths.js +0 -1
  49. package/dist/core/config/paths.js.map +1 -1
  50. package/dist/core/config/runtime.js +3 -2
  51. package/dist/core/config/runtime.js.map +1 -1
  52. package/dist/core/config/runtime_config_snapshot.js +23 -9
  53. package/dist/core/config/runtime_config_snapshot.js.map +1 -1
  54. package/dist/core/config/schema.js +13 -69
  55. package/dist/core/config/schema.js.map +1 -1
  56. package/dist/core/config/skills_loader.js +6 -2
  57. package/dist/core/config/skills_loader.js.map +1 -1
  58. package/dist/core/debug.js +2 -17
  59. package/dist/core/debug.js.map +1 -1
  60. package/dist/core/index.js +3 -3
  61. package/dist/core/index.js.map +1 -1
  62. package/dist/core/models/catalog.js +2 -239
  63. package/dist/core/models/catalog.js.map +1 -1
  64. package/dist/core/models/openrouter.js +171 -0
  65. package/dist/core/models/openrouter.js.map +1 -0
  66. package/dist/core/models/openrouter_decisions.js +96 -0
  67. package/dist/core/models/openrouter_decisions.js.map +1 -0
  68. package/dist/core/models/openrouter_media.js +128 -0
  69. package/dist/core/models/openrouter_media.js.map +1 -0
  70. package/dist/core/personas.js +2 -15
  71. package/dist/core/personas.js.map +1 -1
  72. package/dist/core/runtime/agent_model.js +0 -3
  73. package/dist/core/runtime/agent_model.js.map +1 -1
  74. package/dist/core/runtime/chat_runtime.js +16 -13
  75. package/dist/core/runtime/chat_runtime.js.map +1 -1
  76. package/dist/core/runtime/runtime_bootstrap.js +12 -59
  77. package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
  78. package/dist/core/session/auto_compaction_archive.js +1 -1
  79. package/dist/core/session/auto_compaction_archive.js.map +1 -1
  80. package/dist/core/session/compaction.js +80 -505
  81. package/dist/core/session/compaction.js.map +1 -1
  82. package/dist/core/static/code_mode/history/documentation.md +95 -167
  83. package/dist/core/static/code_mode/mcp/documentation.md +144 -67
  84. package/dist/core/static/code_mode/nook/documentation.md +108 -169
  85. package/dist/core/static/code_mode/sandbox_runner.mjs +37 -20
  86. package/dist/core/static/code_mode/web/documentation.md +115 -213
  87. package/dist/core/static/tau_docs/client-tools.md +3 -3
  88. package/dist/core/static/tau_docs/config-reference.md +12 -37
  89. package/dist/core/static/tau_docs/configuration.md +3 -16
  90. package/dist/core/static/tau_docs/credentials.md +20 -50
  91. package/dist/core/static/tau_docs/history.md +2 -2
  92. package/dist/core/static/tau_docs/index.md +2 -1
  93. package/dist/core/static/tau_docs/manifest.json +1 -0
  94. package/dist/core/static/tau_docs/models.md +8 -159
  95. package/dist/core/static/tau_docs/node-sdk.md +5 -3
  96. package/dist/core/static/tau_docs/nook.md +2 -2
  97. package/dist/core/static/tau_docs/openrouter.md +165 -0
  98. package/dist/core/static/tau_docs/ownership-and-scope.md +3 -3
  99. package/dist/core/static/tau_docs/personas.md +11 -43
  100. package/dist/core/static/tau_docs/prompts-and-project-context.md +10 -44
  101. package/dist/core/static/tau_docs/remote-sessions.md +6 -7
  102. package/dist/core/static/tau_docs/security.md +7 -8
  103. package/dist/core/static/tau_docs/session-protocol-methods.md +0 -1
  104. package/dist/core/static/tau_docs/session-protocol.md +11 -9
  105. package/dist/core/static/tau_docs/sessions.md +10 -6
  106. package/dist/core/static/tau_docs/skills.md +8 -32
  107. package/dist/core/static/tau_docs/subagents.md +4 -3
  108. package/dist/core/static/tau_docs/telegram.md +2 -2
  109. package/dist/core/static/tau_docs/tools.md +37 -33
  110. package/dist/core/static/tau_docs/troubleshooting.md +11 -12
  111. package/dist/core/static/tau_docs/tui.md +9 -5
  112. package/dist/core/subagents/agent_supervisor.js +0 -1
  113. package/dist/core/subagents/agent_supervisor.js.map +1 -1
  114. package/dist/core/subagents/registry.js +2 -1
  115. package/dist/core/subagents/registry.js.map +1 -1
  116. package/dist/core/subagents/types.js +2 -1
  117. package/dist/core/subagents/types.js.map +1 -1
  118. package/dist/core/telegram/adapter.js +1 -1
  119. package/dist/core/telegram/adapter.js.map +1 -1
  120. package/dist/core/tool/cli.js +10 -2
  121. package/dist/core/tool/cli.js.map +1 -1
  122. package/dist/core/tool/image_generate.js +2 -1
  123. package/dist/core/tool/image_generate.js.map +1 -1
  124. package/dist/core/tool/media.js +1 -49
  125. package/dist/core/tool/media.js.map +1 -1
  126. package/dist/core/tool/openrouter.js +159 -0
  127. package/dist/core/tool/openrouter.js.map +1 -0
  128. package/dist/core/tool/openrouter_input.js +77 -0
  129. package/dist/core/tool/openrouter_input.js.map +1 -0
  130. package/dist/core/tool/speech_generate.js +2 -1
  131. package/dist/core/tool/speech_generate.js.map +1 -1
  132. package/dist/core/tools/bash.js +2 -1
  133. package/dist/core/tools/bash.js.map +1 -1
  134. package/dist/core/tools/bash_jobs.js +34 -5
  135. package/dist/core/tools/bash_jobs.js.map +1 -1
  136. package/dist/core/tools/catalog.js +18 -33
  137. package/dist/core/tools/catalog.js.map +1 -1
  138. package/dist/core/tools/code.js +100 -0
  139. package/dist/core/tools/code.js.map +1 -0
  140. package/dist/core/tools/code_mode.js +9 -30
  141. package/dist/core/tools/code_mode.js.map +1 -1
  142. package/dist/core/tools/code_mode_worker.js +2 -2
  143. package/dist/core/tools/presentation.js +2 -1
  144. package/dist/core/tools/presentation.js.map +1 -1
  145. package/dist/core/tools/tau_docs.js +1 -0
  146. package/dist/core/tools/tau_docs.js.map +1 -1
  147. package/dist/core/tools/tool_names.js +5 -1
  148. package/dist/core/tools/tool_names.js.map +1 -1
  149. package/dist/core/utils/gemini_transcription.js +14 -15
  150. package/dist/core/utils/gemini_transcription.js.map +1 -1
  151. package/dist/core/utils/media_validation.js +50 -0
  152. package/dist/core/utils/media_validation.js.map +1 -0
  153. package/dist/core/utils/model_stream.js +47 -34
  154. package/dist/core/utils/model_stream.js.map +1 -1
  155. package/dist/core/utils/user_metadata.js +2 -27
  156. package/dist/core/utils/user_metadata.js.map +1 -1
  157. package/dist/core/version.js +2 -2
  158. package/dist/core/version.js.map +1 -1
  159. package/dist/diff_tool/app/dist/assets/{ada-C5qYipkI.js → ada-X3Y2mlq2.js} +1 -1
  160. package/dist/diff_tool/app/dist/assets/{ahk-CA9gdOdF.js → ahk-DwADkxyd.js} +1 -1
  161. package/dist/diff_tool/app/dist/assets/{angular-html-CnO8qept.js → angular-html-BbLgbIhq.js} +1 -1
  162. package/dist/diff_tool/app/dist/assets/{angular-ts-DPXUio9Z.js → angular-ts-DXk17TRM.js} +1 -1
  163. package/dist/diff_tool/app/dist/assets/{apl-X8YsymsQ.js → apl-BsvksCXR.js} +1 -1
  164. package/dist/diff_tool/app/dist/assets/{astro-BQ9k8AQ0.js → astro-DH775E4V.js} +1 -1
  165. package/dist/diff_tool/app/dist/assets/beancount-C2IN4Vk8.js +1 -0
  166. package/dist/diff_tool/app/dist/assets/{blade-DZ1LYIzB.js → blade-Ck99Rm59.js} +1 -1
  167. package/dist/diff_tool/app/dist/assets/{c-VLTwNh7z.js → c-DJpHqu5J.js} +1 -1
  168. package/dist/diff_tool/app/dist/assets/{chapel-5s-sGN8D.js → chapel-Owff0Csy.js} +1 -1
  169. package/dist/diff_tool/app/dist/assets/{cobol-C9RzwrVu.js → cobol-Cv2gZuhO.js} +1 -1
  170. package/dist/diff_tool/app/dist/assets/{coffee-BHvjZ343.js → coffee-Bji0YCf_.js} +1 -1
  171. package/dist/diff_tool/app/dist/assets/coq-CGaSfhwR.js +1 -0
  172. package/dist/diff_tool/app/dist/assets/{cpp-CBTVXbBp.js → cpp-DTjA_yFF.js} +1 -1
  173. package/dist/diff_tool/app/dist/assets/{crystal-DQJua4y4.js → crystal-Dd00NOeb.js} +1 -1
  174. package/dist/diff_tool/app/dist/assets/csharp-dmMxLVLW.js +1 -0
  175. package/dist/diff_tool/app/dist/assets/css-D44TN1V6.js +1 -0
  176. package/dist/diff_tool/app/dist/assets/dart-CHZY9Xhz.js +1 -0
  177. package/dist/diff_tool/app/dist/assets/dotenv-CuH5my32.js +1 -0
  178. package/dist/diff_tool/app/dist/assets/{edge-BmdmXGH4.js → edge-CVmGSi2m.js} +1 -1
  179. package/dist/diff_tool/app/dist/assets/{elixir-oiOLs98L.js → elixir-B8Mq7no2.js} +1 -1
  180. package/dist/diff_tool/app/dist/assets/{elm-BgYuiU4E.js → elm-CXS0I3Z2.js} +1 -1
  181. package/dist/diff_tool/app/dist/assets/emacs-lisp-DR2vtWaj.js +1 -0
  182. package/dist/diff_tool/app/dist/assets/{erb-CvFrXpyY.js → erb-B9oDKaUo.js} +1 -1
  183. package/dist/diff_tool/app/dist/assets/{git-rebase-D3Zo1BLH.js → git-rebase-DT-YFebH.js} +1 -1
  184. package/dist/diff_tool/app/dist/assets/{glimmer-js-B4-8E3lJ.js → glimmer-js-s0DXlNjq.js} +1 -1
  185. package/dist/diff_tool/app/dist/assets/{glimmer-ts-CtKkD0t_.js → glimmer-ts-QgEB5S2z.js} +1 -1
  186. package/dist/diff_tool/app/dist/assets/{glsl-BAqforx_.js → glsl-NA0icwbY.js} +1 -1
  187. package/dist/diff_tool/app/dist/assets/gn-CAXYAgV-.js +1 -0
  188. package/dist/diff_tool/app/dist/assets/{graphql-DuE1RMyL.js → graphql-0_dOlfV0.js} +1 -1
  189. package/dist/diff_tool/app/dist/assets/{hack-CHBcXjz1.js → hack-D-mr7l1l.js} +1 -1
  190. package/dist/diff_tool/app/dist/assets/{haml-DAs2z3tD.js → haml-B0-oQmz7.js} +1 -1
  191. package/dist/diff_tool/app/dist/assets/handlebars-Yq9bXpWN.js +1 -0
  192. package/dist/diff_tool/app/dist/assets/{html-D5co0BLD.js → html-B8bMmdRK.js} +1 -1
  193. package/dist/diff_tool/app/dist/assets/{html-derivative-BZaWEmAT.js → html-derivative-BpxSlQb_.js} +1 -1
  194. package/dist/diff_tool/app/dist/assets/{http-Cii5MjJE.js → http-hS_53mxt.js} +1 -1
  195. package/dist/diff_tool/app/dist/assets/{hurl-Bur-XdJO.js → hurl-B2ST1kwl.js} +1 -1
  196. package/dist/diff_tool/app/dist/assets/index-CBT_sNIz.js +340 -0
  197. package/dist/diff_tool/app/dist/assets/{java-DN39wI4w.js → java-D4mj0lZJ.js} +1 -1
  198. package/dist/diff_tool/app/dist/assets/{javascript-VUReF1H4.js → javascript-wC7rrKiV.js} +1 -1
  199. package/dist/diff_tool/app/dist/assets/{jinja-BcrfV1JB.js → jinja-DbQ3o87F.js} +1 -1
  200. package/dist/diff_tool/app/dist/assets/{jison-Bez5Mtmy.js → jison-CrE9FdvP.js} +1 -1
  201. package/dist/diff_tool/app/dist/assets/{json-ChV8m0Le.js → json-xjicDyWN.js} +1 -1
  202. package/dist/diff_tool/app/dist/assets/{jsx-D0SXNtM0.js → jsx-m28lXojQ.js} +1 -1
  203. package/dist/diff_tool/app/dist/assets/{julia-DvhpcBwG.js → julia-19xkOmop.js} +1 -1
  204. package/dist/diff_tool/app/dist/assets/{just-BGwe8S6x.js → just-Cf7OorTr.js} +1 -1
  205. package/dist/diff_tool/app/dist/assets/latex-DDb7GQOy.js +1 -0
  206. package/dist/diff_tool/app/dist/assets/{liquid-UdnqDjKz.js → liquid-DHOuQ0rf.js} +1 -1
  207. package/dist/diff_tool/app/dist/assets/{lua-CjDHeHEr.js → lua-BGyIvonw.js} +1 -1
  208. package/dist/diff_tool/app/dist/assets/luau-VGWVLoqX.js +1 -0
  209. package/dist/diff_tool/app/dist/assets/marko-DB5OqI1C.js +1 -0
  210. package/dist/diff_tool/app/dist/assets/{mdc-BOLj6Oyq.js → mdc-DTyNMupO.js} +1 -1
  211. package/dist/diff_tool/app/dist/assets/monokai-BscAjiQZ.js +1 -0
  212. package/dist/diff_tool/app/dist/assets/moonbit-D9W784E_.js +1 -0
  213. package/dist/diff_tool/app/dist/assets/nextflow-CSgcYZcx.js +1 -0
  214. package/dist/diff_tool/app/dist/assets/{nextflow-groovy-DJMQeKeT.js → nextflow-groovy-D7IRt6Pp.js} +1 -1
  215. package/dist/diff_tool/app/dist/assets/{nginx-5r5xPc2T.js → nginx-DfF0fMYD.js} +1 -1
  216. package/dist/diff_tool/app/dist/assets/{nim-9exKQYMz.js → nim-BbwsXuZD.js} +1 -1
  217. package/dist/diff_tool/app/dist/assets/nushell--0fT3PI1.js +1 -0
  218. package/dist/diff_tool/app/dist/assets/one-dark-pro-C6YyR8OD.js +1 -0
  219. package/dist/diff_tool/app/dist/assets/{org-B2fpAlbt.js → org-BkOBBl1f.js} +1 -1
  220. package/dist/diff_tool/app/dist/assets/{perl-DV2fcwyY.js → perl-BTXTOl4K.js} +1 -1
  221. package/dist/diff_tool/app/dist/assets/php-DIMVQWiA.js +1 -0
  222. package/dist/diff_tool/app/dist/assets/{powershell-CCSX75yM.js → powershell-QtSnmXcu.js} +1 -1
  223. package/dist/diff_tool/app/dist/assets/{pug-DuKcQxFj.js → pug-B_nrb4dJ.js} +1 -1
  224. package/dist/diff_tool/app/dist/assets/{qml-C16b4SYx.js → qml-1PXi8G8Z.js} +1 -1
  225. package/dist/diff_tool/app/dist/assets/{r-B1ZldnJf.js → r-CJrAkc2Z.js} +1 -1
  226. package/dist/diff_tool/app/dist/assets/{razor-TYmslaAB.js → razor-DgPUftNd.js} +1 -1
  227. package/dist/diff_tool/app/dist/assets/red-CYlAq2b0.js +1 -0
  228. package/dist/diff_tool/app/dist/assets/{regexp-dWCffmDD.js → regexp-C2hS8XvL.js} +1 -1
  229. package/dist/diff_tool/app/dist/assets/{rst-DEkLr2YR.js → rst-CDouhKnc.js} +1 -1
  230. package/dist/diff_tool/app/dist/assets/{ruby-BJnJzr4u.js → ruby-CAjKW1uO.js} +1 -1
  231. package/dist/diff_tool/app/dist/assets/rust-DpiIf5JO.js +1 -0
  232. package/dist/diff_tool/app/dist/assets/{sas-DeRsDbUE.js → sas-qAHkHLc1.js} +1 -1
  233. package/dist/diff_tool/app/dist/assets/{scss-SGV_CwKm.js → scss-Bfx2Ydid.js} +1 -1
  234. package/dist/diff_tool/app/dist/assets/{shellscript-BI7khmmR.js → shellscript-Bu76R8y2.js} +1 -1
  235. package/dist/diff_tool/app/dist/assets/{shellsession-Nupw_Vvw.js → shellsession-BU8BL0oL.js} +1 -1
  236. package/dist/diff_tool/app/dist/assets/solarized-dark-b97czJOk.js +1 -0
  237. package/dist/diff_tool/app/dist/assets/solarized-light-DFPxpIYQ.js +1 -0
  238. package/dist/diff_tool/app/dist/assets/{soy-B96cBzxv.js → soy-FRl8ozP-.js} +1 -1
  239. package/dist/diff_tool/app/dist/assets/sql-BacQgsEs.js +1 -0
  240. package/dist/diff_tool/app/dist/assets/{stata-Dnq48cE6.js → stata-B9kkG-ET.js} +1 -1
  241. package/dist/diff_tool/app/dist/assets/{surrealql-D6lw4TiD.js → surrealql-qvETr7iY.js} +1 -1
  242. package/dist/diff_tool/app/dist/assets/{svelte-ChVoq9tB.js → svelte-B0z1MgHc.js} +1 -1
  243. package/dist/diff_tool/app/dist/assets/{templ-Dh1EXuHD.js → templ-DTnPshKb.js} +1 -1
  244. package/dist/diff_tool/app/dist/assets/{tex-KTYusNFe.js → tex-Cosab9_H.js} +1 -1
  245. package/dist/diff_tool/app/dist/assets/{ts-tags-DC2RU1_R.js → ts-tags-DNYvLFUH.js} +1 -1
  246. package/dist/diff_tool/app/dist/assets/{tsx-DtIM39Jy.js → tsx-Dstq6j1a.js} +1 -1
  247. package/dist/diff_tool/app/dist/assets/twig-BzqZdwaX.js +1 -0
  248. package/dist/diff_tool/app/dist/assets/{typescript-BGAE5iuw.js → typescript-YOQ_oE25.js} +1 -1
  249. package/dist/diff_tool/app/dist/assets/typespec-BGhR2SqG.js +1 -0
  250. package/dist/diff_tool/app/dist/assets/{typst-nWoGZ22y.js → typst-DTffwfpc.js} +1 -1
  251. package/dist/diff_tool/app/dist/assets/{vue-iyHf-l4z.js → vue-D4OMj_C5.js} +1 -1
  252. package/dist/diff_tool/app/dist/assets/{vue-html-prNdIjLu.js → vue-html-kT4WrHGK.js} +1 -1
  253. package/dist/diff_tool/app/dist/assets/{vue-vine-KSSlnVeg.js → vue-vine-CxeapeMO.js} +1 -1
  254. package/dist/diff_tool/app/dist/assets/{xml-DdCC83Xd.js → xml-DWVpuurg.js} +1 -1
  255. package/dist/diff_tool/app/dist/assets/{xsl-DSqZxsez.js → xsl-C0ciup5a.js} +1 -1
  256. package/dist/diff_tool/app/dist/assets/{yaml-CZcBUWvf.js → yaml-98Fvyfpc.js} +1 -1
  257. package/dist/diff_tool/app/dist/index.html +1 -1
  258. package/dist/execution/execution_environment.js.map +1 -1
  259. package/dist/execution/fly_sprite_execution_environment.js +5 -10
  260. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  261. package/dist/execution/tool_backend_execution_environment.js +0 -2
  262. package/dist/execution/tool_backend_execution_environment.js.map +1 -1
  263. package/dist/host/execution_runtime.js +5 -4
  264. package/dist/host/execution_runtime.js.map +1 -1
  265. package/dist/host/hosted_ephemeral_agent_session.js +0 -2
  266. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  267. package/dist/host/local_session_host.js +15 -31
  268. package/dist/host/local_session_host.js.map +1 -1
  269. package/dist/main.js +14 -29
  270. package/dist/main.js.map +1 -1
  271. package/dist/nook/README.md +1 -1
  272. package/dist/protocol/session_protocol.d.ts +3 -6
  273. package/dist/protocol/session_protocol.js +3 -6
  274. package/dist/protocol/session_protocol.js.map +1 -1
  275. package/dist/sdk/code_mode.js +11 -17
  276. package/dist/sdk/code_mode.js.map +1 -1
  277. package/dist/sdk/index.d.ts +1 -1
  278. package/dist/sdk/index.js +1 -1
  279. package/dist/sdk/index.js.map +1 -1
  280. package/dist/sdk/local_client.js +3 -3
  281. package/dist/sdk/local_client.js.map +1 -1
  282. package/dist/store/session_snapshot_migrations.js +28 -1
  283. package/dist/store/session_snapshot_migrations.js.map +1 -1
  284. package/dist/tui/session_chat_app.js +2 -4
  285. package/dist/tui/session_chat_app.js.map +1 -1
  286. package/dist/tui/session_chat_controller.js +105 -56
  287. package/dist/tui/session_chat_controller.js.map +1 -1
  288. package/package.json +9 -9
  289. package/dist/code_mode/files.d.ts +0 -47
  290. package/dist/code_mode/files.js +0 -296
  291. package/dist/code_mode/files.js.map +0 -1
  292. package/dist/core/tools/history.js +0 -118
  293. package/dist/core/tools/history.js.map +0 -1
  294. package/dist/core/tools/mcp.js +0 -167
  295. package/dist/core/tools/mcp.js.map +0 -1
  296. package/dist/core/tools/nook.js.map +0 -1
  297. package/dist/core/tools/web.js.map +0 -1
  298. package/dist/diff_tool/app/dist/assets/beancount-D-usSTwE.js +0 -1
  299. package/dist/diff_tool/app/dist/assets/coq-DuBRPxYg.js +0 -1
  300. package/dist/diff_tool/app/dist/assets/csharp-oqKa8noW.js +0 -1
  301. package/dist/diff_tool/app/dist/assets/css-BQflXFb6.js +0 -1
  302. package/dist/diff_tool/app/dist/assets/dart-CnvKMtbv.js +0 -1
  303. package/dist/diff_tool/app/dist/assets/dotenv-_5a1GRtc.js +0 -1
  304. package/dist/diff_tool/app/dist/assets/emacs-lisp-c_oH4hRZ.js +0 -1
  305. package/dist/diff_tool/app/dist/assets/gn-ilITqXS6.js +0 -1
  306. package/dist/diff_tool/app/dist/assets/handlebars-CfAla6QK.js +0 -1
  307. package/dist/diff_tool/app/dist/assets/index-CZUi_I-p.js +0 -340
  308. package/dist/diff_tool/app/dist/assets/latex-pWSag83P.js +0 -1
  309. package/dist/diff_tool/app/dist/assets/luau-C2pBCSgt.js +0 -1
  310. package/dist/diff_tool/app/dist/assets/marko-yLX6iW68.js +0 -1
  311. package/dist/diff_tool/app/dist/assets/monokai-B_bV9PQ9.js +0 -1
  312. package/dist/diff_tool/app/dist/assets/moonbit-DgjMoLWr.js +0 -1
  313. package/dist/diff_tool/app/dist/assets/nextflow-BJtWHP5T.js +0 -1
  314. package/dist/diff_tool/app/dist/assets/nushell-DHYfO66s.js +0 -1
  315. package/dist/diff_tool/app/dist/assets/one-dark-pro-CLwyXe_n.js +0 -1
  316. package/dist/diff_tool/app/dist/assets/php-D-AthX_E.js +0 -1
  317. package/dist/diff_tool/app/dist/assets/red-DX1BQOs8.js +0 -1
  318. package/dist/diff_tool/app/dist/assets/rust-Cfkwpbl8.js +0 -1
  319. package/dist/diff_tool/app/dist/assets/solarized-dark-UdsmMDCL.js +0 -1
  320. package/dist/diff_tool/app/dist/assets/solarized-light-C1IUL_tW.js +0 -1
  321. package/dist/diff_tool/app/dist/assets/sql-CsIdKfaO.js +0 -1
  322. package/dist/diff_tool/app/dist/assets/twig-C6D_TA3n.js +0 -1
  323. package/dist/diff_tool/app/dist/assets/typespec-BRdr0IET.js +0 -1
@@ -379,6 +379,10 @@ export class SessionChatController {
379
379
  if (this.snapshot.catalog.skills.length > 0) {
380
380
  parts.push(`${this.snapshot.catalog.skills.length} skills`);
381
381
  }
382
+ if (this.snapshot.catalog.mcpServers.length > 0) {
383
+ const count = this.snapshot.catalog.mcpServers.length;
384
+ parts.push(`${count} MCP server${count === 1 ? "" : "s"}`);
385
+ }
382
386
  if (this.configuredClientToolNames.length > 0) {
383
387
  const count = this.configuredClientToolNames.length;
384
388
  parts.push(`${count} client tool${count === 1 ? "" : "s"}`);
@@ -411,6 +415,12 @@ export class SessionChatController {
411
415
  lines.push(` ${clientToolName}`);
412
416
  }
413
417
  }
418
+ if (this.snapshot.catalog.mcpServers.length > 0) {
419
+ lines.push("", "mcp servers:");
420
+ for (const name of this.snapshot.catalog.mcpServers) {
421
+ lines.push(` ${name}`);
422
+ }
423
+ }
414
424
  lines.push("", this.formatSessionIdentityText());
415
425
  return lines;
416
426
  }
@@ -576,13 +586,18 @@ export class SessionChatController {
576
586
  this.view.showFooterNotice("interrupted", "default");
577
587
  return;
578
588
  }
579
- if (this.listenStartupAbortController) {
580
- this.listenStartupAbortController.abort(LISTEN_CAPTURE_START_CANCELLED);
581
- this.view.showFooterNotice("interrupted", "default");
582
- return;
583
- }
584
- if (this.listenRecording) {
585
- void this.runListenTransition(() => this.stopListenCapture());
589
+ if (this.listenStartupAbortController ||
590
+ this.listenRecording ||
591
+ this.listenTransition ||
592
+ this.listenPreview) {
593
+ this.listenStartupAbortController?.abort(LISTEN_CAPTURE_START_CANCELLED);
594
+ this.activeListenTranscription?.abort();
595
+ this.endListenPreview();
596
+ this.listenActivityLabel = undefined;
597
+ if (this.listenRecording) {
598
+ void this.runListenTransition(() => this.cancelListenCapture());
599
+ }
600
+ this.refreshStatus();
586
601
  return;
587
602
  }
588
603
  if (this.speakTask) {
@@ -658,14 +673,24 @@ export class SessionChatController {
658
673
  return;
659
674
  }
660
675
  this.pendingAutoSpeak = undefined;
661
- await this.runListenTransition(async () => {
662
- if (this.speakTask) {
663
- this.speakTask.abortController.abort();
664
- await this.speakTask.completion.catch(() => { });
676
+ const abortController = new AbortController();
677
+ this.listenStartupAbortController = abortController;
678
+ try {
679
+ await this.runListenTransition(async () => {
680
+ if (this.speakTask) {
681
+ this.speakTask.abortController.abort();
682
+ await this.speakTask.completion.catch(() => { });
683
+ }
684
+ if (!this.disposed && !abortController.signal.aborted) {
685
+ await this.startListenCapture(abortController);
686
+ }
687
+ });
688
+ }
689
+ finally {
690
+ if (this.listenStartupAbortController === abortController) {
691
+ this.listenStartupAbortController = undefined;
665
692
  }
666
- if (!this.disposed)
667
- await this.startListenCapture();
668
- });
693
+ }
669
694
  }
670
695
  async runListenTransition(task) {
671
696
  if (this.listenTransition) {
@@ -682,7 +707,7 @@ export class SessionChatController {
682
707
  }
683
708
  }
684
709
  }
685
- async startListenCapture() {
710
+ async startListenCapture(abortController) {
686
711
  if (this.deps.env.platform() !== "darwin") {
687
712
  this.view.showFooterNotice("/listen is currently supported only on macOS.", "default");
688
713
  return;
@@ -698,15 +723,14 @@ export class SessionChatController {
698
723
  const retainedAudio = this.retainedListenAudio;
699
724
  let audioPath;
700
725
  let transcription;
701
- let abortController;
702
726
  let completion;
703
727
  try {
704
728
  audioPath = await createListenTempFilePath(this.deps);
705
729
  if (this.disposed)
706
730
  throw new Error("speech recording startup cancelled");
731
+ abortController.signal.throwIfAborted();
707
732
  transcription = this.createSpeechTranscription("streaming");
708
- abortController = new AbortController();
709
- this.listenStartupAbortController = abortController;
733
+ this.activeListenTranscription = transcription;
710
734
  const capture = startListenAudioCapture({
711
735
  deps: this.deps,
712
736
  audioPath,
@@ -716,12 +740,7 @@ export class SessionChatController {
716
740
  });
717
741
  completion = capture.completion;
718
742
  await this.waitForListenCaptureStart(capture.started, abortController);
719
- if (abortController.signal.aborted) {
720
- throw abortController.signal.reason;
721
- }
722
- if (this.listenStartupAbortController === abortController) {
723
- this.listenStartupAbortController = undefined;
724
- }
743
+ abortController.signal.throwIfAborted();
725
744
  if (retainedAudio) {
726
745
  try {
727
746
  await deleteListenTempFile(retainedAudio.audioPath);
@@ -734,13 +753,16 @@ export class SessionChatController {
734
753
  transcription.abort();
735
754
  await completion.catch(() => undefined);
736
755
  await cleanupListenTempFile(audioPath);
737
- this.view.addTranscriptNotice("failed to replace retained recording", "error", [
738
- error.message,
739
- `recording retained at ${retainedAudio.audioPath}`,
740
- ]);
756
+ if (abortController.signal.reason !== LISTEN_CAPTURE_START_CANCELLED && !this.disposed) {
757
+ this.view.addTranscriptNotice("failed to replace retained recording", "error", [
758
+ error.message,
759
+ `recording retained at ${retainedAudio.audioPath}`,
760
+ ]);
761
+ }
741
762
  return;
742
763
  }
743
764
  }
765
+ abortController.signal.throwIfAborted();
744
766
  const recording = {
745
767
  audioPath,
746
768
  startedAt: Date.now(),
@@ -759,8 +781,8 @@ export class SessionChatController {
759
781
  void this.watchListenRecording(recording);
760
782
  }
761
783
  catch (err) {
762
- const cancelled = this.disposed || abortController?.signal.reason === LISTEN_CAPTURE_START_CANCELLED;
763
- abortController?.abort();
784
+ const cancelled = this.disposed || abortController.signal.reason === LISTEN_CAPTURE_START_CANCELLED;
785
+ abortController.abort();
764
786
  transcription?.abort();
765
787
  await completion?.catch(() => undefined);
766
788
  if (audioPath) {
@@ -773,11 +795,9 @@ export class SessionChatController {
773
795
  }
774
796
  }
775
797
  finally {
798
+ this.activeListenTranscription = undefined;
776
799
  if (!this.listenRecording)
777
800
  this.endListenPreview();
778
- if (this.listenStartupAbortController === abortController) {
779
- this.listenStartupAbortController = undefined;
780
- }
781
801
  }
782
802
  }
783
803
  async waitForListenCaptureStart(started, abortController) {
@@ -804,25 +824,41 @@ export class SessionChatController {
804
824
  const recording = this.listenRecording;
805
825
  if (!recording)
806
826
  return;
827
+ const preview = this.listenPreview;
807
828
  recording.stopRequested = true;
808
829
  this.clearListenRecordingMaxDurationTimeout(recording);
809
830
  this.listenRecording = undefined;
831
+ this.activeListenTranscription = recording.transcription;
810
832
  this.refreshStatus();
811
833
  recording.abortController.abort();
812
834
  try {
813
- await recording.completion;
835
+ try {
836
+ await recording.completion;
837
+ }
838
+ catch (err) {
839
+ if (this.listenPreview === preview) {
840
+ this.view.addTranscriptNotice("failed to record audio", "error", [
841
+ err.message,
842
+ ]);
843
+ }
844
+ recording.transcription.abort();
845
+ this.endListenPreview();
846
+ await cleanupListenTempFile(recording.audioPath);
847
+ return;
848
+ }
849
+ if (this.listenPreview !== preview || this.disposed) {
850
+ recording.transcription.abort();
851
+ await cleanupListenTempFile(recording.audioPath);
852
+ return;
853
+ }
854
+ const durationMs = Math.min(Math.max(Date.now() - recording.startedAt, 0), SPEECH_TO_TEXT_CLIENT_MAX_DURATION_MS);
855
+ const transcribed = await this.transcribeListenAudioFile(recording.audioPath, durationMs, recording.transcription);
856
+ if (mode && transcribed && !this.disposed)
857
+ this.view.submitEditor(mode);
814
858
  }
815
- catch (err) {
816
- recording.transcription.abort();
817
- this.endListenPreview();
818
- this.view.addTranscriptNotice("failed to record audio", "error", [err.message]);
819
- await cleanupListenTempFile(recording.audioPath);
820
- return;
859
+ finally {
860
+ this.activeListenTranscription = undefined;
821
861
  }
822
- const durationMs = Math.min(Math.max(Date.now() - recording.startedAt, 0), SPEECH_TO_TEXT_CLIENT_MAX_DURATION_MS);
823
- const transcribed = await this.transcribeListenAudioFile(recording.audioPath, durationMs, recording.transcription);
824
- if (mode && transcribed && !this.disposed)
825
- this.view.submitEditor(mode);
826
862
  }
827
863
  async retryRetainedListenAudio() {
828
864
  if (this.pendingEditorMutations > 0) {
@@ -919,26 +955,28 @@ export class SessionChatController {
919
955
  }
920
956
  catch (error) {
921
957
  transcription?.abort();
922
- this.view.addTranscriptNotice("failed to read speech recording", "error", [
923
- error.message,
924
- ]);
958
+ if (this.listenPreview === preview) {
959
+ this.view.addTranscriptNotice("failed to read speech recording", "error", [
960
+ error.message,
961
+ ]);
962
+ }
925
963
  if (this.retainedListenAudio?.audioPath === audioPath) {
926
964
  this.retainedListenAudio = undefined;
927
965
  }
928
966
  await cleanupListenTempFile(audioPath);
929
967
  return false;
930
968
  }
931
- if (audio.byteLength < LISTEN_RECORDING_MIN_BYTES) {
969
+ if (this.disposed || this.listenPreview !== preview) {
932
970
  transcription?.abort();
933
- this.view.showFooterNotice("recording too short, try again", "default");
934
971
  if (this.retainedListenAudio?.audioPath === audioPath) {
935
972
  this.retainedListenAudio = undefined;
936
973
  }
937
974
  await cleanupListenTempFile(audioPath);
938
975
  return false;
939
976
  }
940
- if (this.disposed) {
977
+ if (audio.byteLength < LISTEN_RECORDING_MIN_BYTES) {
941
978
  transcription?.abort();
979
+ this.view.showFooterNotice("recording too short, try again", "default");
942
980
  if (this.retainedListenAudio?.audioPath === audioPath) {
943
981
  this.retainedListenAudio = undefined;
944
982
  }
@@ -957,10 +995,6 @@ export class SessionChatController {
957
995
  });
958
996
  if (this.listenPreview !== preview)
959
997
  return false;
960
- preview.commit(text);
961
- if (text.trim() && !this.editorHiddenSystemMessages.includes(TRANSCRIPTION_GUIDANCE)) {
962
- this.editorHiddenSystemMessages.push(TRANSCRIPTION_GUIDANCE);
963
- }
964
998
  this.retainedListenAudio = undefined;
965
999
  try {
966
1000
  await deleteListenTempFile(audioPath);
@@ -971,9 +1005,17 @@ export class SessionChatController {
971
1005
  `recording remains at ${audioPath}; delete it manually`,
972
1006
  ]);
973
1007
  }
1008
+ if (this.listenPreview !== preview)
1009
+ return false;
1010
+ preview.commit(text);
1011
+ if (text.trim() && !this.editorHiddenSystemMessages.includes(TRANSCRIPTION_GUIDANCE)) {
1012
+ this.editorHiddenSystemMessages.push(TRANSCRIPTION_GUIDANCE);
1013
+ }
974
1014
  return Boolean(text.trim());
975
1015
  }
976
1016
  catch (error) {
1017
+ if (this.listenPreview !== preview)
1018
+ return false;
977
1019
  this.retainedListenAudio = { audioPath, durationMs };
978
1020
  this.view.addTranscriptNotice("failed to transcribe speech", "error", [
979
1021
  error.message,
@@ -992,7 +1034,15 @@ export class SessionChatController {
992
1034
  }
993
1035
  }
994
1036
  finally {
995
- this.endListenPreview();
1037
+ if (this.listenPreview !== preview) {
1038
+ if (this.retainedListenAudio?.audioPath === audioPath) {
1039
+ this.retainedListenAudio = undefined;
1040
+ }
1041
+ await cleanupListenTempFile(audioPath);
1042
+ }
1043
+ else {
1044
+ this.endListenPreview();
1045
+ }
996
1046
  }
997
1047
  }
998
1048
  async cancelListenCapture() {
@@ -1197,7 +1247,6 @@ export class SessionChatController {
1197
1247
  case "fly-sprite":
1198
1248
  return {
1199
1249
  kind: "fly-sprite",
1200
- apiId: snapshot.apiId,
1201
1250
  spriteName: snapshot.spriteName,
1202
1251
  cwd: snapshot.cwd,
1203
1252
  };