@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.
- package/dist/code_mode/runtime.js +7 -1
- package/dist/code_mode/runtime.js.map +1 -1
- package/dist/core/code_mode/mcp.js +5 -1
- package/dist/core/code_mode/mcp.js.map +1 -1
- package/dist/core/code_mode/web.js +14 -1
- package/dist/core/code_mode/web.js.map +1 -1
- package/dist/core/commands/registry.js +14 -0
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/markdown_export.js +33 -0
- package/dist/core/config/markdown_export.js.map +1 -0
- package/dist/core/config/mcp.js +1 -0
- package/dist/core/config/mcp.js.map +1 -1
- package/dist/core/config/schema.js +26 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/mcp/manager.js +4 -1
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/session/runner.js +3 -0
- package/dist/core/session/runner.js.map +1 -1
- package/dist/core/static/code_mode/mcp/documentation.md +2 -2
- package/dist/core/static/code_mode/sandbox_runner.mjs +1 -1
- package/dist/core/static/code_mode/web/documentation.md +23 -2
- package/dist/core/static/tau_docs/config-reference.md +41 -2
- package/dist/core/static/tau_docs/session-protocol-methods.md +1 -1
- package/dist/core/static/tau_docs/session-protocol.md +2 -0
- package/dist/core/static/tau_docs/telegram.md +2 -2
- package/dist/core/static/tau_docs/tools.md +6 -2
- package/dist/core/static/tau_docs/tui.md +29 -1
- package/dist/core/telegram/adapter.js +7 -1
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/telegram/cli.js +1 -0
- package/dist/core/telegram/cli.js.map +1 -1
- package/dist/core/telegram/runtime.js +1 -0
- package/dist/core/telegram/runtime.js.map +1 -1
- package/dist/core/tools/bash.js +8 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/bash_jobs.js +35 -8
- package/dist/core/tools/bash_jobs.js.map +1 -1
- package/dist/core/tools/code.js +1 -1
- package/dist/core/tools/code.js.map +1 -1
- package/dist/core/utils/gemini_transcription.js +2 -0
- package/dist/core/utils/gemini_transcription.js.map +1 -1
- package/dist/core/utils/speech_to_text.js +2 -0
- package/dist/core/utils/speech_to_text.js.map +1 -1
- package/dist/core/utils/speech_to_text_keywords.js +22 -12
- package/dist/core/utils/speech_to_text_keywords.js.map +1 -1
- package/dist/core/version.js +2 -2
- package/dist/diff_tool/app/dist/assets/{angular-html-Dr923UVo.js → angular-html-BYUifz0d.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-DOChuIbB.js → angular-ts-D_3gBIuM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-Bs_bcAcm.js → apl-wYKA1qYd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-a4yvqyGV.js → astro-BL1mqLjI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{blade-BD5OxwVc.js → blade-CaITjjav.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{c-CPWQkPLc.js → c-BNGjxkjZ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{chapel-DaQatW92.js → chapel-BVHoeIB0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-Dv7H5p9m.js → cobol-BDxDGzL5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-BUGvGi57.js → coffee-Cq4ntMSi.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cpp-fo_wPsB8.js → cpp-Blz6Gzqh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{crystal--pI-R_dD.js → crystal-DwTTwUci.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{css-BssyxPkY.js → css-Bb-nfsFH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{edge-CZ8t3-Ec.js → edge-BEorvFbb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-UZt0J7RJ.js → elixir-CbzmlGdz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-DIbchse0.js → elm-BFZlsMHx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{erb-BOBhlFtI.js → erb-CyMmAp8N.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{git-rebase-BAOt70YV.js → git-rebase-sG9i6G3e.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-CEvU-NQC.js → glimmer-js-B7ivIntI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-BTMr7YQb.js → glimmer-ts-Bhg8Ey1V.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl-BdwQytbZ.js → glsl-DU8s-dBQ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{graphql-MVXf_Gip.js → graphql-BGBNdEl9.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hack-BKsyThYd.js → hack-BAto8rp_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{haml-aYjo4kTQ.js → haml-CnovnmfI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{handlebars-CkBj5nNj.js → handlebars-CUobrkIk.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-V_XLZjq3.js → html-C8HUJaJK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-CLtkZVT2.js → html-derivative-BOmzWrys.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-nUN1ldGy.js → http-95yFarLX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-BBwLfekr.js → hurl-DqwK0VBX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-Dk1O1QU2.js +341 -0
- package/dist/diff_tool/app/dist/assets/{java-DLkxtNEL.js → java-B6uAHMnW.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-CVr4Rx0e.js → javascript-CIsgGdYO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-BOSJTyD0.js → jinja-Boyy8nYg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-Di3-hBGP.js → jison-DTkP-LdS.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-D9C8xfZt.js → json-GYLFX3tU.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-CUDhGSfU.js → jsx-CRDd7vXt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-CRy8R7YY.js → julia-C-Kqyq0v.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-tUqjHI43.js → just-D76DGucw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{latex-8_LCZmZN.js → latex-C7OI1Hfh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{liquid-CvGorueR.js → liquid-BXg0M9CR.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-DR_7pVFC.js → lua-BW45iBRs.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{marko-sTN8ZOd5.js → marko-CY8evBfz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{mdc-xRsS5Ubl.js → mdc-DdxCNifz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nginx-ypaVSshx.js → nginx-BtGslqUq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-DTc1FpAl.js → nim-DjbTKuw-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{org-B7I2tEAw.js → org-DHFyOHqq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-CTNhHvKx.js → perl-CzMx0kGu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php-LzxyOsOP.js → php-BBlOsGF7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{pug-D5FIy7qc.js → pug-Bm096r3f.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-CfdV5Js7.js → qml-CRORJO1J.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{r-CZ-EMZDs.js → r-qKymVZ5K.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{razor-BhyBjPmN.js → razor-DmyFAKnJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{regexp-iPvMX04S.js → regexp-Gl5zlAp8.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{rst-Dpp9DE6Q.js → rst-D_5Fo1s7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-CVyShlOK.js → ruby-Ba2JyrDO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-DFmollAV.js → sas-C05s5BoL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss-Di6lsIQE.js → scss-BYlEpiV5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-CRHervLi.js → shellscript-3-lyngbO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-CHP7Q5Ym.js → shellsession-CsyYzhYv.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{soy-CNXyGE_T.js → soy-C0AbcMNu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sql-DnPFF_uz.js → sql-B5L6emUy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{stata-CobN2W6n.js → stata-CchtKmgS.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{surrealql-DqvGXHs7.js → surrealql-DFOCimKM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-ChhfFBzQ.js → svelte-V7icPqo7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{templ-DKi2U_4-.js → templ-DXCGjc4E.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tex-Cjl-M5D5.js → tex-c83hGbYN.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ts-tags-CV2veQhe.js → ts-tags-BVI5VHnY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-Dw0DYsvT.js → tsx-tnnDFqCV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{twig-r46-w1o_.js → twig-DeSn3VOh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typescript-QuYM-098.js → typescript-CVLYBzBJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typst-B9jAU5LS.js → typst-Dk2qly5X.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-CIrFiYWU.js → vue-DW_T9sKB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-bfczklzO.js → vue-html-C220MG7U.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-BmBCOwQI.js → vue-vine-BNnkAvGD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-DYPsS0xh.js → xml-DFg4Ugz-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-DZFDwCkt.js → xsl-D7aGWgyh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-9CQ32JJD.js → yaml-CGU5GvNQ.js} +1 -1
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/protocol/session_protocol.js +2 -0
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/tui/listen_capture.js +1 -0
- package/dist/tui/listen_capture.js.map +1 -1
- package/dist/tui/markdown_export.js +74 -0
- package/dist/tui/markdown_export.js.map +1 -0
- package/dist/tui/session_chat_controller.js +55 -0
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/package.json +14 -14
- 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":"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"}
|
|
@@ -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,
|