@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,23 +1,35 @@
1
1
  import { runTauClientToolCommand } from "../sdk/client_tool_command.js";
2
+ import { truncateTauClientToolText } from "../sdk/client_tool_presentation.js";
2
3
  import { createTauCodeModeExecutionEnvironmentFiles, executeTauCodeMode, validateTauCodeModeDefinition, } from "./runtime.js";
3
4
  export async function runTauCodeModeCommand(definition) {
4
5
  validateTauCodeModeDefinition(definition);
5
- await runTauClientToolCommand(async (args, context) => {
6
- const code = parseCodeArguments(args);
7
- return await executeTauCodeMode({
8
- ...definition,
9
- code,
10
- signal: context.signal,
11
- invocation: {
12
- sessionId: context.sessionId,
13
- agentId: context.agentId,
14
- callId: context.callId,
15
- },
16
- executionEnvironment: context.executionEnvironment,
17
- files: createTauCodeModeExecutionEnvironmentFiles(context.agentId, context.executionEnvironment),
18
- });
6
+ await runTauClientToolCommand({
7
+ name: definition.name,
8
+ describe: (args) => createCodeModePresentation(parseCodeArguments(args)),
9
+ execute: async (args, context) => {
10
+ const code = parseCodeArguments(args);
11
+ const result = await executeTauCodeMode({
12
+ ...definition,
13
+ code,
14
+ signal: context.signal,
15
+ invocation: {
16
+ sessionId: context.sessionId,
17
+ agentId: context.agentId,
18
+ callId: context.callId,
19
+ },
20
+ executionEnvironment: context.executionEnvironment,
21
+ files: createTauCodeModeExecutionEnvironmentFiles(context.agentId, context.executionEnvironment),
22
+ });
23
+ return { ...result, presentation: createCodeModePresentation(code) };
24
+ },
19
25
  });
20
26
  }
27
+ function createCodeModePresentation(code) {
28
+ return {
29
+ subject: truncateTauClientToolText(code),
30
+ subjectWrap: "character",
31
+ };
32
+ }
21
33
  function parseCodeArguments(value) {
22
34
  if (typeof value !== "object" || value === null) {
23
35
  throw new Error("code-mode command arguments must be an object");
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/code_mode/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EACL,0CAA0C,EAC1C,kBAAkB,EAElB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAiC;IAC3E,6BAA6B,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,MAAM,kBAAkB,CAAC;YAC9B,GAAG,UAAU;YACb,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE;gBACV,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB;YACD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,KAAK,EAAE,0CAA0C,CAC/C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,oBAAoB,CAC7B;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,KAAgC,CAAC;IAC9C,IACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,EAC/C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/code_mode/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EACL,0CAA0C,EAC1C,kBAAkB,EAElB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAiC;IAC3E,6BAA6B,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,uBAAuB,CAAC;QAC5B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;gBACtC,GAAG,UAAU;gBACb,IAAI;gBACJ,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE;oBACV,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;gBACD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;gBAClD,KAAK,EAAE,0CAA0C,CAC/C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,oBAAoB,CAC7B;aACF,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,OAAO;QACL,OAAO,EAAE,yBAAyB,CAAC,IAAI,CAAC;QACxC,WAAW,EAAE,WAAoB;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,KAAgC,CAAC;IAC9C,IACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,EAC/C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
@@ -1,4 +1,5 @@
1
- export { runTauClientToolCommand, TAU_CLIENT_TOOL_COMMAND_PROTOCOL_VERSION, type TauClientToolCommandHandler, } from "../sdk/client_tool_command.js";
1
+ export { runTauClientToolCommand, TAU_CLIENT_TOOL_COMMAND_PROTOCOL_VERSION, type TauClientToolCommandDefinition, type TauClientToolCommandHandler, type TauClientToolCommandPresentation, } from "../sdk/client_tool_command.js";
2
+ export { type TauClientToolPresentation, type TauClientToolTextTruncationOptions, truncateTauClientToolText, } from "../sdk/client_tool_presentation.js";
2
3
  export { runTauCodeModeCommand } from "./command.js";
3
4
  export type { TauCodeModeFileAdapter, TauCodeModeFileAdapterResult, TauCodeModeFileList, TauCodeModeFileMetadata, TauCodeModeFilesOptions, } from "./files.js";
4
5
  export { TAU_CODE_MODE_MAX_FILES, TAU_CODE_MODE_MAX_TOTAL_FILE_BYTES, } from "./files.js";
@@ -1,4 +1,5 @@
1
1
  export { runTauClientToolCommand, TAU_CLIENT_TOOL_COMMAND_PROTOCOL_VERSION, } from "../sdk/client_tool_command.js";
2
+ export { truncateTauClientToolText, } from "../sdk/client_tool_presentation.js";
2
3
  export { runTauCodeModeCommand } from "./command.js";
3
4
  export { TAU_CODE_MODE_MAX_FILES, TAU_CODE_MODE_MAX_TOTAL_FILE_BYTES, } from "./files.js";
4
5
  export { buildTauCodeModeToolDescription, executeTauCodeMode, TAU_CODE_MODE_DEFAULT_TIMEOUT_MS, TAU_CODE_MODE_MAX_OUTPUT_TOKENS, } from "./runtime.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/code_mode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,wCAAwC,GAEzC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAQrD,OAAO,EACL,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,YAAY,CAAC;AAcpB,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/code_mode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,wCAAwC,GAIzC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAQrD,OAAO,EACL,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,YAAY,CAAC;AAcpB,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,cAAc,CAAC"}
package/dist/core/cli.js CHANGED
@@ -60,7 +60,6 @@ export function parseCliArgs(argv) {
60
60
  let debug = false;
61
61
  let personaId;
62
62
  let reasoningOverride;
63
- let caffeinated = false;
64
63
  let noAgentContextFiles = false;
65
64
  let noClientTools = false;
66
65
  for (let i = 0; i < argv.length; i++) {
@@ -81,10 +80,6 @@ export function parseCliArgs(argv) {
81
80
  noClientTools = true;
82
81
  continue;
83
82
  }
84
- if (arg === "--caffeinated") {
85
- caffeinated = true;
86
- continue;
87
- }
88
83
  if (arg === "--persona" ||
89
84
  arg === "-p" ||
90
85
  arg.startsWith("--persona=") ||
@@ -106,7 +101,6 @@ export function parseCliArgs(argv) {
106
101
  debug,
107
102
  personaId,
108
103
  reasoningOverride,
109
- caffeinated,
110
104
  noAgentContextFiles,
111
105
  noClientTools,
112
106
  };
@@ -119,10 +113,8 @@ export function printHelp(personas) {
119
113
  "",
120
114
  "usage:",
121
115
  " tau [options]",
122
- " tau rpc [options]",
123
116
  " tau serve [--host <host>] [--port <port>] [options]",
124
117
  " tau attach [--session <id> | --new --cwd <path> [execution options]] [--auth-token <token>] ws://host:port",
125
- " tau attach [--session <id> | --new --cwd <path> [execution options]] -- <command> [args...]",
126
118
  " tau auth <subcommand>",
127
119
  " tau usage [options]",
128
120
  " tau install [options]",
@@ -138,12 +130,10 @@ export function printHelp(personas) {
138
130
  ` --persona, -p <id>[:<level>] start with a persona. available: ${personaList}.`,
139
131
  ` optionally specify reasoning level. levels: ${reasoningList}.`,
140
132
  ` if not specified, uses resolved config defaultPersona.`,
141
- " --caffeinated keep macOS awake during active assistant turns in TUI mode (no-op on Linux).",
142
133
  " --no-agent-context-files disable AGENTS.md injection into the system prompt.",
143
134
  " --no-client-tools disable built-in and configured TUI client tools.",
144
135
  "",
145
136
  "subcommands:",
146
- " rpc run headless stdio RPC mode (no TUI).",
147
137
  " serve host Tau sessions over WebSocket.",
148
138
  " attach run the TUI against a session-protocol transport.",
149
139
  " auth authenticate and manage Codex OAuth accounts.",
@@ -175,7 +165,6 @@ export function printHelp(personas) {
175
165
  " you can switch persona during a session with /persona:<id>.",
176
166
  " insert prompt templates with /prompt:<id>.",
177
167
  " if stdin is piped, its contents are sent as the first message automatically in TUI mode.",
178
- " in RPC mode, stdin/stdout are reserved for protocol traffic.",
179
168
  " reasoning only affects providers that support it.",
180
169
  ].join("\n"));
181
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
@@ -1,170 +1,255 @@
1
1
  import { Check, Errors } from "typebox/value";
2
- import { createTauClientToolCommandExecResponse, createTauClientToolCommandInvoke, createTauClientToolCommandOutputDecoder, } from "../../sdk/client_tool_command.js";
2
+ import { createTauClientToolCommandExecResponse, createTauClientToolCommandExecute, createTauClientToolCommandOutputDecoder, createTauClientToolCommandPrepare, } from "../../sdk/client_tool_command.js";
3
3
  import { createDefaultCoreDeps } from "../runtime/deps.js";
4
4
  import { DEFAULT_COMMAND_CAPTURE_BYTES } from "../tools/execution_backend.js";
5
5
  const DEFAULT_EXECUTION_TIMEOUT_MS = 60_000;
6
6
  const COMMAND_KILL_GRACE_MS = 2_000;
7
7
  const MAX_ACTIVE_EXECUTIONS = 8;
8
8
  export function createCommandClientTools(configs, deps = createDefaultCoreDeps()) {
9
- return configs.map((config) => ({
10
- schema: {
11
- name: config.name,
12
- description: config.description,
13
- parameters: config.parameters,
14
- ...(config.executionTimeoutMs === undefined
15
- ? {}
16
- : { executionTimeoutMs: config.executionTimeoutMs }),
17
- },
18
- execute: async (args, context) => {
19
- if (!Check(config.parameters, args)) {
20
- const issue = Errors(config.parameters, args)[0];
21
- const detail = issue
22
- ? `${issue.instancePath || "arguments"} ${issue.message}`
23
- : "arguments are invalid";
24
- throw new Error(`Invalid arguments for command client tool '${config.name}': ${detail}.`);
25
- }
26
- const timeoutMs = config.executionTimeoutMs ?? DEFAULT_EXECUTION_TIMEOUT_MS;
27
- const protocolController = new AbortController();
28
- const signal = AbortSignal.any([context.signal, protocolController.signal]);
29
- const activeExecutions = new Map();
30
- const executionTasks = new Set();
31
- const seenRequestIds = new Set();
32
- const outputDecoder = createTauClientToolCommandOutputDecoder();
33
- let observedStdout = false;
34
- let finalContent;
35
- let protocolError;
36
- let writeQueue = Promise.resolve();
37
- let writeToCommand;
38
- const failProtocol = (error) => {
39
- if (protocolError)
40
- return;
41
- protocolError = error;
42
- for (const controller of activeExecutions.values())
43
- controller.abort(error);
44
- protocolController.abort(error);
45
- };
46
- const handleFrame = (frame) => {
47
- if (finalContent !== undefined) {
48
- failProtocol(new Error(`Command client tool '${config.name}' wrote data after its result.`));
49
- return;
50
- }
51
- if (frame.type === "result") {
52
- finalContent = frame.content;
53
- return;
54
- }
55
- if (frame.type === "exec.cancel") {
56
- activeExecutions.get(frame.requestId)?.abort();
57
- return;
58
- }
59
- if (seenRequestIds.has(frame.requestId)) {
60
- failProtocol(new Error(`Command client tool '${config.name}' reused execution request id '${frame.requestId}'.`));
61
- return;
9
+ return configs.map((config) => {
10
+ const preparedCalls = new Map();
11
+ return {
12
+ schema: {
13
+ name: config.name,
14
+ description: config.description,
15
+ parameters: config.parameters,
16
+ ...(config.executionTimeoutMs === undefined
17
+ ? {}
18
+ : { executionTimeoutMs: config.executionTimeoutMs }),
19
+ },
20
+ describe: async (args, context) => {
21
+ validateCommandClientToolArguments(config, args);
22
+ if (preparedCalls.has(context.callId)) {
23
+ throw new Error(`Command client tool '${config.name}' prepared the same call twice.`);
62
24
  }
63
- if (activeExecutions.size >= MAX_ACTIVE_EXECUTIONS) {
64
- failProtocol(new Error(`Command client tool '${config.name}' exceeded the ${MAX_ACTIVE_EXECUTIONS}-execution concurrency limit.`));
65
- return;
66
- }
67
- seenRequestIds.add(frame.requestId);
68
- const executionController = new AbortController();
69
- activeExecutions.set(frame.requestId, executionController);
70
- const task = executeCommandRequest(frame, context, executionController.signal)
71
- .then((result) => createTauClientToolCommandExecResponse({
72
- requestId: frame.requestId,
73
- result,
74
- }), (error) => createTauClientToolCommandExecResponse({
75
- requestId: frame.requestId,
76
- error: error instanceof Error ? error.message : String(error),
77
- }))
78
- .then(async (response) => {
79
- if (!protocolController.signal.aborted) {
80
- await writeToCommand?.(response);
81
- }
82
- })
83
- .catch((error) => failProtocol(error instanceof Error ? error : new Error(String(error))))
84
- .finally(() => {
85
- if (activeExecutions.get(frame.requestId) === executionController) {
86
- activeExecutions.delete(frame.requestId);
25
+ const prepared = prepareCommandClientToolCall(config, args, context, deps);
26
+ preparedCalls.set(context.callId, prepared);
27
+ void prepared.settled.finally(() => {
28
+ if (preparedCalls.get(context.callId) === prepared) {
29
+ preparedCalls.delete(context.callId);
87
30
  }
88
31
  });
89
- executionTasks.add(task);
90
- void task.finally(() => executionTasks.delete(task));
91
- };
92
- const consumeStdout = (chunk) => {
93
- if (protocolError)
94
- return;
95
- try {
96
- const frames = chunk === undefined ? outputDecoder.end() : outputDecoder.push(chunk);
97
- for (const frame of frames)
98
- handleFrame(frame);
32
+ return await prepared.presentation;
33
+ },
34
+ execute: async (_args, context) => {
35
+ const prepared = preparedCalls.get(context.callId);
36
+ if (!prepared) {
37
+ throw new Error(`Command client tool '${config.name}' was not prepared.`);
99
38
  }
100
- catch (error) {
101
- failProtocol(error instanceof Error ? error : new Error(String(error)));
102
- }
103
- };
104
- const result = await deps.spawn(config.command, config.args ?? [], {
105
- detached: true,
106
- signal,
107
- timeoutMs,
108
- maxCaptureBytes: DEFAULT_COMMAND_CAPTURE_BYTES,
109
- maxCaptureMode: "terminate",
110
- maxCaptureStrategy: "head",
111
- captureOutput: "stderr",
112
- killGraceMs: COMMAND_KILL_GRACE_MS,
113
- killProcessGroup: true,
114
- stdio: ["pipe", "pipe", "pipe"],
115
- keepStdinOpen: true,
116
- input: `${JSON.stringify(createTauClientToolCommandInvoke({
117
- sessionId: context.sessionId,
118
- agentId: context.agentId,
119
- callId: context.callId,
120
- arguments: args,
121
- }))}\n`,
122
- onSpawn: (child) => {
123
- observedStdout = true;
124
- writeToCommand = (frame) => {
125
- const write = writeQueue.then(async () => {
126
- if (!child.stdin) {
127
- throw new Error(`Command client tool '${config.name}' closed its protocol input.`);
128
- }
129
- await writeWithBackpressure(child.stdin, `${JSON.stringify(frame)}\n`);
130
- });
131
- writeQueue = write;
132
- return write;
133
- };
134
- child.stdout?.on("data", (chunk) => consumeStdout(chunk));
135
- },
136
- });
137
- for (const controller of activeExecutions.values())
138
- controller.abort();
139
- await Promise.allSettled(executionTasks);
140
- activeExecutions.clear();
141
- if (!observedStdout)
142
- consumeStdout(result.stdout);
143
- consumeStdout();
144
- if (protocolError)
145
- throw protocolError;
146
- if (result.aborted) {
147
- throw new Error(`Command client tool '${config.name}' was cancelled.`);
148
- }
149
- if (result.timedOut) {
150
- throw new Error(`Command client tool '${config.name}' timed out after ${timeoutMs}ms.`);
39
+ preparedCalls.delete(context.callId);
40
+ return await prepared.execute(context);
41
+ },
42
+ };
43
+ });
44
+ }
45
+ function validateCommandClientToolArguments(config, args) {
46
+ if (Check(config.parameters, args)) {
47
+ return;
48
+ }
49
+ const issue = Errors(config.parameters, args)[0];
50
+ const detail = issue
51
+ ? `${issue.instancePath || "arguments"} ${issue.message}`
52
+ : "arguments are invalid";
53
+ throw new Error(`Invalid arguments for command client tool '${config.name}': ${detail}.`);
54
+ }
55
+ function prepareCommandClientToolCall(config, args, context, deps) {
56
+ const timeoutMs = config.executionTimeoutMs ?? DEFAULT_EXECUTION_TIMEOUT_MS;
57
+ const protocolController = new AbortController();
58
+ const signal = AbortSignal.any([context.signal, protocolController.signal]);
59
+ const activeExecutions = new Map();
60
+ const executionTasks = new Set();
61
+ const seenRequestIds = new Set();
62
+ const outputDecoder = createTauClientToolCommandOutputDecoder();
63
+ let observedStdout = false;
64
+ let ready = false;
65
+ let executeSent = false;
66
+ let finalResult;
67
+ let protocolError;
68
+ let writeQueue = Promise.resolve();
69
+ let writeToCommand;
70
+ let executionContext;
71
+ let resolvePresentation = () => { };
72
+ let rejectPresentation = () => { };
73
+ const presentation = new Promise((resolve, reject) => {
74
+ resolvePresentation = resolve;
75
+ rejectPresentation = reject;
76
+ });
77
+ const failProtocol = (error) => {
78
+ if (protocolError)
79
+ return;
80
+ protocolError = error;
81
+ rejectPresentation(error);
82
+ for (const controller of activeExecutions.values())
83
+ controller.abort(error);
84
+ protocolController.abort(error);
85
+ };
86
+ const handleFrame = (frame) => {
87
+ if (finalResult !== undefined) {
88
+ failProtocol(new Error(`Command client tool '${config.name}' wrote data after its result.`));
89
+ return;
90
+ }
91
+ if (frame.type === "ready") {
92
+ if (ready) {
93
+ failProtocol(new Error(`Command client tool '${config.name}' returned more than one ready frame.`));
94
+ return;
151
95
  }
152
- if (result.captureLimitExceeded) {
153
- throw new Error(`Command client tool '${config.name}' exceeded the ${DEFAULT_COMMAND_CAPTURE_BYTES}-byte stderr limit.`);
96
+ ready = true;
97
+ resolvePresentation(frame.presentation);
98
+ return;
99
+ }
100
+ if (!ready) {
101
+ failProtocol(new Error(`Command client tool '${config.name}' wrote data before its ready frame.`));
102
+ return;
103
+ }
104
+ if (!executeSent || !executionContext) {
105
+ failProtocol(new Error(`Command client tool '${config.name}' wrote execution data before it was accepted.`));
106
+ return;
107
+ }
108
+ if (frame.type === "result") {
109
+ finalResult = frame;
110
+ return;
111
+ }
112
+ if (frame.type === "exec.cancel") {
113
+ activeExecutions.get(frame.requestId)?.abort();
114
+ return;
115
+ }
116
+ if (seenRequestIds.has(frame.requestId)) {
117
+ failProtocol(new Error(`Command client tool '${config.name}' reused execution request id '${frame.requestId}'.`));
118
+ return;
119
+ }
120
+ if (activeExecutions.size >= MAX_ACTIVE_EXECUTIONS) {
121
+ failProtocol(new Error(`Command client tool '${config.name}' exceeded the ${MAX_ACTIVE_EXECUTIONS}-execution concurrency limit.`));
122
+ return;
123
+ }
124
+ seenRequestIds.add(frame.requestId);
125
+ const executionController = new AbortController();
126
+ activeExecutions.set(frame.requestId, executionController);
127
+ const task = executeCommandRequest(frame, executionContext, executionController.signal)
128
+ .then((result) => createTauClientToolCommandExecResponse({ requestId: frame.requestId, result }), (error) => createTauClientToolCommandExecResponse({
129
+ requestId: frame.requestId,
130
+ error: error instanceof Error ? error.message : String(error),
131
+ }))
132
+ .then(async (response) => {
133
+ if (!protocolController.signal.aborted) {
134
+ await writeToCommand?.(response);
154
135
  }
155
- if (result.exitCode !== 0) {
156
- const detail = result.stderr.trim() || result.stdout.trim();
157
- const status = result.closeSignal
158
- ? `signal ${result.closeSignal}`
159
- : `exit code ${result.exitCode ?? "unknown"}`;
160
- throw new Error(`Command client tool '${config.name}' failed with ${status}${detail ? `: ${detail}` : "."}`);
136
+ })
137
+ .catch((error) => failProtocol(error instanceof Error ? error : new Error(String(error))))
138
+ .finally(() => {
139
+ if (activeExecutions.get(frame.requestId) === executionController) {
140
+ activeExecutions.delete(frame.requestId);
161
141
  }
162
- if (finalContent === undefined) {
163
- throw new Error(`Command client tool '${config.name}' returned no version-3 result frame.`);
142
+ });
143
+ executionTasks.add(task);
144
+ void task.finally(() => executionTasks.delete(task));
145
+ };
146
+ const consumeStdout = (chunk) => {
147
+ if (protocolError)
148
+ return;
149
+ try {
150
+ const frames = chunk === undefined ? outputDecoder.end() : outputDecoder.push(chunk);
151
+ for (const frame of frames)
152
+ handleFrame(frame);
153
+ }
154
+ catch (error) {
155
+ failProtocol(error instanceof Error ? error : new Error(String(error)));
156
+ }
157
+ };
158
+ const processResult = deps
159
+ .spawn(config.command, config.args ?? [], {
160
+ detached: true,
161
+ signal,
162
+ timeoutMs,
163
+ maxCaptureBytes: DEFAULT_COMMAND_CAPTURE_BYTES,
164
+ maxCaptureMode: "terminate",
165
+ maxCaptureStrategy: "head",
166
+ captureOutput: "stderr",
167
+ killGraceMs: COMMAND_KILL_GRACE_MS,
168
+ killProcessGroup: true,
169
+ stdio: ["pipe", "pipe", "pipe"],
170
+ keepStdinOpen: true,
171
+ input: `${JSON.stringify(createTauClientToolCommandPrepare({
172
+ sessionId: context.sessionId,
173
+ agentId: context.agentId,
174
+ callId: context.callId,
175
+ toolName: config.name,
176
+ arguments: args,
177
+ }))}\n`,
178
+ onSpawn: (child) => {
179
+ observedStdout = true;
180
+ writeToCommand = (frame) => {
181
+ const write = writeQueue.then(async () => {
182
+ if (!child.stdin) {
183
+ throw new Error(`Command client tool '${config.name}' closed its protocol input.`);
184
+ }
185
+ await writeWithBackpressure(child.stdin, `${JSON.stringify(frame)}\n`);
186
+ });
187
+ writeQueue = write;
188
+ return write;
189
+ };
190
+ child.stdout?.on("data", (chunk) => consumeStdout(chunk));
191
+ },
192
+ })
193
+ .then(async (result) => {
194
+ for (const controller of activeExecutions.values())
195
+ controller.abort();
196
+ await Promise.allSettled(executionTasks);
197
+ activeExecutions.clear();
198
+ if (!observedStdout)
199
+ consumeStdout(result.stdout);
200
+ consumeStdout();
201
+ if (protocolError)
202
+ throw protocolError;
203
+ if (result.aborted) {
204
+ throw new Error(`Command client tool '${config.name}' was cancelled.`);
205
+ }
206
+ if (result.timedOut) {
207
+ throw new Error(`Command client tool '${config.name}' timed out after ${timeoutMs}ms.`);
208
+ }
209
+ if (result.captureLimitExceeded) {
210
+ throw new Error(`Command client tool '${config.name}' exceeded the ${DEFAULT_COMMAND_CAPTURE_BYTES}-byte stderr limit.`);
211
+ }
212
+ if (result.exitCode !== 0) {
213
+ const detail = result.stderr.trim() || result.stdout.trim();
214
+ const status = result.closeSignal
215
+ ? `signal ${result.closeSignal}`
216
+ : `exit code ${result.exitCode ?? "unknown"}`;
217
+ throw new Error(`Command client tool '${config.name}' failed with ${status}${detail ? `: ${detail}` : "."}`);
218
+ }
219
+ if (!ready) {
220
+ throw new Error(`Command client tool '${config.name}' returned no version-4 ready frame.`);
221
+ }
222
+ if (finalResult === undefined) {
223
+ throw new Error(`Command client tool '${config.name}' returned no version-4 result frame.`);
224
+ }
225
+ return finalResult;
226
+ });
227
+ void processResult.catch((error) => rejectPresentation(error));
228
+ return {
229
+ presentation,
230
+ execute: async (context) => {
231
+ await presentation;
232
+ signal.throwIfAborted();
233
+ if (!writeToCommand) {
234
+ throw new Error(`Command client tool '${config.name}' did not start.`);
164
235
  }
165
- return { content: finalContent };
236
+ executionContext = context;
237
+ executeSent = true;
238
+ await writeToCommand(createTauClientToolCommandExecute());
239
+ const result = await processResult;
240
+ return result.ok
241
+ ? {
242
+ content: result.content,
243
+ ...(result.presentation === undefined ? {} : { presentation: result.presentation }),
244
+ }
245
+ : {
246
+ ok: false,
247
+ error: result.error,
248
+ ...(result.presentation === undefined ? {} : { presentation: result.presentation }),
249
+ };
166
250
  },
167
- }));
251
+ settled: processResult.then(() => undefined, () => undefined),
252
+ };
168
253
  }
169
254
  async function executeCommandRequest(frame, context, signal) {
170
255
  const { stdinBase64, ...options } = frame.options;
@@ -1 +1 @@
1
- {"version":3,"file":"command_client_tools.js","sourceRoot":"","sources":["../../../src/core/client_tools/command_client_tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command_client_tools.js","sourceRoot":"","sources":["../../../src/core/client_tools/command_client_tools.ts"],"names":[],"mappings":"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"}