@markusylisiurunen/tau 0.2.35 → 0.2.37

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 (53) hide show
  1. package/README.md +63 -5
  2. package/dist/core/cli.js +20 -1
  3. package/dist/core/cli.js.map +1 -1
  4. package/dist/core/commands/registry.js +16 -0
  5. package/dist/core/commands/registry.js.map +1 -1
  6. package/dist/core/config/builtin_themes.js +31 -0
  7. package/dist/core/config/builtin_themes.js.map +1 -1
  8. package/dist/core/config/index.js +1 -1
  9. package/dist/core/config/index.js.map +1 -1
  10. package/dist/core/config/schema.js +24 -7
  11. package/dist/core/config/schema.js.map +1 -1
  12. package/dist/core/index.js +5 -2
  13. package/dist/core/index.js.map +1 -1
  14. package/dist/core/modes/index.js +2 -0
  15. package/dist/core/modes/index.js.map +1 -1
  16. package/dist/core/modes/rpc_protocol.js +240 -0
  17. package/dist/core/modes/rpc_protocol.js.map +1 -0
  18. package/dist/core/modes/rpc_server.js +275 -0
  19. package/dist/core/modes/rpc_server.js.map +1 -0
  20. package/dist/core/runtime/chat_runtime.js +124 -0
  21. package/dist/core/runtime/chat_runtime.js.map +1 -0
  22. package/dist/core/runtime/conversation_turn_runtime.js +49 -0
  23. package/dist/core/runtime/conversation_turn_runtime.js.map +1 -0
  24. package/dist/core/runtime/session_prompt_composer.js +55 -0
  25. package/dist/core/runtime/session_prompt_composer.js.map +1 -0
  26. package/dist/core/utils/auto_retry.js +1 -1
  27. package/dist/core/utils/auto_retry.js.map +1 -1
  28. package/dist/core/version.js +1 -1
  29. package/dist/main.js +140 -5
  30. package/dist/main.js.map +1 -1
  31. package/dist/sdk/client.d.ts +2 -0
  32. package/dist/sdk/client.js +409 -0
  33. package/dist/sdk/client.js.map +1 -0
  34. package/dist/sdk/errors.d.ts +32 -0
  35. package/dist/sdk/errors.js +37 -0
  36. package/dist/sdk/errors.js.map +1 -0
  37. package/dist/sdk/index.d.ts +4 -0
  38. package/dist/sdk/index.js +3 -0
  39. package/dist/sdk/index.js.map +1 -0
  40. package/dist/sdk/types.d.ts +83 -0
  41. package/dist/sdk/types.js +2 -0
  42. package/dist/sdk/types.js.map +1 -0
  43. package/dist/tui/app.js.map +1 -1
  44. package/dist/tui/chat_controller.js +378 -101
  45. package/dist/tui/chat_controller.js.map +1 -1
  46. package/dist/tui/chat_view.js +59 -0
  47. package/dist/tui/chat_view.js.map +1 -1
  48. package/dist/tui/ui/custom_editor.js +12 -0
  49. package/dist/tui/ui/custom_editor.js.map +1 -1
  50. package/dist/tui/ui/theme/palette.js +1 -0
  51. package/dist/tui/ui/theme/palette.js.map +1 -1
  52. package/dist/tui/ui/theme/theme.js.map +1 -1
  53. package/package.json +11 -5
package/dist/main.js CHANGED
@@ -1,13 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { writeSync } from "node:fs";
2
+ import { readFileSync, writeSync } from "node:fs";
3
3
  import { readFile } from "node:fs/promises";
4
+ import { homedir } from "node:os";
4
5
  import { resolve } from "node:path";
5
6
  import { createInterface } from "node:readline";
6
- import { AuthStorage, buildVirtualBundle, CliError, createLocalToolExecutionBackend, createSandboxToolExecutionBackend, getAuthPath, InstallCliError, loadConfig, loadRuntimeConfig, parseCheckpoint, parseCliArgs, parsePersonaString, printDebugInfo, printHelp, printInstallHelp, printUsageHelp, runInstallCommand, runListCommand, runLoginCommand, runLogoutCommand, runUsageCommand, ToolCatalog, UsageCliError, } from "./core/index.js";
7
+ import { AuthStorage, buildVirtualBundle, ChatRuntime, CliError, createDefaultCoreDeps, createLocalToolExecutionBackend, createSandboxToolExecutionBackend, getAuthPath, InstallCliError, loadConfig, loadRuntimeConfig, parseCheckpoint, parseCliArgs, parsePersonaString, printDebugInfo, printHelp, printInstallHelp, printUsageHelp, runInstallCommand, runListCommand, runLoginCommand, runLogoutCommand, runRpcServer, runUsageCommand, ToolCatalog, UsageCliError, } from "./core/index.js";
8
+ import { resolveAgentCwd } from "./core/utils/agent_environment.js";
9
+ import { buildProjectContextBlock, buildSkillsIndexBlock, findAgentsFilesInScopeDetailed, } from "./core/utils/context.js";
7
10
  import { ChatApp } from "./tui/index.js";
8
11
  import { detectTerminalAppearance } from "./tui/terminal_appearance.js";
9
12
  const cwd = process.cwd();
10
13
  const argv = process.argv.slice(2);
14
+ const isRpcSubcommand = argv[0] === "rpc";
11
15
  function registerTerminalExitCleanup() {
12
16
  if (!process.stdout.isTTY)
13
17
  return;
@@ -20,7 +24,9 @@ function registerTerminalExitCleanup() {
20
24
  }
21
25
  });
22
26
  }
23
- registerTerminalExitCleanup();
27
+ if (!isRpcSubcommand) {
28
+ registerTerminalExitCleanup();
29
+ }
24
30
  function printAuthHelp() {
25
31
  console.log([
26
32
  "usage:",
@@ -50,6 +56,109 @@ async function readPipedStdin() {
50
56
  }
51
57
  return data;
52
58
  }
59
+ function getEnabledSkillsForPersona(persona, discoveredSkills) {
60
+ const personaSkills = persona.skills;
61
+ if (personaSkills === "*") {
62
+ return discoveredSkills;
63
+ }
64
+ if (!personaSkills || personaSkills.length === 0) {
65
+ return [];
66
+ }
67
+ const byName = new Map();
68
+ for (const skill of discoveredSkills) {
69
+ byName.set(skill.name.toLowerCase(), skill);
70
+ }
71
+ const enabled = [];
72
+ for (const name of personaSkills) {
73
+ const skill = byName.get(name.trim().toLowerCase());
74
+ if (skill) {
75
+ enabled.push(skill);
76
+ }
77
+ }
78
+ return enabled;
79
+ }
80
+ async function runRpcMode(options) {
81
+ const sandboxBackend = options.cli.sandbox
82
+ ? await createSandboxBackend(options.config)
83
+ : undefined;
84
+ try {
85
+ const deps = createDefaultCoreDeps();
86
+ const runtimeCwd = deps.env.cwd();
87
+ const home = deps.env.home() || process.env.HOME || homedir();
88
+ const includeAgentContext = !options.cli.noAgentContextFiles;
89
+ let projectContextBlock;
90
+ if (includeAgentContext) {
91
+ const agentsContext = findAgentsFilesInScopeDetailed(runtimeCwd, home);
92
+ if (agentsContext.errors.length > 0) {
93
+ // eslint-disable-next-line no-console
94
+ console.error("config warnings:");
95
+ for (const warning of agentsContext.errors) {
96
+ // eslint-disable-next-line no-console
97
+ console.error(`- ${warning}`);
98
+ }
99
+ // eslint-disable-next-line no-console
100
+ console.error("");
101
+ }
102
+ projectContextBlock = buildProjectContextBlock({
103
+ cwd: runtimeCwd,
104
+ home,
105
+ agentsFiles: agentsContext.files,
106
+ readFile: (path) => readFileSync(path, "utf-8"),
107
+ });
108
+ }
109
+ const runtime = ChatRuntime.create({
110
+ persona: options.persona,
111
+ riskLevel: options.riskLevel,
112
+ toolRegistry: ToolCatalog.createRegistry(sandboxBackend?.backend ?? createLocalToolExecutionBackend()),
113
+ promptContext: {
114
+ cwd: resolveAgentCwd({
115
+ cwd: runtimeCwd,
116
+ sandboxEnabled: options.cli.sandbox,
117
+ sandboxConfig: options.config.sandbox,
118
+ }),
119
+ projectContextBlock,
120
+ sandboxEnabled: options.cli.sandbox,
121
+ sandboxEnvironmentInfo: options.config.sandbox?.environmentInfo,
122
+ skillsBlock: buildSkillsIndexBlock(getEnabledSkillsForPersona(options.persona, options.skills)),
123
+ },
124
+ environment: {
125
+ now: () => deps.clock.now(),
126
+ platform: () => deps.env.platform(),
127
+ nodeVersion: () => deps.env.nodeVersion(),
128
+ },
129
+ config: options.config,
130
+ deps,
131
+ });
132
+ for (const message of options.history ?? []) {
133
+ runtime.session.addMessage(message);
134
+ }
135
+ const abortController = new AbortController();
136
+ const requestShutdown = () => {
137
+ if (!abortController.signal.aborted) {
138
+ abortController.abort();
139
+ }
140
+ };
141
+ const onSigInt = () => requestShutdown();
142
+ const onSigTerm = () => requestShutdown();
143
+ process.on("SIGINT", onSigInt);
144
+ process.on("SIGTERM", onSigTerm);
145
+ try {
146
+ await runRpcServer({
147
+ runtime,
148
+ input: process.stdin,
149
+ output: process.stdout,
150
+ signal: abortController.signal,
151
+ });
152
+ }
153
+ finally {
154
+ process.off("SIGINT", onSigInt);
155
+ process.off("SIGTERM", onSigTerm);
156
+ }
157
+ }
158
+ finally {
159
+ await sandboxBackend?.dispose?.();
160
+ }
161
+ }
53
162
  // Load built-in and user content
54
163
  let personas;
55
164
  let prompts;
@@ -201,9 +310,10 @@ catch (err) {
201
310
  skills = virtualBundle.skills;
202
311
  themes = virtualBundle.themes;
203
312
  }
313
+ const cliArgv = isRpcSubcommand ? argv.slice(1) : argv;
204
314
  let cli;
205
315
  try {
206
- cli = parseCliArgs(process.argv.slice(2), personas);
316
+ cli = parseCliArgs(cliArgv, personas);
207
317
  }
208
318
  catch (err) {
209
319
  if (err instanceof CliError) {
@@ -220,6 +330,11 @@ if (cli.help) {
220
330
  printHelp(personas);
221
331
  process.exit(0);
222
332
  }
333
+ if (isRpcSubcommand && cli.caffeinated) {
334
+ // eslint-disable-next-line no-console
335
+ console.error("--caffeinated is only supported in TUI mode.");
336
+ process.exit(1);
337
+ }
223
338
  let checkpointPersonaId;
224
339
  let checkpointReasoning;
225
340
  let checkpointRiskLevel;
@@ -313,6 +428,25 @@ const initialPersona = initialPersonaId
313
428
  if (reasoningOverride !== undefined) {
314
429
  initialPersona.settings.reasoning = reasoningOverride;
315
430
  }
431
+ const effectiveRiskLevel = initialRiskLevel ?? "read-only";
432
+ if (isRpcSubcommand) {
433
+ try {
434
+ await runRpcMode({
435
+ cli,
436
+ config,
437
+ persona: initialPersona,
438
+ riskLevel: effectiveRiskLevel,
439
+ skills,
440
+ history: checkpointHistory,
441
+ });
442
+ process.exit(0);
443
+ }
444
+ catch (err) {
445
+ // eslint-disable-next-line no-console
446
+ console.error(err.message);
447
+ process.exit(1);
448
+ }
449
+ }
316
450
  const initialUserMessage = await readPipedStdin();
317
451
  const sandboxBackend = cli.sandbox ? await createSandboxBackend(config) : undefined;
318
452
  const terminalAppearance = await detectTerminalAppearance();
@@ -325,11 +459,12 @@ const app = new ChatApp({
325
459
  terminalAppearance,
326
460
  initialPersonaId,
327
461
  initialUserMessage,
328
- initialRiskLevel,
462
+ initialRiskLevel: effectiveRiskLevel,
329
463
  initialHistory: checkpointHistory,
330
464
  noAgentContextFiles: cli.noAgentContextFiles,
331
465
  config,
332
466
  sandboxEnabled: cli.sandbox,
467
+ caffeinated: cli.caffeinated,
333
468
  toolBackend: sandboxBackend?.backend,
334
469
  toolBackendDispose: sandboxBackend?.dispose,
335
470
  });
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { TauSdkClient, TauSdkClientOptions } from "./types.js";
2
+ export declare function createTauSdkClient(options?: TauSdkClientOptions): Promise<TauSdkClient>;
@@ -0,0 +1,409 @@
1
+ import { spawn as spawnProcess } from "node:child_process";
2
+ import { fileURLToPath } from "node:url";
3
+ import { RPC_ERROR_CODES, RPC_PROTOCOL_VERSION, } from "../core/modes/rpc_protocol.js";
4
+ import { TauProcessError, TauRpcResponseError, TauTransportError } from "./errors.js";
5
+ const DEFAULT_CONNECT_TIMEOUT_MS = 5_000;
6
+ const DEFAULT_CLOSE_TIMEOUT_MS = 2_000;
7
+ const DEFAULT_MAIN_SCRIPT_PATH = fileURLToPath(new URL("../main.js", import.meta.url));
8
+ class TauSdkClientImpl {
9
+ process;
10
+ eventListeners = new Set();
11
+ pendingRequests = new Map();
12
+ readyDeferred = createDeferred();
13
+ exitDeferred = createDeferred();
14
+ closeTimeoutMs;
15
+ readyValue;
16
+ stdoutBuffer = "";
17
+ stderrBuffer = "";
18
+ nextRequestId = 1;
19
+ closePromise;
20
+ shutdownPromise;
21
+ isClosed = false;
22
+ isExited = false;
23
+ fatalError;
24
+ constructor(process) {
25
+ this.process = process;
26
+ this.closeTimeoutMs = DEFAULT_CLOSE_TIMEOUT_MS;
27
+ this.process.stdout.setEncoding("utf8");
28
+ this.process.stderr.setEncoding("utf8");
29
+ this.process.stdout.on("data", this.handleStdoutData);
30
+ this.process.stderr.on("data", this.handleStderrData);
31
+ this.process.on("error", this.handleProcessError);
32
+ this.process.on("exit", this.handleProcessExit);
33
+ this.process.on("close", this.handleProcessClose);
34
+ }
35
+ get ready() {
36
+ if (!this.readyValue) {
37
+ throw new TauTransportError("tau sdk client is not connected");
38
+ }
39
+ return this.readyValue;
40
+ }
41
+ async connect(initializeParams, timeoutMs) {
42
+ const ready = await withTimeout(this.readyDeferred.promise, timeoutMs, new TauTransportError(`timed out waiting for rpc ready message after ${timeoutMs}ms`));
43
+ this.readyValue = ready;
44
+ await this.request("initialize", initializeParams);
45
+ }
46
+ onEvent(listener) {
47
+ this.eventListeners.add(listener);
48
+ return () => {
49
+ this.eventListeners.delete(listener);
50
+ };
51
+ }
52
+ submit(text, options = {}) {
53
+ return this.request("session.submit", {
54
+ text,
55
+ ...(options.historyEntryId === undefined ? {} : { historyEntryId: options.historyEntryId }),
56
+ });
57
+ }
58
+ interrupt() {
59
+ return this.request("session.interrupt", {});
60
+ }
61
+ snapshot() {
62
+ return this.request("session.snapshot", {});
63
+ }
64
+ reset() {
65
+ return this.request("session.reset", {});
66
+ }
67
+ async shutdown() {
68
+ if (this.shutdownPromise) {
69
+ return this.shutdownPromise;
70
+ }
71
+ if (this.isClosed) {
72
+ this.shutdownPromise = Promise.resolve({ shutdown: true });
73
+ return this.shutdownPromise;
74
+ }
75
+ this.shutdownPromise = (async () => {
76
+ try {
77
+ return await this.request("session.shutdown", {});
78
+ }
79
+ finally {
80
+ await this.close();
81
+ }
82
+ })();
83
+ return this.shutdownPromise;
84
+ }
85
+ async close() {
86
+ if (this.closePromise) {
87
+ return this.closePromise;
88
+ }
89
+ this.isClosed = true;
90
+ const closeError = new TauTransportError("tau sdk client was closed");
91
+ this.failPendingRequests(closeError);
92
+ this.rejectReadyIfPending(closeError);
93
+ this.eventListeners.clear();
94
+ this.process.stdout.off("data", this.handleStdoutData);
95
+ this.process.stderr.off("data", this.handleStderrData);
96
+ this.closePromise = (async () => {
97
+ if (!this.isExited) {
98
+ try {
99
+ this.process.stdin.end();
100
+ }
101
+ catch {
102
+ // ignore transport shutdown errors
103
+ }
104
+ try {
105
+ this.process.kill("SIGTERM");
106
+ }
107
+ catch {
108
+ // ignore transport shutdown errors
109
+ }
110
+ await Promise.race([
111
+ this.exitDeferred.promise,
112
+ delay(this.closeTimeoutMs).then(() => {
113
+ if (!this.isExited) {
114
+ try {
115
+ this.process.kill("SIGKILL");
116
+ }
117
+ catch {
118
+ // ignore
119
+ }
120
+ }
121
+ }),
122
+ ]);
123
+ }
124
+ this.process.off("error", this.handleProcessError);
125
+ this.process.off("exit", this.handleProcessExit);
126
+ this.process.off("close", this.handleProcessClose);
127
+ })();
128
+ return this.closePromise;
129
+ }
130
+ request(method, params) {
131
+ if (this.isClosed) {
132
+ return Promise.reject(new TauTransportError("tau sdk client is closed"));
133
+ }
134
+ if (this.fatalError) {
135
+ return Promise.reject(this.fatalError);
136
+ }
137
+ const requestId = this.nextRequestId++;
138
+ const payload = JSON.stringify({
139
+ version: RPC_PROTOCOL_VERSION,
140
+ type: "request",
141
+ id: requestId,
142
+ method,
143
+ params,
144
+ });
145
+ return new Promise((resolve, reject) => {
146
+ const pending = {
147
+ method,
148
+ requestId,
149
+ resolve: resolve,
150
+ reject,
151
+ };
152
+ this.pendingRequests.set(requestId, pending);
153
+ try {
154
+ this.process.stdin.write(`${payload}\n`, "utf8", (error) => {
155
+ if (!error) {
156
+ return;
157
+ }
158
+ if (this.pendingRequests.get(requestId) !== pending) {
159
+ return;
160
+ }
161
+ this.pendingRequests.delete(requestId);
162
+ reject(new TauTransportError("failed to write request to tau rpc process", { cause: error }));
163
+ });
164
+ }
165
+ catch (error) {
166
+ this.pendingRequests.delete(requestId);
167
+ reject(new TauTransportError("failed to write request to tau rpc process", { cause: error }));
168
+ }
169
+ });
170
+ }
171
+ handleStdoutData = (chunk) => {
172
+ this.stdoutBuffer += chunk.toString();
173
+ while (true) {
174
+ const nextLineIndex = this.stdoutBuffer.indexOf("\n");
175
+ if (nextLineIndex === -1) {
176
+ break;
177
+ }
178
+ const line = this.stdoutBuffer.slice(0, nextLineIndex).trim();
179
+ this.stdoutBuffer = this.stdoutBuffer.slice(nextLineIndex + 1);
180
+ if (!line) {
181
+ continue;
182
+ }
183
+ this.handleRpcLine(line);
184
+ }
185
+ };
186
+ handleStderrData = (chunk) => {
187
+ this.stderrBuffer += chunk.toString();
188
+ };
189
+ handleProcessError = (error) => {
190
+ this.failTransport(new TauProcessError("tau rpc process transport failure", {
191
+ stderr: this.stderrBuffer,
192
+ cause: error,
193
+ }));
194
+ };
195
+ handleProcessExit = (code, signal) => {
196
+ this.onProcessTerminated({ code, signal });
197
+ };
198
+ handleProcessClose = (code, signal) => {
199
+ this.onProcessTerminated({ code, signal });
200
+ };
201
+ onProcessTerminated(exit) {
202
+ if (!this.isExited) {
203
+ this.isExited = true;
204
+ this.exitDeferred.resolve(exit);
205
+ }
206
+ if (this.isClosed) {
207
+ return;
208
+ }
209
+ this.isClosed = true;
210
+ const message = [
211
+ "tau rpc process exited unexpectedly",
212
+ `code=${exit.code ?? "null"}`,
213
+ `signal=${exit.signal ?? "null"}`,
214
+ ].join(" ");
215
+ this.failTransport(new TauProcessError(message, {
216
+ exitCode: exit.code,
217
+ signal: exit.signal,
218
+ stderr: this.stderrBuffer,
219
+ }));
220
+ }
221
+ handleRpcLine(line) {
222
+ let message;
223
+ try {
224
+ message = JSON.parse(line);
225
+ }
226
+ catch (error) {
227
+ this.failTransport(new TauTransportError("received malformed JSON from tau rpc process", { cause: error }));
228
+ return;
229
+ }
230
+ if (!isRecord(message)) {
231
+ this.failTransport(new TauTransportError("received non-object rpc payload from tau process"));
232
+ return;
233
+ }
234
+ if (message.version !== RPC_PROTOCOL_VERSION) {
235
+ this.failTransport(new TauTransportError(`received unsupported rpc version from tau process: ${String(message.version)}`));
236
+ return;
237
+ }
238
+ if (message.type === "ready") {
239
+ if (typeof message.sessionId !== "string") {
240
+ this.failTransport(new TauTransportError("received invalid ready payload from tau process"));
241
+ return;
242
+ }
243
+ if (!Array.isArray(message.methods)) {
244
+ this.failTransport(new TauTransportError("received invalid ready payload from tau process"));
245
+ return;
246
+ }
247
+ if (!this.readyValue) {
248
+ const readyMessage = message;
249
+ this.readyValue = readyMessage;
250
+ this.readyDeferred.resolve(readyMessage);
251
+ }
252
+ return;
253
+ }
254
+ if (message.type === "event") {
255
+ if (!isRecord(message.event)) {
256
+ this.failTransport(new TauTransportError("received invalid event payload from tau process"));
257
+ return;
258
+ }
259
+ const event = message;
260
+ for (const listener of [...this.eventListeners]) {
261
+ try {
262
+ listener(event);
263
+ }
264
+ catch {
265
+ // ignore listener errors so transport handling can continue
266
+ }
267
+ }
268
+ return;
269
+ }
270
+ if (message.type === "response") {
271
+ this.handleResponse(message);
272
+ return;
273
+ }
274
+ this.failTransport(new TauTransportError(`received unsupported rpc message type: ${String(message.type)}`));
275
+ }
276
+ handleResponse(message) {
277
+ const requestId = parseRequestId(message.id);
278
+ if (!requestId.ok) {
279
+ this.failTransport(new TauTransportError("received response without a valid request id"));
280
+ return;
281
+ }
282
+ if (requestId.id === null) {
283
+ this.failTransport(new TauTransportError("received uncorrelated rpc error response"));
284
+ return;
285
+ }
286
+ const pending = this.pendingRequests.get(requestId.id);
287
+ if (!pending) {
288
+ return;
289
+ }
290
+ this.pendingRequests.delete(requestId.id);
291
+ if (message.ok === true) {
292
+ pending.resolve(message.result);
293
+ return;
294
+ }
295
+ if (!isRecord(message.error)) {
296
+ pending.reject(new TauTransportError("received malformed rpc error response"));
297
+ return;
298
+ }
299
+ const code = message.error.code;
300
+ const rpcMessage = message.error.message;
301
+ if (!isRpcErrorCode(code) || typeof rpcMessage !== "string") {
302
+ pending.reject(new TauTransportError("received malformed rpc error response"));
303
+ return;
304
+ }
305
+ pending.reject(new TauRpcResponseError({
306
+ requestId: requestId.id,
307
+ error: {
308
+ code,
309
+ message: rpcMessage,
310
+ ...("data" in message.error ? { data: message.error.data } : {}),
311
+ },
312
+ }));
313
+ }
314
+ failTransport(error) {
315
+ if (this.fatalError) {
316
+ return;
317
+ }
318
+ this.fatalError = error;
319
+ this.failPendingRequests(error);
320
+ this.rejectReadyIfPending(error);
321
+ }
322
+ rejectReadyIfPending(error) {
323
+ if (this.readyValue) {
324
+ return;
325
+ }
326
+ this.readyDeferred.reject(error);
327
+ }
328
+ failPendingRequests(error) {
329
+ for (const pending of this.pendingRequests.values()) {
330
+ pending.reject(error);
331
+ }
332
+ this.pendingRequests.clear();
333
+ }
334
+ }
335
+ export async function createTauSdkClient(options = {}) {
336
+ const spawn = options.spawn ?? spawnProcess;
337
+ const command = options.executable ?? process.execPath;
338
+ const args = buildProcessArgs(options);
339
+ const env = options.env ? { ...process.env, ...options.env } : process.env;
340
+ let childProcess;
341
+ try {
342
+ childProcess = spawn(command, args, {
343
+ cwd: options.cwd,
344
+ env,
345
+ stdio: "pipe",
346
+ });
347
+ }
348
+ catch (error) {
349
+ throw new TauProcessError("failed to spawn tau rpc process", { cause: error });
350
+ }
351
+ const client = new TauSdkClientImpl(childProcess);
352
+ try {
353
+ await client.connect(options.initialize ?? {}, options.connectTimeoutMs ?? DEFAULT_CONNECT_TIMEOUT_MS);
354
+ return client;
355
+ }
356
+ catch (error) {
357
+ await client.close();
358
+ throw error;
359
+ }
360
+ }
361
+ function buildProcessArgs(options) {
362
+ const scriptPath = options.scriptPath === undefined ? DEFAULT_MAIN_SCRIPT_PATH : options.scriptPath;
363
+ return [
364
+ ...(options.executableArgs ?? []),
365
+ ...(scriptPath ? [scriptPath] : []),
366
+ ...(options.scriptArgs ?? []),
367
+ "rpc",
368
+ ...(options.persona ? ["--persona", options.persona] : []),
369
+ ...(options.riskLevel ? ["--risk", options.riskLevel] : []),
370
+ ...(options.sandbox ? ["--sandbox"] : []),
371
+ ...(options.noAgentContextFiles ? ["--no-agent-context-files"] : []),
372
+ ...(options.rpcArgs ?? []),
373
+ ];
374
+ }
375
+ function createDeferred() {
376
+ let resolve;
377
+ let reject;
378
+ const promise = new Promise((res, rej) => {
379
+ resolve = res;
380
+ reject = rej;
381
+ });
382
+ return { promise, resolve, reject };
383
+ }
384
+ function withTimeout(promise, timeoutMs, timeoutError) {
385
+ const timeoutPromise = new Promise((_, reject) => {
386
+ const timeout = setTimeout(() => reject(timeoutError), timeoutMs);
387
+ timeout.unref?.();
388
+ });
389
+ return Promise.race([promise, timeoutPromise]);
390
+ }
391
+ function delay(timeoutMs) {
392
+ return new Promise((resolve) => {
393
+ const timeout = setTimeout(resolve, timeoutMs);
394
+ timeout.unref?.();
395
+ });
396
+ }
397
+ function parseRequestId(value) {
398
+ if (value === null || typeof value === "string" || typeof value === "number") {
399
+ return { ok: true, id: value };
400
+ }
401
+ return { ok: false };
402
+ }
403
+ function isRpcErrorCode(value) {
404
+ return typeof value === "string" && Object.values(RPC_ERROR_CODES).includes(value);
405
+ }
406
+ function isRecord(value) {
407
+ return typeof value === "object" && value !== null && !Array.isArray(value);
408
+ }
409
+ //# sourceMappingURL=client.js.map