@markusylisiurunen/tau 0.3.84 → 0.3.86

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 (133) hide show
  1. package/dist/code_mode/runtime.js +7 -1
  2. package/dist/code_mode/runtime.js.map +1 -1
  3. package/dist/core/code_mode/mcp.js +5 -1
  4. package/dist/core/code_mode/mcp.js.map +1 -1
  5. package/dist/core/code_mode/web.js +14 -1
  6. package/dist/core/code_mode/web.js.map +1 -1
  7. package/dist/core/commands/registry.js +14 -0
  8. package/dist/core/commands/registry.js.map +1 -1
  9. package/dist/core/config/markdown_export.js +33 -0
  10. package/dist/core/config/markdown_export.js.map +1 -0
  11. package/dist/core/config/mcp.js +1 -0
  12. package/dist/core/config/mcp.js.map +1 -1
  13. package/dist/core/config/schema.js +26 -1
  14. package/dist/core/config/schema.js.map +1 -1
  15. package/dist/core/mcp/manager.js +4 -1
  16. package/dist/core/mcp/manager.js.map +1 -1
  17. package/dist/core/session/runner.js +3 -0
  18. package/dist/core/session/runner.js.map +1 -1
  19. package/dist/core/static/code_mode/mcp/documentation.md +2 -2
  20. package/dist/core/static/code_mode/sandbox_runner.mjs +1 -1
  21. package/dist/core/static/code_mode/web/documentation.md +23 -2
  22. package/dist/core/static/tau_docs/config-reference.md +41 -2
  23. package/dist/core/static/tau_docs/session-protocol-methods.md +1 -1
  24. package/dist/core/static/tau_docs/session-protocol.md +2 -0
  25. package/dist/core/static/tau_docs/telegram.md +2 -2
  26. package/dist/core/static/tau_docs/tools.md +6 -2
  27. package/dist/core/static/tau_docs/tui.md +29 -1
  28. package/dist/core/telegram/adapter.js +7 -1
  29. package/dist/core/telegram/adapter.js.map +1 -1
  30. package/dist/core/telegram/cli.js +1 -0
  31. package/dist/core/telegram/cli.js.map +1 -1
  32. package/dist/core/telegram/runtime.js +1 -0
  33. package/dist/core/telegram/runtime.js.map +1 -1
  34. package/dist/core/tools/bash.js +8 -1
  35. package/dist/core/tools/bash.js.map +1 -1
  36. package/dist/core/tools/bash_jobs.js +35 -8
  37. package/dist/core/tools/bash_jobs.js.map +1 -1
  38. package/dist/core/tools/code.js +1 -1
  39. package/dist/core/tools/code.js.map +1 -1
  40. package/dist/core/utils/gemini_transcription.js +2 -0
  41. package/dist/core/utils/gemini_transcription.js.map +1 -1
  42. package/dist/core/utils/speech_to_text.js +2 -0
  43. package/dist/core/utils/speech_to_text.js.map +1 -1
  44. package/dist/core/utils/speech_to_text_keywords.js +22 -12
  45. package/dist/core/utils/speech_to_text_keywords.js.map +1 -1
  46. package/dist/core/version.js +2 -2
  47. package/dist/diff_tool/app/dist/assets/{angular-html-Dr923UVo.js → angular-html-BYUifz0d.js} +1 -1
  48. package/dist/diff_tool/app/dist/assets/{angular-ts-DOChuIbB.js → angular-ts-D_3gBIuM.js} +1 -1
  49. package/dist/diff_tool/app/dist/assets/{apl-Bs_bcAcm.js → apl-wYKA1qYd.js} +1 -1
  50. package/dist/diff_tool/app/dist/assets/{astro-a4yvqyGV.js → astro-BL1mqLjI.js} +1 -1
  51. package/dist/diff_tool/app/dist/assets/{blade-BD5OxwVc.js → blade-CaITjjav.js} +1 -1
  52. package/dist/diff_tool/app/dist/assets/{c-CPWQkPLc.js → c-BNGjxkjZ.js} +1 -1
  53. package/dist/diff_tool/app/dist/assets/{chapel-DaQatW92.js → chapel-BVHoeIB0.js} +1 -1
  54. package/dist/diff_tool/app/dist/assets/{cobol-Dv7H5p9m.js → cobol-BDxDGzL5.js} +1 -1
  55. package/dist/diff_tool/app/dist/assets/{coffee-BUGvGi57.js → coffee-Cq4ntMSi.js} +1 -1
  56. package/dist/diff_tool/app/dist/assets/{cpp-fo_wPsB8.js → cpp-Blz6Gzqh.js} +1 -1
  57. package/dist/diff_tool/app/dist/assets/{crystal--pI-R_dD.js → crystal-DwTTwUci.js} +1 -1
  58. package/dist/diff_tool/app/dist/assets/{css-BssyxPkY.js → css-Bb-nfsFH.js} +1 -1
  59. package/dist/diff_tool/app/dist/assets/{edge-CZ8t3-Ec.js → edge-BEorvFbb.js} +1 -1
  60. package/dist/diff_tool/app/dist/assets/{elixir-UZt0J7RJ.js → elixir-CbzmlGdz.js} +1 -1
  61. package/dist/diff_tool/app/dist/assets/{elm-DIbchse0.js → elm-BFZlsMHx.js} +1 -1
  62. package/dist/diff_tool/app/dist/assets/{erb-BOBhlFtI.js → erb-CyMmAp8N.js} +1 -1
  63. package/dist/diff_tool/app/dist/assets/{git-rebase-BAOt70YV.js → git-rebase-sG9i6G3e.js} +1 -1
  64. package/dist/diff_tool/app/dist/assets/{glimmer-js-CEvU-NQC.js → glimmer-js-B7ivIntI.js} +1 -1
  65. package/dist/diff_tool/app/dist/assets/{glimmer-ts-BTMr7YQb.js → glimmer-ts-Bhg8Ey1V.js} +1 -1
  66. package/dist/diff_tool/app/dist/assets/{glsl-BdwQytbZ.js → glsl-DU8s-dBQ.js} +1 -1
  67. package/dist/diff_tool/app/dist/assets/{graphql-MVXf_Gip.js → graphql-BGBNdEl9.js} +1 -1
  68. package/dist/diff_tool/app/dist/assets/{hack-BKsyThYd.js → hack-BAto8rp_.js} +1 -1
  69. package/dist/diff_tool/app/dist/assets/{haml-aYjo4kTQ.js → haml-CnovnmfI.js} +1 -1
  70. package/dist/diff_tool/app/dist/assets/{handlebars-CkBj5nNj.js → handlebars-CUobrkIk.js} +1 -1
  71. package/dist/diff_tool/app/dist/assets/{html-V_XLZjq3.js → html-C8HUJaJK.js} +1 -1
  72. package/dist/diff_tool/app/dist/assets/{html-derivative-CLtkZVT2.js → html-derivative-BOmzWrys.js} +1 -1
  73. package/dist/diff_tool/app/dist/assets/{http-nUN1ldGy.js → http-95yFarLX.js} +1 -1
  74. package/dist/diff_tool/app/dist/assets/{hurl-BBwLfekr.js → hurl-DqwK0VBX.js} +1 -1
  75. package/dist/diff_tool/app/dist/assets/index-Dk1O1QU2.js +341 -0
  76. package/dist/diff_tool/app/dist/assets/{java-DLkxtNEL.js → java-B6uAHMnW.js} +1 -1
  77. package/dist/diff_tool/app/dist/assets/{javascript-CVr4Rx0e.js → javascript-CIsgGdYO.js} +1 -1
  78. package/dist/diff_tool/app/dist/assets/{jinja-BOSJTyD0.js → jinja-Boyy8nYg.js} +1 -1
  79. package/dist/diff_tool/app/dist/assets/{jison-Di3-hBGP.js → jison-DTkP-LdS.js} +1 -1
  80. package/dist/diff_tool/app/dist/assets/{json-D9C8xfZt.js → json-GYLFX3tU.js} +1 -1
  81. package/dist/diff_tool/app/dist/assets/{jsx-CUDhGSfU.js → jsx-CRDd7vXt.js} +1 -1
  82. package/dist/diff_tool/app/dist/assets/{julia-CRy8R7YY.js → julia-C-Kqyq0v.js} +1 -1
  83. package/dist/diff_tool/app/dist/assets/{just-tUqjHI43.js → just-D76DGucw.js} +1 -1
  84. package/dist/diff_tool/app/dist/assets/{latex-8_LCZmZN.js → latex-C7OI1Hfh.js} +1 -1
  85. package/dist/diff_tool/app/dist/assets/{liquid-CvGorueR.js → liquid-BXg0M9CR.js} +1 -1
  86. package/dist/diff_tool/app/dist/assets/{lua-DR_7pVFC.js → lua-BW45iBRs.js} +1 -1
  87. package/dist/diff_tool/app/dist/assets/{marko-sTN8ZOd5.js → marko-CY8evBfz.js} +1 -1
  88. package/dist/diff_tool/app/dist/assets/{mdc-xRsS5Ubl.js → mdc-DdxCNifz.js} +1 -1
  89. package/dist/diff_tool/app/dist/assets/{nginx-ypaVSshx.js → nginx-BtGslqUq.js} +1 -1
  90. package/dist/diff_tool/app/dist/assets/{nim-DTc1FpAl.js → nim-DjbTKuw-.js} +1 -1
  91. package/dist/diff_tool/app/dist/assets/{org-B7I2tEAw.js → org-DHFyOHqq.js} +1 -1
  92. package/dist/diff_tool/app/dist/assets/{perl-CTNhHvKx.js → perl-CzMx0kGu.js} +1 -1
  93. package/dist/diff_tool/app/dist/assets/{php-LzxyOsOP.js → php-BBlOsGF7.js} +1 -1
  94. package/dist/diff_tool/app/dist/assets/{pug-D5FIy7qc.js → pug-Bm096r3f.js} +1 -1
  95. package/dist/diff_tool/app/dist/assets/{qml-CfdV5Js7.js → qml-CRORJO1J.js} +1 -1
  96. package/dist/diff_tool/app/dist/assets/{r-CZ-EMZDs.js → r-qKymVZ5K.js} +1 -1
  97. package/dist/diff_tool/app/dist/assets/{razor-BhyBjPmN.js → razor-DmyFAKnJ.js} +1 -1
  98. package/dist/diff_tool/app/dist/assets/{regexp-iPvMX04S.js → regexp-Gl5zlAp8.js} +1 -1
  99. package/dist/diff_tool/app/dist/assets/{rst-Dpp9DE6Q.js → rst-D_5Fo1s7.js} +1 -1
  100. package/dist/diff_tool/app/dist/assets/{ruby-CVyShlOK.js → ruby-Ba2JyrDO.js} +1 -1
  101. package/dist/diff_tool/app/dist/assets/{sas-DFmollAV.js → sas-C05s5BoL.js} +1 -1
  102. package/dist/diff_tool/app/dist/assets/{scss-Di6lsIQE.js → scss-BYlEpiV5.js} +1 -1
  103. package/dist/diff_tool/app/dist/assets/{shellscript-CRHervLi.js → shellscript-3-lyngbO.js} +1 -1
  104. package/dist/diff_tool/app/dist/assets/{shellsession-CHP7Q5Ym.js → shellsession-CsyYzhYv.js} +1 -1
  105. package/dist/diff_tool/app/dist/assets/{soy-CNXyGE_T.js → soy-C0AbcMNu.js} +1 -1
  106. package/dist/diff_tool/app/dist/assets/{sql-DnPFF_uz.js → sql-B5L6emUy.js} +1 -1
  107. package/dist/diff_tool/app/dist/assets/{stata-CobN2W6n.js → stata-CchtKmgS.js} +1 -1
  108. package/dist/diff_tool/app/dist/assets/{surrealql-DqvGXHs7.js → surrealql-DFOCimKM.js} +1 -1
  109. package/dist/diff_tool/app/dist/assets/{svelte-ChhfFBzQ.js → svelte-V7icPqo7.js} +1 -1
  110. package/dist/diff_tool/app/dist/assets/{templ-DKi2U_4-.js → templ-DXCGjc4E.js} +1 -1
  111. package/dist/diff_tool/app/dist/assets/{tex-Cjl-M5D5.js → tex-c83hGbYN.js} +1 -1
  112. package/dist/diff_tool/app/dist/assets/{ts-tags-CV2veQhe.js → ts-tags-BVI5VHnY.js} +1 -1
  113. package/dist/diff_tool/app/dist/assets/{tsx-Dw0DYsvT.js → tsx-tnnDFqCV.js} +1 -1
  114. package/dist/diff_tool/app/dist/assets/{twig-r46-w1o_.js → twig-DeSn3VOh.js} +1 -1
  115. package/dist/diff_tool/app/dist/assets/{typescript-QuYM-098.js → typescript-CVLYBzBJ.js} +1 -1
  116. package/dist/diff_tool/app/dist/assets/{typst-B9jAU5LS.js → typst-Dk2qly5X.js} +1 -1
  117. package/dist/diff_tool/app/dist/assets/{vue-CIrFiYWU.js → vue-DW_T9sKB.js} +1 -1
  118. package/dist/diff_tool/app/dist/assets/{vue-html-bfczklzO.js → vue-html-C220MG7U.js} +1 -1
  119. package/dist/diff_tool/app/dist/assets/{vue-vine-BmBCOwQI.js → vue-vine-BNnkAvGD.js} +1 -1
  120. package/dist/diff_tool/app/dist/assets/{xml-DYPsS0xh.js → xml-DFg4Ugz-.js} +1 -1
  121. package/dist/diff_tool/app/dist/assets/{xsl-DZFDwCkt.js → xsl-D7aGWgyh.js} +1 -1
  122. package/dist/diff_tool/app/dist/assets/{yaml-9CQ32JJD.js → yaml-CGU5GvNQ.js} +1 -1
  123. package/dist/diff_tool/app/dist/index.html +1 -1
  124. package/dist/protocol/session_protocol.js +2 -0
  125. package/dist/protocol/session_protocol.js.map +1 -1
  126. package/dist/tui/listen_capture.js +1 -0
  127. package/dist/tui/listen_capture.js.map +1 -1
  128. package/dist/tui/markdown_export.js +74 -0
  129. package/dist/tui/markdown_export.js.map +1 -0
  130. package/dist/tui/session_chat_controller.js +55 -0
  131. package/dist/tui/session_chat_controller.js.map +1 -1
  132. package/package.json +14 -14
  133. package/dist/diff_tool/app/dist/assets/index-Dt2v7POE.js +0 -341
@@ -1 +1 @@
1
- {"version":3,"file":"listen_capture.js","sourceRoot":"","sources":["../../src/tui/listen_capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listen_capture.js","sourceRoot":"","sources":["../../src/tui/listen_capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { markdownExportConfigSchema, parseMarkdownExportUrl, } from "../core/config/markdown_export.js";
2
+ const MAX_RESPONSE_BYTES = 64 * 1024;
3
+ const REQUEST_TIMEOUT_MS = 30_000;
4
+ export async function exportMarkdown(options) {
5
+ const parsed = markdownExportConfigSchema.safeParse(options.config);
6
+ if (!parsed.success)
7
+ throw new Error("Invalid Markdown export configuration.");
8
+ const config = parsed.data;
9
+ const token = config.token ?? (config.tokenEnv ? options.env[config.tokenEnv]?.trim() : undefined);
10
+ if ((config.tokenEnv && token === undefined) || token === "") {
11
+ throw new Error("The Markdown export token environment variable is missing or empty.");
12
+ }
13
+ if (token !== undefined && !/^[\x21-\x7e]+$/.test(token)) {
14
+ throw new Error("Invalid Markdown export token.");
15
+ }
16
+ const signal = AbortSignal.any([options.signal, AbortSignal.timeout(REQUEST_TIMEOUT_MS)]);
17
+ let response;
18
+ try {
19
+ response = await fetch(config.url, {
20
+ method: "POST",
21
+ headers: {
22
+ "Content-Type": "application/json",
23
+ Accept: "application/json",
24
+ ...(token !== undefined ? { Authorization: `Bearer ${token}` } : {}),
25
+ },
26
+ body: JSON.stringify({ version: 1, markdown: options.markdown }),
27
+ redirect: "error",
28
+ signal,
29
+ });
30
+ }
31
+ catch {
32
+ throw new Error("Markdown export request failed or was cancelled. The service may have received it; Tau did not retry.");
33
+ }
34
+ if (response.status !== 201) {
35
+ await response.body?.cancel().catch(() => { });
36
+ throw new Error(`Markdown export returned HTTP ${response.status}; expected 201. Tau did not retry.`);
37
+ }
38
+ let result;
39
+ const reader = response.body?.getReader();
40
+ if (!reader)
41
+ throw new Error("Markdown export returned an empty response.");
42
+ try {
43
+ const chunks = [];
44
+ let bytes = 0;
45
+ for (;;) {
46
+ const { done, value } = await reader.read();
47
+ if (done)
48
+ break;
49
+ bytes += value.byteLength;
50
+ if (bytes > MAX_RESPONSE_BYTES)
51
+ throw new Error("Response too large.");
52
+ chunks.push(value);
53
+ }
54
+ result = JSON.parse(Buffer.concat(chunks).toString("utf8"));
55
+ }
56
+ catch {
57
+ throw new Error("Markdown export returned an invalid or incomplete response. Tau did not retry.");
58
+ }
59
+ finally {
60
+ await reader.cancel().catch(() => { });
61
+ reader.releaseLock();
62
+ }
63
+ if (typeof result !== "object" ||
64
+ result === null ||
65
+ !("version" in result) ||
66
+ result.version !== 1 ||
67
+ !("url" in result) ||
68
+ typeof result.url !== "string" ||
69
+ !parseMarkdownExportUrl(result.url)) {
70
+ throw new Error("Markdown export requires a version 1 response with an HTTP(S) URL.");
71
+ }
72
+ return result.url;
73
+ }
74
+ //# sourceMappingURL=markdown_export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown_export.js","sourceRoot":"","sources":["../../src/tui/markdown_export.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAKpC;IACC,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3B,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvF,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChE,QAAQ,EAAE,OAAO;YACjB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,CAAC,MAAM,oCAAoC,CACrF,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,KAAK,GAAG,kBAAkB;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC;QACtB,MAAM,CAAC,OAAO,KAAK,CAAC;QACpB,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC;QAClB,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAC9B,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC"}
@@ -28,6 +28,7 @@ import { formatDurationMs, formatFooterTokenCount, formatSessionCost, } from "./
28
28
  import { copyTextToClipboard } from "./clipboard.js";
29
29
  import { DOUBLE_PRESS_WINDOW_MS } from "./constants.js";
30
30
  import { cleanupListenTempFile, createListenTempFilePath, createListenTranscription, deleteListenTempFile, getSpeechToTextApiKey, getSpeechToTextApiKeyErrorMessage, LISTEN_CAPTURE_START_TIMEOUT_MS, LISTEN_RECORDING_MIN_BYTES, readListenAudio, startListenAudioCapture, } from "./listen_capture.js";
31
+ import { exportMarkdown } from "./markdown_export.js";
31
32
  import { createSdkDiffSnapshotDeps, createSdkToolExecutionBackend, } from "./session_tool_execution_backend.js";
32
33
  import { runSpeechPlaybackTask } from "./speech_playback.js";
33
34
  const TRANSCRIPTION_GUIDANCE = "Some or all of this message may have been transcribed from speech and may contain misheard words or other transcription errors.";
@@ -39,6 +40,7 @@ export class SessionChatController {
39
40
  targetLabel;
40
41
  configuredClientToolNames;
41
42
  config;
43
+ markdownExportAbortController;
42
44
  diffToolLauncher;
43
45
  deps;
44
46
  speechToTextDeps;
@@ -111,6 +113,7 @@ export class SessionChatController {
111
113
  this.commandHandlers = {
112
114
  help: () => this.showHelp(),
113
115
  copyText: () => this.copyLastAssistantText(),
116
+ exportResponse: () => this.exportLastAssistantResponse(),
114
117
  copyCode: () => this.copyLastAssistantCode(),
115
118
  exit: () => options.onExit?.(),
116
119
  newSession: () => this.createNewSession(),
@@ -155,6 +158,7 @@ export class SessionChatController {
155
158
  }
156
159
  async dispose() {
157
160
  this.disposed = true;
161
+ this.markdownExportAbortController?.abort();
158
162
  this.endListenPreview();
159
163
  this.eventUnsubscribe?.();
160
164
  this.ephemeralUnsubscribe?.();
@@ -2380,6 +2384,57 @@ export class SessionChatController {
2380
2384
  }
2381
2385
  return [...files];
2382
2386
  }
2387
+ async exportLastAssistantResponse() {
2388
+ if (this.markdownExportAbortController) {
2389
+ this.view.showFooterNotice("response export already in progress", "default");
2390
+ return;
2391
+ }
2392
+ const config = this.config.markdownExport;
2393
+ if (!config) {
2394
+ this.view.addTranscriptNotice("markdown export is not configured", "error", [
2395
+ "Set markdownExport in the terminal client's global config.json.",
2396
+ ]);
2397
+ return;
2398
+ }
2399
+ const entry = this.snapshot.messages.findLast((entry) => entry.state === "committed" &&
2400
+ isAssistantMessage(entry.message) &&
2401
+ (entry.message.stopReason === "stop" || entry.message.stopReason === "length"));
2402
+ if (!entry || !isAssistantMessage(entry.message)) {
2403
+ this.view.showFooterNotice("no completed response to export", "default");
2404
+ return;
2405
+ }
2406
+ const markdown = entry.message.content
2407
+ .filter((block) => block.type === "text")
2408
+ .map((block) => block.text)
2409
+ .join("\n");
2410
+ if (!markdown.trim()) {
2411
+ this.view.showFooterNotice("no response text to export", "default");
2412
+ return;
2413
+ }
2414
+ const abortController = new AbortController();
2415
+ this.markdownExportAbortController = abortController;
2416
+ this.view.showFooterNotice("exporting response", "default");
2417
+ try {
2418
+ const url = await exportMarkdown({
2419
+ config,
2420
+ markdown,
2421
+ env: this.deps.env.env(),
2422
+ signal: abortController.signal,
2423
+ });
2424
+ if (!this.disposed)
2425
+ this.view.addTranscriptNotice("response exported", "default", [url]);
2426
+ }
2427
+ catch (error) {
2428
+ if (!this.disposed) {
2429
+ this.view.addTranscriptNotice("failed to export response", "error", [
2430
+ error.message,
2431
+ ]);
2432
+ }
2433
+ }
2434
+ finally {
2435
+ this.markdownExportAbortController = undefined;
2436
+ }
2437
+ }
2383
2438
  async copyLastAssistantText() {
2384
2439
  await copyAssistantTextToClipboard({
2385
2440
  view: this.view,