@markusylisiurunen/tau 0.3.49 → 0.3.51

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 (114) hide show
  1. package/README.md +22 -908
  2. package/dist/code_mode/command.js +26 -14
  3. package/dist/code_mode/command.js.map +1 -1
  4. package/dist/code_mode/index.d.ts +2 -1
  5. package/dist/code_mode/index.js +1 -0
  6. package/dist/code_mode/index.js.map +1 -1
  7. package/dist/core/cli.js +0 -11
  8. package/dist/core/cli.js.map +1 -1
  9. package/dist/core/client_tools/command_client_tools.js +236 -151
  10. package/dist/core/client_tools/command_client_tools.js.map +1 -1
  11. package/dist/core/commands/registry.js +4 -4
  12. package/dist/core/commands/registry.js.map +1 -1
  13. package/dist/core/modes/index.js +0 -1
  14. package/dist/core/modes/index.js.map +1 -1
  15. package/dist/core/personas.js +19 -10
  16. package/dist/core/personas.js.map +1 -1
  17. package/dist/core/runtime/runtime_bootstrap.js +14 -9
  18. package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
  19. package/dist/core/static/tau_docs/client-tools.md +428 -0
  20. package/dist/core/static/tau_docs/config-reference.md +422 -0
  21. package/dist/core/static/tau_docs/configuration.md +210 -0
  22. package/dist/core/static/tau_docs/credentials.md +200 -0
  23. package/dist/core/static/tau_docs/getting-started.md +140 -0
  24. package/dist/core/static/tau_docs/history.md +163 -0
  25. package/dist/core/static/tau_docs/index.md +40 -0
  26. package/dist/core/static/tau_docs/manifest.json +28 -0
  27. package/dist/core/static/tau_docs/models.md +198 -0
  28. package/dist/core/static/tau_docs/node-sdk.md +406 -0
  29. package/dist/core/static/tau_docs/nook.md +264 -0
  30. package/dist/core/static/tau_docs/ownership-and-scope.md +103 -0
  31. package/dist/core/static/tau_docs/personas.md +199 -0
  32. package/dist/core/static/tau_docs/prompts-and-project-context.md +181 -0
  33. package/dist/core/static/tau_docs/remote-sessions.md +231 -0
  34. package/dist/core/static/tau_docs/security.md +184 -0
  35. package/dist/core/static/tau_docs/session-protocol-methods.md +618 -0
  36. package/dist/core/static/tau_docs/session-protocol.md +265 -0
  37. package/dist/core/static/tau_docs/sessions.md +224 -0
  38. package/dist/core/static/tau_docs/skills.md +176 -0
  39. package/dist/core/static/tau_docs/subagents.md +203 -0
  40. package/dist/core/static/tau_docs/telegram.md +346 -0
  41. package/dist/core/static/tau_docs/tools.md +203 -0
  42. package/dist/core/static/tau_docs/troubleshooting.md +290 -0
  43. package/dist/core/static/tau_docs/tui.md +222 -0
  44. package/dist/core/telegram/adapter.js +226 -18
  45. package/dist/core/telegram/adapter.js.map +1 -1
  46. package/dist/core/telegram/config.js +1 -1
  47. package/dist/core/telegram/config.js.map +1 -1
  48. package/dist/core/telegram/project_preferences.js +42 -12
  49. package/dist/core/telegram/project_preferences.js.map +1 -1
  50. package/dist/core/telegram/runtime.js +6 -1
  51. package/dist/core/telegram/runtime.js.map +1 -1
  52. package/dist/core/telegram/session_manager.js +54 -7
  53. package/dist/core/telegram/session_manager.js.map +1 -1
  54. package/dist/core/telegram/tts.js +137 -0
  55. package/dist/core/telegram/tts.js.map +1 -0
  56. package/dist/core/tools/catalog.js +3 -1
  57. package/dist/core/tools/catalog.js.map +1 -1
  58. package/dist/core/tools/presentation.js +67 -18
  59. package/dist/core/tools/presentation.js.map +1 -1
  60. package/dist/core/tools/tau_docs.js +115 -0
  61. package/dist/core/tools/tau_docs.js.map +1 -0
  62. package/dist/core/tools/tool_names.js +8 -0
  63. package/dist/core/tools/tool_names.js.map +1 -1
  64. package/dist/core/utils/gemini_speech.js +122 -41
  65. package/dist/core/utils/gemini_speech.js.map +1 -1
  66. package/dist/core/utils/repository.js +19 -0
  67. package/dist/core/utils/repository.js.map +1 -1
  68. package/dist/core/version.js +1 -1
  69. package/dist/host/client_tool_broker.js +74 -35
  70. package/dist/host/client_tool_broker.js.map +1 -1
  71. package/dist/host/local_session_host.js +2 -2
  72. package/dist/host/local_session_host.js.map +1 -1
  73. package/dist/host/session_host.js.map +1 -1
  74. package/dist/host/session_protocol_handler.js +17 -6
  75. package/dist/host/session_protocol_handler.js.map +1 -1
  76. package/dist/main.js +18 -92
  77. package/dist/main.js.map +1 -1
  78. package/dist/protocol/session_protocol.d.ts +23 -2
  79. package/dist/protocol/session_protocol.js +49 -4
  80. package/dist/protocol/session_protocol.js.map +1 -1
  81. package/dist/sdk/client_tool_command.d.ts +41 -13
  82. package/dist/sdk/client_tool_command.js +157 -39
  83. package/dist/sdk/client_tool_command.js.map +1 -1
  84. package/dist/sdk/client_tool_presentation.d.ts +17 -0
  85. package/dist/sdk/client_tool_presentation.js +9 -0
  86. package/dist/sdk/client_tool_presentation.js.map +1 -0
  87. package/dist/sdk/code_mode.js +10 -1
  88. package/dist/sdk/code_mode.js.map +1 -1
  89. package/dist/sdk/index.d.ts +5 -4
  90. package/dist/sdk/index.js +2 -1
  91. package/dist/sdk/index.js.map +1 -1
  92. package/dist/sdk/session.js +28 -9
  93. package/dist/sdk/session.js.map +1 -1
  94. package/dist/sdk/types.d.ts +11 -1
  95. package/dist/transport/errors.d.ts +0 -11
  96. package/dist/transport/errors.js +0 -12
  97. package/dist/transport/errors.js.map +1 -1
  98. package/dist/transport/index.d.ts +1 -3
  99. package/dist/transport/index.js +1 -2
  100. package/dist/transport/index.js.map +1 -1
  101. package/dist/tui/session_chat_app.js +29 -15
  102. package/dist/tui/session_chat_app.js.map +1 -1
  103. package/dist/tui/session_chat_controller.js +13 -64
  104. package/dist/tui/session_chat_controller.js.map +1 -1
  105. package/dist/tui/session_creation_attributes.js +3 -3
  106. package/dist/tui/session_creation_attributes.js.map +1 -1
  107. package/dist/tui/speech_playback.js +3 -3
  108. package/dist/tui/speech_playback.js.map +1 -1
  109. package/package.json +2 -2
  110. package/dist/core/modes/rpc_server.js +0 -105
  111. package/dist/core/modes/rpc_server.js.map +0 -1
  112. package/dist/transport/stdio_session_transport.d.ts +0 -48
  113. package/dist/transport/stdio_session_transport.js +0 -338
  114. package/dist/transport/stdio_session_transport.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  const GEMINI_GENERATE_CONTENT_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/models";
3
+ export const GEMINI_SPEECH_PLAYBACK_RATE = 1.1;
3
4
  const DEFAULT_GEMINI_SPEECH_REWRITE_MODEL = "gemini-3.6-flash";
4
5
  const DEFAULT_GEMINI_SPEECH_REWRITE_THINKING_LEVEL = "minimal";
5
6
  const DEFAULT_GEMINI_SPEECH_TTS_MODEL = "gemini-3.1-flash-tts-preview";
@@ -8,8 +9,15 @@ const DEFAULT_TTS_SAMPLE_RATE_HZ = 24000;
8
9
  const DEFAULT_TTS_CHANNEL_COUNT = 1;
9
10
  const DEFAULT_TTS_BITS_PER_SAMPLE = 16;
10
11
  const DEFAULT_TTS_MAX_ATTEMPTS = 3;
11
- const DEFAULT_TTS_CONCURRENCY = 6;
12
- const MIN_SPEECH_CHUNK_CHARACTERS = 240;
12
+ const SPEECH_REWRITE_TIMEOUT_MS = 60_000;
13
+ const PROGRESSIVE_TTS_CONCURRENCY = 6;
14
+ const COMPLETE_TTS_CONCURRENCY = 3;
15
+ const PROGRESSIVE_SPEECH_CHUNK_CHARACTERS = 500;
16
+ const COMPLETE_SPEECH_CHUNK_CHARACTERS = 1000;
17
+ const MAX_SPEECH_SOURCE_CHARACTERS = 10_000;
18
+ const MAX_SPOKEN_TEXT_CHARACTERS = 10_000;
19
+ const MAX_SPEECH_PCM_BYTES = 32 * 1024 * 1024;
20
+ const TTS_MAX_OUTPUT_TOKENS = 8192;
13
21
  const RETRYABLE_TTS_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
14
22
  const errorPayloadSchema = z.object({
15
23
  error: z
@@ -34,11 +42,20 @@ class GeminiTtsResponseError extends Error {
34
42
  this.name = "GeminiTtsResponseError";
35
43
  }
36
44
  }
45
+ class GeminiTtsOutputLimitError extends Error {
46
+ constructor() {
47
+ super("Gemini TTS reached its output token limit");
48
+ this.name = "GeminiTtsOutputLimitError";
49
+ }
50
+ }
37
51
  export async function* streamGeminiSpeechAudio(options) {
38
52
  const sourceText = options.sourceText.trim();
39
53
  if (!sourceText) {
40
54
  throw new Error("speech source text was empty");
41
55
  }
56
+ if (exceedsUnicodeCharacterLimit(sourceText, MAX_SPEECH_SOURCE_CHARACTERS)) {
57
+ throw new Error("speech source text exceeds 10,000 characters");
58
+ }
42
59
  const apiKey = options.apiKey.trim();
43
60
  if (!apiKey) {
44
61
  throw new Error("missing Gemini API key");
@@ -51,14 +68,33 @@ export async function* streamGeminiSpeechAudio(options) {
51
68
  let completed = false;
52
69
  try {
53
70
  await options.onStageChange?.("rewriting");
54
- const spokenText = await rewriteTextForSpeech({
55
- apiKey,
56
- model: rewriteModel,
57
- sourceText,
58
- fetchImpl,
59
- signal: abortController.signal,
60
- });
61
- const spokenChunks = splitSpeechChunks(spokenText);
71
+ const rewriteController = createLinkedAbortController(abortController.signal);
72
+ const rewriteTimeout = setTimeout(() => rewriteController.abort(), SPEECH_REWRITE_TIMEOUT_MS);
73
+ rewriteTimeout.unref?.();
74
+ let spokenText;
75
+ try {
76
+ spokenText = await rewriteTextForSpeech({
77
+ apiKey,
78
+ model: rewriteModel,
79
+ sourceText,
80
+ fetchImpl,
81
+ signal: rewriteController.signal,
82
+ });
83
+ }
84
+ catch (error) {
85
+ if (!abortController.signal.aborted && rewriteController.signal.aborted) {
86
+ throw new Error("speech rewrite timed out after 1 minute");
87
+ }
88
+ throw error;
89
+ }
90
+ finally {
91
+ clearTimeout(rewriteTimeout);
92
+ rewriteController.dispose();
93
+ }
94
+ if (exceedsUnicodeCharacterLimit(spokenText, MAX_SPOKEN_TEXT_CHARACTERS)) {
95
+ throw new Error("rewritten speech text exceeds 10,000 characters");
96
+ }
97
+ const spokenChunks = splitSpeechChunks(spokenText, options.deliveryMode);
62
98
  await options.onStageChange?.("generating");
63
99
  await options.onChunkProgress?.({ ready: 0, total: spokenChunks.length });
64
100
  for await (const chunk of synthesizeSpeechAudioChunksInOrder({
@@ -69,7 +105,9 @@ export async function* streamGeminiSpeechAudio(options) {
69
105
  fetchImpl,
70
106
  signal: abortController.signal,
71
107
  maxAttempts: options.maxTtsAttempts ?? DEFAULT_TTS_MAX_ATTEMPTS,
72
- concurrency: DEFAULT_TTS_CONCURRENCY,
108
+ concurrency: options.deliveryMode === "progressive"
109
+ ? PROGRESSIVE_TTS_CONCURRENCY
110
+ : COMPLETE_TTS_CONCURRENCY,
73
111
  onChunkProgress: options.onChunkProgress,
74
112
  abortOnFailure: () => abortController.abort(),
75
113
  })) {
@@ -130,6 +168,7 @@ async function* synthesizeSpeechAudioChunksInOrder(args) {
130
168
  let nextIndex = 0;
131
169
  let nextYieldIndex = 0;
132
170
  let ready = 0;
171
+ let totalPcmBytes = 0;
133
172
  let failure;
134
173
  let notify;
135
174
  const wake = () => {
@@ -163,7 +202,7 @@ async function* synthesizeSpeechAudioChunksInOrder(args) {
163
202
  return;
164
203
  }
165
204
  try {
166
- results[index] = await synthesizeSpeechAudioChunk({
205
+ const pcmAudio = await synthesizeSpeechAudioChunk({
167
206
  apiKey: args.apiKey,
168
207
  model: args.model,
169
208
  voiceName: args.voiceName,
@@ -172,6 +211,11 @@ async function* synthesizeSpeechAudioChunksInOrder(args) {
172
211
  signal: args.signal,
173
212
  maxAttempts: args.maxAttempts,
174
213
  });
214
+ totalPcmBytes += pcmAudio.length;
215
+ if (totalPcmBytes > MAX_SPEECH_PCM_BYTES) {
216
+ throw new Error("generated speech audio exceeds the 32 MiB limit");
217
+ }
218
+ results[index] = pcmAudio;
175
219
  ready += 1;
176
220
  await args.onChunkProgress?.({ ready, total });
177
221
  wake();
@@ -192,6 +236,7 @@ async function* synthesizeSpeechAudioChunksInOrder(args) {
192
236
  while (nextYieldIndex < total) {
193
237
  const nextResult = results[nextYieldIndex];
194
238
  if (nextResult) {
239
+ results[nextYieldIndex] = undefined;
195
240
  yield { index: nextYieldIndex, pcmAudio: nextResult };
196
241
  nextYieldIndex += 1;
197
242
  continue;
@@ -229,7 +274,7 @@ async function synthesizeSpeechAudioChunk(args) {
229
274
  ],
230
275
  generationConfig: {
231
276
  responseModalities: ["AUDIO"],
232
- temperature: 1,
277
+ maxOutputTokens: TTS_MAX_OUTPUT_TOKENS,
233
278
  speechConfig: {
234
279
  voiceConfig: {
235
280
  prebuiltVoiceConfig: {
@@ -240,6 +285,7 @@ async function synthesizeSpeechAudioChunk(args) {
240
285
  },
241
286
  },
242
287
  });
288
+ assertGeminiTtsDidNotReachOutputLimit(payload);
243
289
  const audioData = extractGeminiInlineAudioData(payload);
244
290
  if (!audioData) {
245
291
  throw new GeminiTtsResponseError("Gemini TTS response did not include audio data");
@@ -304,6 +350,14 @@ function extractGeminiText(payload) {
304
350
  }
305
351
  return "";
306
352
  }
353
+ function assertGeminiTtsDidNotReachOutputLimit(payload) {
354
+ if (!isObject(payload) || !Array.isArray(payload.candidates)) {
355
+ return;
356
+ }
357
+ if (payload.candidates.some((candidate) => isObject(candidate) && candidate.finishReason === "MAX_TOKENS")) {
358
+ throw new GeminiTtsOutputLimitError();
359
+ }
360
+ }
307
361
  function extractGeminiInlineAudioData(payload) {
308
362
  if (!isObject(payload) || !Array.isArray(payload.candidates)) {
309
363
  return undefined;
@@ -336,14 +390,17 @@ function buildSpeechRewritePrompt(sourceText) {
336
390
  "Things that typically need rewriting: file paths, shell commands, code identifiers, markdown structure, XML-like tags, long option lists, and code-heavy formatting.",
337
391
  "Remove formatting. Convert headings, lists, tables, and code blocks into plain spoken prose. Do not preserve markdown bullets, heading markers, table rows, fences, or standalone labels.",
338
392
  "For file references, keep the filename and any line or range info that was actually present. Do not add location detail that was not in the original.",
339
- "Say code identifiers and version strings as natural words (for example, handleToolUiEvent as 'handle tool UI event', v5.4 as 'version 5.4'). Keep numbers and units natural (for example, 8,192 tokens as 'about eight thousand tokens').",
393
+ "Preserve numbers exactly as written, including separators, decimals, units, versions, line numbers, and ranges.",
394
+ "Preserve established technical names, acronyms, initialisms, commands, program names, filenames, and extensions exactly as written. Do not spell their letters apart, expand them, or change their capitalization. Examples that must remain unchanged include 24, PCM, ffmpeg, npm, v5.4, and config.json.",
395
+ "Rewrite a code identifier only when its literal form would be difficult to follow aloud, and preserve its exact meaning.",
340
396
  "",
341
397
  "Examples of good rewrites:",
342
398
  '- `src/core/utils/gemini_speech.ts:372` → "gemini_speech.ts, line 372"',
343
399
  '- `src/tui/session_chat_controller.ts:1819-1855` → "session_chat_controller.ts, lines 1819 to 1855"',
344
400
  '- `src/core/session/compaction.ts` → "compaction.ts"',
345
401
  '- `/Users/markus/.config/tau/config.json` → "the tau config.json in your home directory"',
346
- '- `rg --heading -n -t ts "ToolRunPresentation" src` → "ripgrep for ToolRunPresentation in TypeScript files under src"',
402
+ '- `rg --heading -n -t ts "ToolRunPresentation" src` → "the rg command searching TypeScript files for ToolRunPresentation under src"',
403
+ '- `24 kHz PCM with ffmpeg` → "24 kHz PCM with ffmpeg"',
347
404
  '- `<available-skills>` → "the available-skills tag"',
348
405
  "- A markdown bullet list of short items → a natural comma-separated list or short sentences",
349
406
  "",
@@ -355,38 +412,59 @@ function buildSpeechRewritePrompt(sourceText) {
355
412
  sourceText,
356
413
  ].join("\n");
357
414
  }
358
- function splitSpeechChunks(spokenText) {
359
- const paragraphs = spokenText
360
- .split(/\n\s*\n/g)
361
- .map((paragraph) => normalizeSpeechParagraph(paragraph))
362
- .filter((paragraph) => paragraph.length > 0);
363
- if (paragraphs.length === 0) {
364
- return [spokenText.trim()];
415
+ function exceedsUnicodeCharacterLimit(text, limit) {
416
+ let count = 0;
417
+ for (const _character of text) {
418
+ count += 1;
419
+ if (count > limit) {
420
+ return true;
421
+ }
365
422
  }
423
+ return false;
424
+ }
425
+ function splitSpeechChunks(spokenText, deliveryMode) {
426
+ const normalizedText = spokenText
427
+ .trim()
428
+ .split(/\n\s*\n/gu)
429
+ .map((paragraph) => paragraph.replace(/\s+/gu, " ").trim())
430
+ .filter(Boolean)
431
+ .join("\n\n");
432
+ const maxCharacters = deliveryMode === "progressive"
433
+ ? PROGRESSIVE_SPEECH_CHUNK_CHARACTERS
434
+ : COMPLETE_SPEECH_CHUNK_CHARACTERS;
366
435
  const chunks = [];
367
- let current = "";
368
- for (const paragraph of paragraphs) {
369
- if (!current) {
370
- current = paragraph;
371
- continue;
436
+ let remaining = Array.from(normalizedText);
437
+ while (remaining.length > maxCharacters) {
438
+ const boundary = findSpeechChunkBoundary(remaining, maxCharacters);
439
+ chunks.push(remaining.slice(0, boundary).join("").trim());
440
+ remaining = Array.from(remaining.slice(boundary).join("").trim());
441
+ }
442
+ if (remaining.length > 0) {
443
+ chunks.push(remaining.join(""));
444
+ }
445
+ return chunks.length > 0 ? chunks : [spokenText.trim()];
446
+ }
447
+ function findSpeechChunkBoundary(characters, maxCharacters) {
448
+ const preferredMinimum = Math.floor(maxCharacters * 0.6);
449
+ for (let index = maxCharacters; index >= preferredMinimum; index -= 1) {
450
+ if (characters[index] === "\n" && characters[index + 1] === "\n") {
451
+ return index;
372
452
  }
373
- if (current.length < MIN_SPEECH_CHUNK_CHARACTERS) {
374
- current = joinSpeechParagraphs(current, paragraph);
375
- continue;
453
+ }
454
+ for (let index = maxCharacters; index >= preferredMinimum; index -= 1) {
455
+ if (isSpeechSentenceBoundary(characters[index - 1] ?? "", characters[index] ?? "")) {
456
+ return index;
376
457
  }
377
- chunks.push(current);
378
- current = paragraph;
379
458
  }
380
- if (current) {
381
- chunks.push(current);
459
+ for (let index = maxCharacters; index >= 1; index -= 1) {
460
+ if (/\s/u.test(characters[index] ?? "")) {
461
+ return index;
462
+ }
382
463
  }
383
- return chunks;
464
+ return maxCharacters;
384
465
  }
385
- function normalizeSpeechParagraph(paragraph) {
386
- return paragraph.replace(/\s+/g, " ").trim();
387
- }
388
- function joinSpeechParagraphs(first, second) {
389
- return `${first}\n\n${second}`;
466
+ function isSpeechSentenceBoundary(previous, next) {
467
+ return /[。!?]/u.test(previous) || (/[.!?;:]/u.test(previous) && /\s/u.test(next));
390
468
  }
391
469
  function buildSpeechSynthesisPrompt(spokenText) {
392
470
  return [
@@ -395,13 +473,16 @@ function buildSpeechSynthesisPrompt(spokenText) {
395
473
  "",
396
474
  "### DIRECTOR'S NOTES",
397
475
  "Style: Clear, natural, conversational.",
398
- "Pacing: Slightly slower than conversational, with deliberate enunciation. The audio will be sped up during playback.",
476
+ "Pacing: Brisk conversational speed. Keep it clear, confident, and energetic without sounding rushed.",
399
477
  "",
400
478
  "### TRANSCRIPT",
401
479
  spokenText,
402
480
  ].join("\n");
403
481
  }
404
482
  function isRetryableTtsError(error) {
483
+ if (error instanceof GeminiTtsOutputLimitError) {
484
+ return false;
485
+ }
405
486
  if (error instanceof GeminiTtsResponseError) {
406
487
  return true;
407
488
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini_speech.js","sourceRoot":"","sources":["../../../src/core/utils/gemini_speech.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini_speech.js","sourceRoot":"","sources":["../../../src/core/utils/gemini_speech.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,22 @@
1
+ import { SESSION_PROTOCOL_MAX_ATTRIBUTE_VALUE_CHARS } from "../../protocol/session_protocol.js";
2
+ export function buildRepositoryAttribute(repositories) {
3
+ const included = [];
4
+ const seen = new Set();
5
+ let length = 0;
6
+ for (const repository of repositories) {
7
+ if (seen.has(repository))
8
+ continue;
9
+ seen.add(repository);
10
+ if (repository.length > SESSION_PROTOCOL_MAX_ATTRIBUTE_VALUE_CHARS)
11
+ continue;
12
+ const nextLength = length + (included.length > 0 ? 1 : 0) + repository.length;
13
+ if (nextLength > SESSION_PROTOCOL_MAX_ATTRIBUTE_VALUE_CHARS)
14
+ break;
15
+ included.push(repository);
16
+ length = nextLength;
17
+ }
18
+ return included.length > 0 ? included.join(",") : undefined;
19
+ }
1
20
  export function normalizeRepositoryReference(value, options = {}) {
2
21
  const reference = value.trim();
3
22
  if (!reference)
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/core/utils/repository.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,OAAO,GAA6B,EAAE;IAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAwB,CAAC;IAE7B,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAChB,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC5C,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;gBAC3B,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI;QACzB,EAAE,IAAI,EAAE;SACP,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,GAAG,cAAc,IAAI,cAAc,EAAE,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/core/utils/repository.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const APP_VERSION = "0.3.49";
1
+ export const APP_VERSION = "0.3.51";
2
2
  //# sourceMappingURL=version.js.map
@@ -1,27 +1,12 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { buildToolRunPresentation, formatToolDurationMs } from "../core/tools/presentation.js";
2
+ import { buildToolRunPresentation, formatToolDurationMs, parseToolRunPresentation, } from "../core/tools/presentation.js";
3
3
  import { createTextToolOutcome, executeTool, } from "../core/tools/registry.js";
4
- import { TOOL_NAME_CREATE_GOAL, TOOL_NAME_GET_GOAL, TOOL_NAME_UPDATE_GOAL, } from "../core/tools/tool_names.js";
4
+ import { HOST_TOOL_NAMES } from "../core/tools/tool_names.js";
5
5
  import { formatTokenEstimate } from "../core/utils/token.js";
6
6
  import { SESSION_PROTOCOL_VERSION } from "../protocol/session_protocol.js";
7
7
  const DEFAULT_ACK_TIMEOUT_MS = 5_000;
8
8
  const DEFAULT_EXECUTION_TIMEOUT_MS = 60_000;
9
- const HOST_TOOL_NAMES = new Set([
10
- "bash",
11
- "write",
12
- "edit",
13
- "view_image",
14
- "spawn_agent",
15
- "send_input_to_agent",
16
- "wait_for_agents",
17
- "list_agents",
18
- "interrupt_agent",
19
- "web",
20
- "nook",
21
- TOOL_NAME_GET_GOAL,
22
- TOOL_NAME_CREATE_GOAL,
23
- TOOL_NAME_UPDATE_GOAL,
24
- ]);
9
+ const HOST_TOOL_NAME_SET = new Set(HOST_TOOL_NAMES);
25
10
  export class ClientToolBroker {
26
11
  clients = new Map();
27
12
  pendingCalls = new Map();
@@ -31,7 +16,7 @@ export class ClientToolBroker {
31
16
  if (names.has(tool.name)) {
32
17
  throw new Error(`duplicate client tool '${tool.name}'`);
33
18
  }
34
- if (HOST_TOOL_NAMES.has(tool.name)) {
19
+ if (HOST_TOOL_NAME_SET.has(tool.name)) {
35
20
  throw new Error(`client tool '${tool.name}' duplicates a host tool`);
36
21
  }
37
22
  names.add(tool.name);
@@ -57,31 +42,57 @@ export class ClientToolBroker {
57
42
  ? [...client.tools.values()].map((tool) => createClientToolDefinition(sessionId, client.id, tool, this))
58
43
  : []);
59
44
  }
60
- ack(sessionId, callId) {
45
+ async ack(sessionId, callId, presentation) {
61
46
  const pending = this.pendingCalls.get(callId);
62
- if (!pending || pending.sessionId !== sessionId || pending.settled) {
47
+ if (!pending || pending.sessionId !== sessionId || pending.acknowledged || pending.settled) {
63
48
  return false;
64
49
  }
50
+ const resolvedPresentation = resolveClientToolPresentation(pending.toolCall.name, buildToolRunPresentation({
51
+ toolName: pending.toolCall.name,
52
+ subject: pending.toolCall.name,
53
+ }), presentation);
65
54
  clearTimeout(pending.ackTimer);
66
- return true;
55
+ pending.acknowledged = true;
56
+ try {
57
+ await pending.emitActivity({
58
+ type: "tool_call_started",
59
+ toolCallId: pending.toolCall.id,
60
+ toolName: pending.toolCall.name,
61
+ presentation: resolvedPresentation,
62
+ });
63
+ if (pending.settled || this.pendingCalls.get(callId) !== pending) {
64
+ return false;
65
+ }
66
+ pending.authorized = true;
67
+ return true;
68
+ }
69
+ catch (error) {
70
+ this.fail(callId, error instanceof Error ? error.message : String(error), "host-failed", "failed");
71
+ throw error;
72
+ }
67
73
  }
68
74
  result(sessionId, callId, result) {
69
75
  const pending = this.pendingCalls.get(callId);
70
- if (!pending || pending.sessionId !== sessionId || pending.settled) {
76
+ if (!pending ||
77
+ pending.sessionId !== sessionId ||
78
+ pending.settled ||
79
+ (result.ok && !pending.authorized)) {
71
80
  return false;
72
81
  }
73
82
  if (result.ok) {
74
- this.complete(callId, createTextToolOutcome(result.content, "succeeded"));
83
+ this.complete(callId, createTextToolOutcome(result.content, "succeeded"), result.presentation);
75
84
  }
76
85
  else {
77
- this.complete(callId, createTextToolOutcome(result.error, "failed"));
86
+ this.complete(callId, createTextToolOutcome(result.error, "failed"), result.presentation);
78
87
  }
79
88
  return true;
80
89
  }
81
90
  dispatch(options) {
82
91
  const client = this.clients.get(options.clientId);
83
92
  if (!client?.tools.has(options.tool.name) || !client.sessionIds.has(options.sessionId)) {
84
- return Promise.resolve(createTextToolOutcome(`Client tool '${options.tool.name}' is unavailable because its owning client detached.`, "blocked"));
93
+ return Promise.resolve({
94
+ outcome: createTextToolOutcome(`Client tool '${options.tool.name}' is unavailable because its owning client detached.`, "blocked"),
95
+ });
85
96
  }
86
97
  const callId = randomUUID();
87
98
  return new Promise((resolve) => {
@@ -98,6 +109,9 @@ export class ClientToolBroker {
98
109
  }, executionTimeoutMs),
99
110
  signal: options.signal,
100
111
  abortListener: () => this.abort(callId),
112
+ emitActivity: options.emitActivity,
113
+ acknowledged: false,
114
+ authorized: false,
101
115
  settled: false,
102
116
  resolve,
103
117
  };
@@ -174,7 +188,7 @@ export class ClientToolBroker {
174
188
  });
175
189
  this.complete(callId, createTextToolOutcome(message, outcome));
176
190
  }
177
- complete(callId, result) {
191
+ complete(callId, result, terminalPresentation) {
178
192
  const pending = this.pendingCalls.get(callId);
179
193
  if (!pending || pending.settled) {
180
194
  return;
@@ -184,20 +198,23 @@ export class ClientToolBroker {
184
198
  clearTimeout(pending.executionTimer);
185
199
  pending.signal.removeEventListener("abort", pending.abortListener);
186
200
  this.pendingCalls.delete(callId);
187
- pending.resolve(result);
201
+ pending.resolve({
202
+ outcome: result,
203
+ ...(terminalPresentation === undefined ? {} : { terminalPresentation }),
204
+ });
188
205
  }
189
206
  }
190
- function createClientToolFinishedUiEvent(toolCall, outcome, durationMs) {
207
+ function createClientToolFinishedUiEvent(toolCall, outcome, presentation, durationMs) {
191
208
  const isError = outcome.outcome !== "succeeded";
192
209
  return {
193
210
  type: "tool_call_finished",
194
211
  toolCallId: toolCall.id,
195
212
  toolName: toolCall.name,
196
- presentation: createClientToolPresentation(toolCall.name, extractToolOutcomeText(outcome), durationMs),
213
+ presentation: createClientToolPresentation(toolCall.name, presentation, extractToolOutcomeText(outcome), durationMs),
197
214
  status: isError ? "error" : "success",
198
215
  };
199
216
  }
200
- function createClientToolPresentation(toolName, content, durationMs) {
217
+ function createClientToolPresentation(toolName, presentation, content, durationMs) {
201
218
  const trimmed = content.trimEnd();
202
219
  const lineCount = trimmed ? trimmed.split("\n").length : 0;
203
220
  const contentBytes = Buffer.byteLength(trimmed, "utf8");
@@ -207,7 +224,7 @@ function createClientToolPresentation(toolName, content, durationMs) {
207
224
  .split("\n")
208
225
  .map((text) => ({ text }))
209
226
  : [];
210
- return buildToolRunPresentation({
227
+ const defaultPresentation = buildToolRunPresentation({
211
228
  toolName,
212
229
  subject: toolName,
213
230
  details,
@@ -217,6 +234,27 @@ function createClientToolPresentation(toolName, content, durationMs) {
217
234
  formatLineCount(lineCount),
218
235
  ].filter((part) => part !== undefined),
219
236
  });
237
+ return resolveClientToolPresentation(toolName, defaultPresentation, presentation);
238
+ }
239
+ function resolveClientToolPresentation(toolName, defaults, presentation) {
240
+ const resolved = buildToolRunPresentation({
241
+ toolName,
242
+ ...(presentation?.subject === undefined ? {} : { operation: toolName }),
243
+ subject: defaults.subject,
244
+ subjectWrap: defaults.subjectWrap,
245
+ subjectTruncation: false,
246
+ details: defaults.details,
247
+ detailTruncation: false,
248
+ metadata: defaults.metadata,
249
+ });
250
+ return parseToolRunPresentation({
251
+ ...resolved,
252
+ subject: presentation?.subject ?? resolved.subject,
253
+ subjectWrap: presentation?.subjectWrap ?? resolved.subjectWrap,
254
+ details: presentation?.details?.map((line) => ({ ...line, wrap: line.wrap ?? "word" })) ??
255
+ resolved.details,
256
+ metadata: presentation?.metadata ?? resolved.metadata,
257
+ });
220
258
  }
221
259
  function extractToolOutcomeText(outcome) {
222
260
  return outcome.content
@@ -252,12 +290,13 @@ function createClientToolDefinition(sessionId, clientId, tool, broker) {
252
290
  tool,
253
291
  toolCall,
254
292
  signal,
293
+ emitActivity: context.emitActivity,
255
294
  });
256
295
  const durationMs = Math.max(0, Date.now() - startedAt);
257
296
  return {
258
- content: toolResult.content,
259
- outcome: toolResult.outcome,
260
- uiEvent: createClientToolFinishedUiEvent(toolCall, toolResult, durationMs),
297
+ content: toolResult.outcome.content,
298
+ outcome: toolResult.outcome.outcome,
299
+ uiEvent: createClientToolFinishedUiEvent(toolCall, toolResult.outcome, toolResult.terminalPresentation, durationMs),
261
300
  };
262
301
  });
263
302
  },