@markusylisiurunen/tau 0.3.50 → 0.3.52

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 (105) hide show
  1. package/dist/code_mode/command.js +26 -14
  2. package/dist/code_mode/command.js.map +1 -1
  3. package/dist/code_mode/index.d.ts +2 -1
  4. package/dist/code_mode/index.js +1 -0
  5. package/dist/code_mode/index.js.map +1 -1
  6. package/dist/core/cli.js +0 -11
  7. package/dist/core/cli.js.map +1 -1
  8. package/dist/core/client_tools/command_client_tools.js +236 -151
  9. package/dist/core/client_tools/command_client_tools.js.map +1 -1
  10. package/dist/core/config/schema.js +8 -2
  11. package/dist/core/config/schema.js.map +1 -1
  12. package/dist/core/history/history_manager.js +73 -7
  13. package/dist/core/history/history_manager.js.map +1 -1
  14. package/dist/core/history/local_history_store.js +73 -2
  15. package/dist/core/history/local_history_store.js.map +1 -1
  16. package/dist/core/history/remote_history_client.js +36 -6
  17. package/dist/core/history/remote_history_client.js.map +1 -1
  18. package/dist/core/modes/index.js +0 -1
  19. package/dist/core/modes/index.js.map +1 -1
  20. package/dist/core/static/tau_docs/client-tools.md +212 -12
  21. package/dist/core/static/tau_docs/config-reference.md +1 -1
  22. package/dist/core/static/tau_docs/configuration.md +1 -1
  23. package/dist/core/static/tau_docs/credentials.md +4 -4
  24. package/dist/core/static/tau_docs/history.md +6 -4
  25. package/dist/core/static/tau_docs/index.md +1 -1
  26. package/dist/core/static/tau_docs/node-sdk.md +33 -26
  27. package/dist/core/static/tau_docs/ownership-and-scope.md +3 -4
  28. package/dist/core/static/tau_docs/prompts-and-project-context.md +2 -2
  29. package/dist/core/static/tau_docs/remote-sessions.md +4 -47
  30. package/dist/core/static/tau_docs/security.md +2 -6
  31. package/dist/core/static/tau_docs/session-protocol-methods.md +48 -7
  32. package/dist/core/static/tau_docs/session-protocol.md +18 -18
  33. package/dist/core/static/tau_docs/sessions.md +6 -5
  34. package/dist/core/static/tau_docs/telegram.md +8 -4
  35. package/dist/core/static/tau_docs/tools.md +1 -1
  36. package/dist/core/static/tau_docs/troubleshooting.md +3 -5
  37. package/dist/core/static/tau_docs/tui.md +4 -6
  38. package/dist/core/telegram/adapter.js +226 -18
  39. package/dist/core/telegram/adapter.js.map +1 -1
  40. package/dist/core/telegram/config.js +1 -1
  41. package/dist/core/telegram/config.js.map +1 -1
  42. package/dist/core/telegram/project_preferences.js +42 -12
  43. package/dist/core/telegram/project_preferences.js.map +1 -1
  44. package/dist/core/telegram/runtime.js +6 -1
  45. package/dist/core/telegram/runtime.js.map +1 -1
  46. package/dist/core/telegram/session_manager.js +50 -4
  47. package/dist/core/telegram/session_manager.js.map +1 -1
  48. package/dist/core/telegram/tts.js +137 -0
  49. package/dist/core/telegram/tts.js.map +1 -0
  50. package/dist/core/tools/execution_backend.js +13 -3
  51. package/dist/core/tools/execution_backend.js.map +1 -1
  52. package/dist/core/tools/presentation.js +55 -17
  53. package/dist/core/tools/presentation.js.map +1 -1
  54. package/dist/core/utils/gemini_speech.js +123 -42
  55. package/dist/core/utils/gemini_speech.js.map +1 -1
  56. package/dist/core/utils/gemini_transcription.js +1 -1
  57. package/dist/core/version.js +1 -1
  58. package/dist/execution/cloudflare_sandbox_execution_environment.js +2 -2
  59. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
  60. package/dist/execution/fly_sprite_execution_environment.js +2 -2
  61. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  62. package/dist/host/client_tool_broker.js +71 -17
  63. package/dist/host/client_tool_broker.js.map +1 -1
  64. package/dist/host/local_session_host.js +2 -2
  65. package/dist/host/local_session_host.js.map +1 -1
  66. package/dist/host/session_host.js.map +1 -1
  67. package/dist/host/session_protocol_handler.js +17 -6
  68. package/dist/host/session_protocol_handler.js.map +1 -1
  69. package/dist/main.js +18 -92
  70. package/dist/main.js.map +1 -1
  71. package/dist/protocol/session_protocol.d.ts +22 -2
  72. package/dist/protocol/session_protocol.js +47 -3
  73. package/dist/protocol/session_protocol.js.map +1 -1
  74. package/dist/sdk/client_tool_command.d.ts +41 -13
  75. package/dist/sdk/client_tool_command.js +157 -39
  76. package/dist/sdk/client_tool_command.js.map +1 -1
  77. package/dist/sdk/client_tool_presentation.d.ts +17 -0
  78. package/dist/sdk/client_tool_presentation.js +9 -0
  79. package/dist/sdk/client_tool_presentation.js.map +1 -0
  80. package/dist/sdk/code_mode.js +10 -1
  81. package/dist/sdk/code_mode.js.map +1 -1
  82. package/dist/sdk/index.d.ts +5 -4
  83. package/dist/sdk/index.js +2 -1
  84. package/dist/sdk/index.js.map +1 -1
  85. package/dist/sdk/session.js +28 -9
  86. package/dist/sdk/session.js.map +1 -1
  87. package/dist/sdk/types.d.ts +11 -1
  88. package/dist/transport/errors.d.ts +0 -11
  89. package/dist/transport/errors.js +0 -12
  90. package/dist/transport/errors.js.map +1 -1
  91. package/dist/transport/index.d.ts +1 -3
  92. package/dist/transport/index.js +1 -2
  93. package/dist/transport/index.js.map +1 -1
  94. package/dist/tui/session_chat_app.js +28 -15
  95. package/dist/tui/session_chat_app.js.map +1 -1
  96. package/dist/tui/session_chat_controller.js +0 -51
  97. package/dist/tui/session_chat_controller.js.map +1 -1
  98. package/dist/tui/speech_playback.js +3 -3
  99. package/dist/tui/speech_playback.js.map +1 -1
  100. package/package.json +2 -2
  101. package/dist/core/modes/rpc_server.js +0 -105
  102. package/dist/core/modes/rpc_server.js.map +0 -1
  103. package/dist/transport/stdio_session_transport.d.ts +0 -48
  104. package/dist/transport/stdio_session_transport.js +0 -338
  105. package/dist/transport/stdio_session_transport.js.map +0 -1
@@ -1,338 +0,0 @@
1
- import { parseSessionProtocolOutgoingLine, } from "../protocol/session_protocol.js";
2
- import { TauProcessError, TauTransportError } from "./errors.js";
3
- import { PendingSessionProtocolRequests, } from "./pending_session_protocol_requests.js";
4
- import { createDeferred, handleSessionProtocolTransportParseFailure, handleSessionProtocolTransportResponse, notifySessionProtocolClientToolListeners, notifySessionProtocolDeltaListeners, notifySessionProtocolEphemeralListeners, notifySessionProtocolFailureListeners, notifySessionProtocolPendingUserMessagesListeners, notifySessionProtocolSubagentActivitiesListeners, waitForPromiseOrTimeout, withTimeout, } from "./session_protocol_transport_helpers.js";
5
- const CLOSE_TIMEOUT_MS = 2_000;
6
- const STDERR_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
7
- const STDERR_TRUNCATION_MARKER = "[stderr truncated; showing tail]\n";
8
- const STDERR_TRUNCATION_MARKER_BYTES = Buffer.byteLength(STDERR_TRUNCATION_MARKER, "utf8");
9
- function truncateUtf8Tail(value, maxBytes) {
10
- const buffer = Buffer.from(value, "utf8");
11
- if (buffer.byteLength <= maxBytes) {
12
- return value;
13
- }
14
- let start = buffer.byteLength - maxBytes;
15
- while (start < buffer.byteLength && (buffer[start] & 0xc0) === 0x80) {
16
- start += 1;
17
- }
18
- return buffer.subarray(start).toString("utf8");
19
- }
20
- export class StdioSessionProtocolTransport {
21
- process;
22
- deltaListeners = new Set();
23
- ephemeralListeners = new Set();
24
- pendingUserMessagesListeners = new Set();
25
- subagentActivitiesListeners = new Set();
26
- clientToolListeners = new Set();
27
- failureListeners = new Set();
28
- pendingRequests = new PendingSessionProtocolRequests();
29
- readyDeferred = createDeferred();
30
- exitDeferred = createDeferred();
31
- readyValue;
32
- stdoutBuffer = new LineBuffer();
33
- stderrBuffer = "";
34
- stderrTruncated = false;
35
- connectPromise;
36
- closePromise;
37
- isConnected = false;
38
- isClosed = false;
39
- isExited = false;
40
- fatalError;
41
- constructor(process) {
42
- this.process = process;
43
- this.process.stdout.setEncoding("utf8");
44
- this.process.stderr.setEncoding("utf8");
45
- this.process.stdout.on("data", this.handleStdoutData);
46
- this.process.stderr.on("data", this.handleStderrData);
47
- this.process.on("error", this.handleProcessError);
48
- this.process.on("exit", this.handleProcessExit);
49
- this.process.on("close", this.handleProcessClose);
50
- }
51
- get ready() {
52
- if (!this.readyValue) {
53
- throw new TauTransportError("tau sdk client is not connected");
54
- }
55
- return this.readyValue;
56
- }
57
- async connect(initializeParams, timeoutMs) {
58
- if (this.isClosed) {
59
- throw new TauTransportError("tau sdk client is closed");
60
- }
61
- if (this.fatalError) {
62
- throw this.fatalError;
63
- }
64
- if (this.isConnected) {
65
- return;
66
- }
67
- this.connectPromise ??= this.establishConnection(initializeParams, timeoutMs);
68
- await this.connectPromise;
69
- }
70
- async establishConnection(initializeParams, timeoutMs) {
71
- const ready = await withTimeout(this.readyDeferred.promise, timeoutMs, new TauTransportError(`timed out waiting for session protocol ready message after ${timeoutMs}ms`));
72
- this.readyValue = ready;
73
- await this.request("initialize", initializeParams);
74
- this.isConnected = true;
75
- }
76
- onDelta(listener) {
77
- this.deltaListeners.add(listener);
78
- return () => {
79
- this.deltaListeners.delete(listener);
80
- };
81
- }
82
- onEphemeral(listener) {
83
- this.ephemeralListeners.add(listener);
84
- return () => {
85
- this.ephemeralListeners.delete(listener);
86
- };
87
- }
88
- onPendingUserMessages(listener) {
89
- this.pendingUserMessagesListeners.add(listener);
90
- return () => {
91
- this.pendingUserMessagesListeners.delete(listener);
92
- };
93
- }
94
- onSubagentActivities(listener) {
95
- this.subagentActivitiesListeners.add(listener);
96
- return () => {
97
- this.subagentActivitiesListeners.delete(listener);
98
- };
99
- }
100
- onClientTool(listener) {
101
- this.clientToolListeners.add(listener);
102
- return () => {
103
- this.clientToolListeners.delete(listener);
104
- };
105
- }
106
- onFailure(listener) {
107
- this.failureListeners.add(listener);
108
- return () => {
109
- this.failureListeners.delete(listener);
110
- };
111
- }
112
- request(method, params) {
113
- if (this.isClosed) {
114
- return Promise.reject(new TauTransportError("tau sdk client is closed"));
115
- }
116
- if (this.fatalError) {
117
- return Promise.reject(this.fatalError);
118
- }
119
- let pending;
120
- try {
121
- pending = this.pendingRequests.create(method, params);
122
- }
123
- catch (error) {
124
- return Promise.reject(error);
125
- }
126
- const payload = JSON.stringify(pending.request);
127
- try {
128
- this.process.stdin.write(`${payload}\n`, "utf8", (error) => {
129
- if (error) {
130
- this.failTransport(new TauTransportError("failed to write request to tau rpc process", { cause: error }));
131
- }
132
- });
133
- }
134
- catch (error) {
135
- this.failTransport(new TauTransportError("failed to write request to tau rpc process", { cause: error }));
136
- }
137
- return pending.promise;
138
- }
139
- async close() {
140
- if (this.closePromise) {
141
- return this.closePromise;
142
- }
143
- this.isClosed = true;
144
- const closeError = new TauTransportError("tau sdk client was closed");
145
- this.pendingRequests.rejectAll(closeError);
146
- this.rejectReadyIfPending(closeError);
147
- this.deltaListeners.clear();
148
- this.ephemeralListeners.clear();
149
- this.pendingUserMessagesListeners.clear();
150
- this.subagentActivitiesListeners.clear();
151
- this.clientToolListeners.clear();
152
- this.failureListeners.clear();
153
- this.process.stdout.off("data", this.handleStdoutData);
154
- this.process.stderr.off("data", this.handleStderrData);
155
- this.closePromise = (async () => {
156
- if (!this.isExited) {
157
- try {
158
- this.process.stdin.end();
159
- }
160
- catch {
161
- // ignore transport shutdown errors
162
- }
163
- try {
164
- this.process.kill("SIGTERM");
165
- }
166
- catch {
167
- // ignore transport shutdown errors
168
- }
169
- await waitForExitOrTimeout(this.exitDeferred.promise, CLOSE_TIMEOUT_MS);
170
- if (!this.isExited) {
171
- try {
172
- this.process.kill("SIGKILL");
173
- }
174
- catch {
175
- // ignore transport shutdown errors
176
- }
177
- await waitForExitOrTimeout(this.exitDeferred.promise, CLOSE_TIMEOUT_MS);
178
- }
179
- }
180
- this.process.off("error", this.handleProcessError);
181
- this.process.off("exit", this.handleProcessExit);
182
- this.process.off("close", this.handleProcessClose);
183
- })();
184
- return this.closePromise;
185
- }
186
- handleStdoutData = (chunk) => {
187
- for (const line of this.stdoutBuffer.push(chunk.toString())) {
188
- if (!line) {
189
- continue;
190
- }
191
- this.handleSessionProtocolLine(line);
192
- }
193
- };
194
- handleStderrData = (chunk) => {
195
- const next = `${this.stderrBuffer}${chunk.toString()}`;
196
- const maxTailBytes = STDERR_DIAGNOSTIC_MAX_BYTES - STDERR_TRUNCATION_MARKER_BYTES;
197
- if (this.stderrTruncated || Buffer.byteLength(next, "utf8") > STDERR_DIAGNOSTIC_MAX_BYTES) {
198
- this.stderrBuffer = truncateUtf8Tail(next, maxTailBytes);
199
- this.stderrTruncated = true;
200
- return;
201
- }
202
- this.stderrBuffer = next;
203
- };
204
- handleProcessError = (error) => {
205
- this.failTransport(new TauProcessError("tau rpc process transport failure", {
206
- stderr: this.getStderrDiagnostic(),
207
- cause: error,
208
- }));
209
- };
210
- handleProcessExit = (code, signal) => {
211
- this.onProcessTerminated({ code, signal });
212
- };
213
- handleProcessClose = (code, signal) => {
214
- this.onProcessTerminated({ code, signal });
215
- };
216
- onProcessTerminated(exit) {
217
- if (!this.isExited) {
218
- this.isExited = true;
219
- this.exitDeferred.resolve(exit);
220
- }
221
- if (this.isClosed) {
222
- return;
223
- }
224
- this.isClosed = true;
225
- const message = [
226
- "tau rpc process exited unexpectedly",
227
- `code=${exit.code ?? "null"}`,
228
- `signal=${exit.signal ?? "null"}`,
229
- ].join(" ");
230
- this.failTransport(new TauProcessError(message, {
231
- exitCode: exit.code,
232
- signal: exit.signal,
233
- stderr: this.getStderrDiagnostic(),
234
- }));
235
- }
236
- getStderrDiagnostic() {
237
- return this.stderrTruncated
238
- ? `${STDERR_TRUNCATION_MARKER}${this.stderrBuffer}`
239
- : this.stderrBuffer;
240
- }
241
- handleSessionProtocolLine(line) {
242
- const parsed = parseSessionProtocolOutgoingLine(line);
243
- if (!parsed.ok) {
244
- handleSessionProtocolTransportParseFailure({
245
- failure: parsed,
246
- pendingRequests: this.pendingRequests,
247
- failTransport: (error) => this.failTransport(error),
248
- malformedJsonPeer: "tau rpc process",
249
- invalidPayloadPeer: "tau process",
250
- });
251
- return;
252
- }
253
- const message = parsed.message;
254
- if (message.type === "ready") {
255
- if (!this.readyValue) {
256
- this.readyValue = message;
257
- this.readyDeferred.resolve(message);
258
- }
259
- return;
260
- }
261
- if (message.type === "session.delta") {
262
- notifySessionProtocolDeltaListeners(this.deltaListeners, message, {
263
- ignoreListenerErrors: true,
264
- });
265
- return;
266
- }
267
- if (message.type === "session.ephemeral") {
268
- notifySessionProtocolEphemeralListeners(this.ephemeralListeners, message, {
269
- ignoreListenerErrors: true,
270
- });
271
- return;
272
- }
273
- if (message.type === "session.pendingUserMessages") {
274
- notifySessionProtocolPendingUserMessagesListeners(this.pendingUserMessagesListeners, message, {
275
- ignoreListenerErrors: true,
276
- });
277
- return;
278
- }
279
- if (message.type === "session.subagentActivities") {
280
- notifySessionProtocolSubagentActivitiesListeners(this.subagentActivitiesListeners, message, {
281
- ignoreListenerErrors: true,
282
- });
283
- return;
284
- }
285
- if (message.type === "session.clientTool.call" ||
286
- message.type === "session.clientTool.cancel") {
287
- notifySessionProtocolClientToolListeners(this.clientToolListeners, message, {
288
- ignoreListenerErrors: true,
289
- });
290
- return;
291
- }
292
- handleSessionProtocolTransportResponse(message, this.pendingRequests, (error) => this.failTransport(error));
293
- }
294
- failTransport(error) {
295
- if (this.fatalError) {
296
- return;
297
- }
298
- this.fatalError = error;
299
- notifySessionProtocolFailureListeners(this.failureListeners, error);
300
- this.pendingRequests.rejectAll(error);
301
- this.rejectReadyIfPending(error);
302
- }
303
- rejectReadyIfPending(error) {
304
- if (this.readyValue || !this.connectPromise) {
305
- return;
306
- }
307
- this.readyDeferred.reject(error);
308
- }
309
- }
310
- async function waitForExitOrTimeout(exitPromise, timeoutMs) {
311
- await waitForPromiseOrTimeout(exitPromise, timeoutMs);
312
- }
313
- class LineBuffer {
314
- chunks = [];
315
- push(chunk) {
316
- const lines = [];
317
- let start = 0;
318
- while (true) {
319
- const newlineIndex = chunk.indexOf("\n", start);
320
- if (newlineIndex === -1) {
321
- break;
322
- }
323
- this.chunks.push(chunk.slice(start, newlineIndex));
324
- lines.push(this.flushLine());
325
- start = newlineIndex + 1;
326
- }
327
- if (start < chunk.length) {
328
- this.chunks.push(chunk.slice(start));
329
- }
330
- return lines;
331
- }
332
- flushLine() {
333
- const line = this.chunks.length === 1 ? this.chunks[0] : this.chunks.join("");
334
- this.chunks.length = 0;
335
- return line.trim();
336
- }
337
- }
338
- //# sourceMappingURL=stdio_session_transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio_session_transport.js","sourceRoot":"","sources":["../../src/transport/stdio_session_transport.ts"],"names":[],"mappings":"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"}