@markusylisiurunen/tau 0.2.128 → 0.3.0

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 (232) hide show
  1. package/README.md +130 -75
  2. package/dist/core/async/cli.js +12 -2
  3. package/dist/core/async/cli.js.map +1 -1
  4. package/dist/core/async/http_protocol.js +7 -1
  5. package/dist/core/async/http_protocol.js.map +1 -1
  6. package/dist/core/async/http_server.js +9 -1
  7. package/dist/core/async/http_server.js.map +1 -1
  8. package/dist/core/async/index.js.map +1 -1
  9. package/dist/core/async/session_manager.js +94 -51
  10. package/dist/core/async/session_manager.js.map +1 -1
  11. package/dist/core/auth/auth_manager.js +0 -92
  12. package/dist/core/auth/auth_manager.js.map +1 -1
  13. package/dist/core/auth/credential_store.js +247 -0
  14. package/dist/core/auth/credential_store.js.map +1 -0
  15. package/dist/core/auth/index.js +0 -1
  16. package/dist/core/auth/index.js.map +1 -1
  17. package/dist/core/cli.js +12 -15
  18. package/dist/core/cli.js.map +1 -1
  19. package/dist/core/commands/registry.js +11 -55
  20. package/dist/core/commands/registry.js.map +1 -1
  21. package/dist/core/config/index.js.map +1 -1
  22. package/dist/core/config/runtime.js +0 -1
  23. package/dist/core/config/runtime.js.map +1 -1
  24. package/dist/core/config/schema.js +102 -17
  25. package/dist/core/config/schema.js.map +1 -1
  26. package/dist/core/debug.js +1 -20
  27. package/dist/core/debug.js.map +1 -1
  28. package/dist/core/diff_review/{session.js → bridge.js} +57 -114
  29. package/dist/core/diff_review/bridge.js.map +1 -0
  30. package/dist/core/diff_review/index.js +2 -3
  31. package/dist/core/diff_review/index.js.map +1 -1
  32. package/dist/core/diff_review/review_thread.js +48 -23
  33. package/dist/core/diff_review/review_thread.js.map +1 -1
  34. package/dist/core/diff_review/snapshot.js +40 -11
  35. package/dist/core/diff_review/snapshot.js.map +1 -1
  36. package/dist/core/events/parser.js +43 -12
  37. package/dist/core/events/parser.js.map +1 -1
  38. package/dist/core/index.js +1 -2
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/models/catalog.js +3 -3
  41. package/dist/core/models/catalog.js.map +1 -1
  42. package/dist/core/modes/index.js +1 -2
  43. package/dist/core/modes/index.js.map +1 -1
  44. package/dist/core/modes/rpc_server.js +15 -325
  45. package/dist/core/modes/rpc_server.js.map +1 -1
  46. package/dist/core/modes/websocket_server.js +181 -0
  47. package/dist/core/modes/websocket_server.js.map +1 -0
  48. package/dist/core/personas.js +11 -1
  49. package/dist/core/personas.js.map +1 -1
  50. package/dist/core/runtime/chat_runtime.js +19 -12
  51. package/dist/core/runtime/chat_runtime.js.map +1 -1
  52. package/dist/core/runtime/conversation_turn_runtime.js +16 -1
  53. package/dist/core/runtime/conversation_turn_runtime.js.map +1 -1
  54. package/dist/core/runtime/runtime_bootstrap.js +326 -0
  55. package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
  56. package/dist/core/runtime/steering.js +6 -0
  57. package/dist/core/runtime/steering.js.map +1 -0
  58. package/dist/core/session/compaction.js +225 -22
  59. package/dist/core/session/compaction.js.map +1 -1
  60. package/dist/core/session/core_session.js +9 -0
  61. package/dist/core/session/core_session.js.map +1 -1
  62. package/dist/core/session/direct_bash.js +34 -0
  63. package/dist/core/session/direct_bash.js.map +1 -0
  64. package/dist/core/session/pruning.js +595 -0
  65. package/dist/core/session/pruning.js.map +1 -0
  66. package/dist/core/session/runner.js +47 -8
  67. package/dist/core/session/runner.js.map +1 -1
  68. package/dist/core/session/session_engine.js +128 -55
  69. package/dist/core/session/session_engine.js.map +1 -1
  70. package/dist/core/static/prompts/diff-review-wrapper.md +1 -1
  71. package/dist/core/subagents/subagent_engine.js +19 -27
  72. package/dist/core/subagents/subagent_engine.js.map +1 -1
  73. package/dist/core/tools/catalog.js.map +1 -1
  74. package/dist/core/tools/diff_review.js +12 -12
  75. package/dist/core/tools/diff_review.js.map +1 -1
  76. package/dist/core/tools/execution_backend.js +9 -2
  77. package/dist/core/tools/execution_backend.js.map +1 -1
  78. package/dist/core/tools/registry.js.map +1 -1
  79. package/dist/core/usage/logs.js.map +1 -1
  80. package/dist/core/utils/compact.js +3 -1
  81. package/dist/core/utils/compact.js.map +1 -1
  82. package/dist/core/utils/context.js +1 -1
  83. package/dist/core/utils/context.js.map +1 -1
  84. package/dist/core/utils/context_builder.js +1 -18
  85. package/dist/core/utils/context_builder.js.map +1 -1
  86. package/dist/core/utils/gemini_speech.js +1 -1
  87. package/dist/core/utils/gemini_speech.js.map +1 -1
  88. package/dist/core/utils/model_stream.js +105 -14
  89. package/dist/core/utils/model_stream.js.map +1 -1
  90. package/dist/core/utils/project_files.js +11 -16
  91. package/dist/core/utils/project_files.js.map +1 -1
  92. package/dist/core/utils/spawn_capture.js +2 -2
  93. package/dist/core/utils/spawn_capture.js.map +1 -1
  94. package/dist/core/utils/user_metadata.js +35 -2
  95. package/dist/core/utils/user_metadata.js.map +1 -1
  96. package/dist/core/version.js +1 -1
  97. package/dist/core/version.js.map +1 -1
  98. package/dist/diff_tool/app/dist/assets/{index-jn1I_CPZ.js → index-ivRn2dP2.js} +34 -34
  99. package/dist/diff_tool/app/dist/index.html +1 -1
  100. package/dist/execution/cloudflare_sandbox_execution_environment.js +400 -0
  101. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -0
  102. package/dist/execution/execution_environment.js +24 -0
  103. package/dist/execution/execution_environment.js.map +1 -0
  104. package/dist/execution/fly_sprite_execution_environment.js +559 -0
  105. package/dist/execution/fly_sprite_execution_environment.js.map +1 -0
  106. package/dist/execution/local_execution_environment.js +93 -0
  107. package/dist/execution/local_execution_environment.js.map +1 -0
  108. package/dist/execution/runtime_config_snapshot.js +209 -0
  109. package/dist/execution/runtime_config_snapshot.js.map +1 -0
  110. package/dist/execution/sandbox_tool_helpers.js +55 -0
  111. package/dist/execution/sandbox_tool_helpers.js.map +1 -0
  112. package/dist/execution/tool_backend_execution_environment.js +55 -0
  113. package/dist/execution/tool_backend_execution_environment.js.map +1 -0
  114. package/dist/host/hosted_ephemeral_agent_session.js +286 -0
  115. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -0
  116. package/dist/host/index.js +3 -0
  117. package/dist/host/index.js.map +1 -0
  118. package/dist/host/local_session_host.js +1464 -0
  119. package/dist/host/local_session_host.js.map +1 -0
  120. package/dist/host/session_host.js +2 -0
  121. package/dist/host/session_host.js.map +1 -0
  122. package/dist/host/session_protocol_handler.js +873 -0
  123. package/dist/host/session_protocol_handler.js.map +1 -0
  124. package/dist/main.js +537 -77
  125. package/dist/main.js.map +1 -1
  126. package/dist/protocol/index.d.ts +2 -0
  127. package/dist/protocol/index.js +2 -0
  128. package/dist/protocol/index.js.map +1 -0
  129. package/dist/protocol/session_protocol.d.ts +691 -0
  130. package/dist/protocol/session_protocol.js +2117 -0
  131. package/dist/protocol/session_protocol.js.map +1 -0
  132. package/dist/sdk/client.d.ts +2 -1
  133. package/dist/sdk/client.js +136 -392
  134. package/dist/sdk/client.js.map +1 -1
  135. package/dist/sdk/index.d.ts +7 -4
  136. package/dist/sdk/index.js +4 -2
  137. package/dist/sdk/index.js.map +1 -1
  138. package/dist/sdk/session.d.ts +5 -0
  139. package/dist/sdk/session.js +406 -0
  140. package/dist/sdk/session.js.map +1 -0
  141. package/dist/sdk/types.d.ts +97 -78
  142. package/dist/store/file_session_store.js +157 -0
  143. package/dist/store/file_session_store.js.map +1 -0
  144. package/dist/store/memory_session_store.js +24 -0
  145. package/dist/store/memory_session_store.js.map +1 -0
  146. package/dist/store/session_store.js +32 -0
  147. package/dist/store/session_store.js.map +1 -0
  148. package/dist/transport/errors.d.ts +29 -0
  149. package/dist/{sdk → transport}/errors.js +5 -5
  150. package/dist/transport/errors.js.map +1 -0
  151. package/dist/transport/in_process_session_transport.js +102 -0
  152. package/dist/transport/in_process_session_transport.js.map +1 -0
  153. package/dist/transport/index.d.ts +7 -0
  154. package/dist/transport/index.js +4 -0
  155. package/dist/transport/index.js.map +1 -0
  156. package/dist/transport/pending_session_protocol_requests.js +67 -0
  157. package/dist/transport/pending_session_protocol_requests.js.map +1 -0
  158. package/dist/transport/session_protocol_transport_helpers.js +98 -0
  159. package/dist/transport/session_protocol_transport_helpers.js.map +1 -0
  160. package/dist/transport/session_transport.d.ts +11 -0
  161. package/dist/transport/session_transport.js +2 -0
  162. package/dist/transport/session_transport.js.map +1 -0
  163. package/dist/transport/stdio_session_transport.d.ts +38 -0
  164. package/dist/transport/stdio_session_transport.js +243 -0
  165. package/dist/transport/stdio_session_transport.js.map +1 -0
  166. package/dist/transport/websocket_session_transport.d.ts +52 -0
  167. package/dist/transport/websocket_session_transport.js +235 -0
  168. package/dist/transport/websocket_session_transport.js.map +1 -0
  169. package/dist/tui/chat_controller/assistant_clipboard.js +39 -0
  170. package/dist/tui/chat_controller/assistant_clipboard.js.map +1 -0
  171. package/dist/tui/chat_controller/command_hints.js +43 -0
  172. package/dist/tui/chat_controller/command_hints.js.map +1 -0
  173. package/dist/tui/chat_controller/diff_review_service.js +9 -9
  174. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  175. package/dist/tui/chat_controller/diff_review_user_message.js +17 -0
  176. package/dist/tui/chat_controller/diff_review_user_message.js.map +1 -0
  177. package/dist/tui/chat_controller/history_labels.js +8 -0
  178. package/dist/tui/chat_controller/history_labels.js.map +1 -0
  179. package/dist/tui/chat_controller/history_message_model.js +36 -0
  180. package/dist/tui/chat_controller/history_message_model.js.map +1 -0
  181. package/dist/tui/chat_controller/queued_user_messages.js +18 -1
  182. package/dist/tui/chat_controller/queued_user_messages.js.map +1 -1
  183. package/dist/tui/chat_controller/status_format.js +22 -0
  184. package/dist/tui/chat_controller/status_format.js.map +1 -0
  185. package/dist/tui/chat_view.js +3 -1
  186. package/dist/tui/chat_view.js.map +1 -1
  187. package/dist/tui/index.js +1 -1
  188. package/dist/tui/index.js.map +1 -1
  189. package/dist/tui/listen_capture.js +87 -0
  190. package/dist/tui/listen_capture.js.map +1 -0
  191. package/dist/tui/memory_mode.js +23 -0
  192. package/dist/tui/memory_mode.js.map +1 -0
  193. package/dist/tui/session_chat_app.js +227 -0
  194. package/dist/tui/session_chat_app.js.map +1 -0
  195. package/dist/tui/session_chat_controller.js +2167 -0
  196. package/dist/tui/session_chat_controller.js.map +1 -0
  197. package/dist/tui/session_tool_execution_backend.js +170 -0
  198. package/dist/tui/session_tool_execution_backend.js.map +1 -0
  199. package/dist/tui/speech_playback.js +107 -0
  200. package/dist/tui/speech_playback.js.map +1 -0
  201. package/dist/tui/ui/assistant_message.js +27 -21
  202. package/dist/tui/ui/assistant_message.js.map +1 -1
  203. package/dist/tui/ui/components/editor.js +17 -13
  204. package/dist/tui/ui/components/editor.js.map +1 -1
  205. package/dist/tui/ui/custom_editor.js +25 -5
  206. package/dist/tui/ui/custom_editor.js.map +1 -1
  207. package/dist/tui/ui/queued_messages.js +1 -1
  208. package/dist/tui/ui/queued_messages.js.map +1 -1
  209. package/dist/tui/ui/slash_autocomplete.js +14 -36
  210. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  211. package/dist/tui/ui/tool_ui_registry.js +21 -0
  212. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  213. package/package.json +14 -11
  214. package/dist/core/auth/credential_resolver.js +0 -36
  215. package/dist/core/auth/credential_resolver.js.map +0 -1
  216. package/dist/core/config/bash_commands.js +0 -44
  217. package/dist/core/config/bash_commands.js.map +0 -1
  218. package/dist/core/diff_review/session.js.map +0 -1
  219. package/dist/core/modes/rpc_adapter.js +0 -17
  220. package/dist/core/modes/rpc_adapter.js.map +0 -1
  221. package/dist/core/modes/rpc_protocol.js +0 -500
  222. package/dist/core/modes/rpc_protocol.js.map +0 -1
  223. package/dist/core/session/checkpoint.js +0 -34
  224. package/dist/core/session/checkpoint.js.map +0 -1
  225. package/dist/sdk/errors.d.ts +0 -33
  226. package/dist/sdk/errors.js.map +0 -1
  227. package/dist/tui/app.js +0 -64
  228. package/dist/tui/app.js.map +0 -1
  229. package/dist/tui/chat_controller/session_maintenance_service.js +0 -634
  230. package/dist/tui/chat_controller/session_maintenance_service.js.map +0 -1
  231. package/dist/tui/chat_controller.js +0 -2532
  232. package/dist/tui/chat_controller.js.map +0 -1
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>Tau diff tool</title>
7
- <script type="module" crossorigin src="/assets/index-jn1I_CPZ.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-ivRn2dP2.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-2iDVL7Tb.css">
9
9
  </head>
10
10
  <body>
@@ -0,0 +1,400 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { dirname } from "node:path/posix";
3
+ import { assertFileWithinMaxBytes, buildSandboxGrepDryRunResult, buildSandboxGrepErrorResult, buildWriteFileResult, NODE_LIST_DIR_SCRIPT, resolveSandboxGrepPaths, shellQuote, } from "./sandbox_tool_helpers.js";
4
+ import { ToolBackendExecutionEnvironment } from "./tool_backend_execution_environment.js";
5
+ const BASH_MAX_CAPTURE_BYTES = 1024 * 1024;
6
+ const DEFAULT_HOME = "/home/sandbox";
7
+ export class CloudflareSandboxExecutionEnvironment extends ToolBackendExecutionEnvironment {
8
+ kind = "cloudflare-sandbox";
9
+ constructor(options) {
10
+ super({
11
+ snapshot: {
12
+ kind: "cloudflare-sandbox",
13
+ bridgeId: options.bridgeId,
14
+ sandboxId: options.sandboxId,
15
+ cwd: options.cwd,
16
+ home: options.home,
17
+ },
18
+ backend: options.backend,
19
+ toolCatalogOptions: options.toolCatalogOptions,
20
+ });
21
+ }
22
+ }
23
+ export class CloudflareSandboxExecutionEnvironmentResolver {
24
+ bridges;
25
+ env;
26
+ fetch;
27
+ toolCatalogOptions;
28
+ constructor(options) {
29
+ this.bridges = options.bridges;
30
+ this.env = options.env ?? process.env;
31
+ this.fetch = options.fetch ?? fetch;
32
+ this.toolCatalogOptions = options.toolCatalogOptions;
33
+ }
34
+ async resolve(input) {
35
+ if (input.kind !== "cloudflare-sandbox") {
36
+ throw new Error(`unsupported execution environment kind '${input.kind}'`);
37
+ }
38
+ return this.createEnvironment(input);
39
+ }
40
+ canRestore(snapshot) {
41
+ return snapshot.kind === "cloudflare-sandbox" && snapshot.bridgeId in this.bridges;
42
+ }
43
+ async restore(snapshot) {
44
+ if (snapshot.kind !== "cloudflare-sandbox") {
45
+ throw new Error(`unsupported execution environment kind '${snapshot.kind}'`);
46
+ }
47
+ return this.createEnvironment(snapshot);
48
+ }
49
+ createEnvironment(input) {
50
+ const bridge = this.bridges[input.bridgeId];
51
+ if (!bridge) {
52
+ throw new Error(`unknown Cloudflare Sandbox bridge '${input.bridgeId}'`);
53
+ }
54
+ const apiKey = bridge.apiKey ?? (bridge.apiKeyEnv ? this.env[bridge.apiKeyEnv] : undefined);
55
+ const client = new CloudflareSandboxBridgeClient({
56
+ bridgeId: input.bridgeId,
57
+ baseUrl: bridge.url,
58
+ apiKey,
59
+ fetch: this.fetch,
60
+ });
61
+ const backend = createCloudflareSandboxToolExecutionBackend({
62
+ client,
63
+ sandboxId: input.sandboxId,
64
+ cwd: input.cwd,
65
+ });
66
+ return new CloudflareSandboxExecutionEnvironment({
67
+ bridgeId: input.bridgeId,
68
+ sandboxId: input.sandboxId,
69
+ cwd: input.cwd,
70
+ home: "home" in input ? input.home : (bridge.home ?? DEFAULT_HOME),
71
+ backend,
72
+ toolCatalogOptions: this.toolCatalogOptions,
73
+ });
74
+ }
75
+ }
76
+ export function createCloudflareSandboxToolExecutionBackend(options) {
77
+ const { client, sandboxId } = options;
78
+ const commandSessions = new Map();
79
+ const commandQueues = new Map();
80
+ const ensureCommandSession = async (cwd) => {
81
+ const existing = commandSessions.get(cwd);
82
+ if (existing) {
83
+ return (await existing).id;
84
+ }
85
+ const sessionPromise = client
86
+ .createSession(sandboxId, { cwd })
87
+ .then((id) => ({ id, cwd }))
88
+ .catch((err) => {
89
+ if (commandSessions.get(cwd) === sessionPromise) {
90
+ commandSessions.delete(cwd);
91
+ }
92
+ throw err;
93
+ });
94
+ commandSessions.set(cwd, sessionPromise);
95
+ return (await sessionPromise).id;
96
+ };
97
+ const resetCommandSession = async (cwd) => {
98
+ const sessionPromise = commandSessions.get(cwd);
99
+ commandSessions.delete(cwd);
100
+ const session = await sessionPromise?.catch(() => undefined);
101
+ if (session) {
102
+ await client.deleteSession(sandboxId, session.id).catch(() => { });
103
+ }
104
+ };
105
+ const resetAllCommandSessions = async () => {
106
+ const sessionPromises = [...commandSessions.values()];
107
+ commandSessions.clear();
108
+ await Promise.all(sessionPromises.map(async (sessionPromise) => {
109
+ const session = await sessionPromise.catch(() => undefined);
110
+ if (session) {
111
+ await client.deleteSession(sandboxId, session.id).catch(() => { });
112
+ }
113
+ }));
114
+ };
115
+ const runQueued = async (cwd, task) => {
116
+ const previous = commandQueues.get(cwd) ?? Promise.resolve();
117
+ const run = previous.catch(() => undefined).then(task);
118
+ const tail = run.then(() => undefined, () => undefined);
119
+ commandQueues.set(cwd, tail);
120
+ try {
121
+ return await run;
122
+ }
123
+ finally {
124
+ if (commandQueues.get(cwd) === tail) {
125
+ commandQueues.delete(cwd);
126
+ }
127
+ }
128
+ };
129
+ const exec = async (command, runOptions = {}) => {
130
+ const cwd = runOptions.cwd ?? options.cwd;
131
+ return await runQueued(cwd, async () => {
132
+ const sessionId = await ensureCommandSession(cwd);
133
+ try {
134
+ return await client.exec(sandboxId, {
135
+ argv: ["sh", "-lc", command],
136
+ cwd,
137
+ timeoutMs: runOptions.timeoutMs,
138
+ signal: runOptions.signal,
139
+ sessionId,
140
+ onAbort: () => resetCommandSession(cwd),
141
+ });
142
+ }
143
+ catch (err) {
144
+ if (isAbortError(err)) {
145
+ await resetCommandSession(cwd);
146
+ }
147
+ throw err;
148
+ }
149
+ });
150
+ };
151
+ return {
152
+ async dispose() {
153
+ await resetAllCommandSessions();
154
+ },
155
+ runBash: exec,
156
+ async readFile(path) {
157
+ const content = await client.readFile(sandboxId, path);
158
+ return { path, content: content.toString("utf-8") };
159
+ },
160
+ async readFileBinary(path, readOptions = {}) {
161
+ const content = await client.readFile(sandboxId, path);
162
+ const bytes = content.byteLength;
163
+ assertFileWithinMaxBytes(bytes, readOptions.maxBytes);
164
+ return { path, content, bytes };
165
+ },
166
+ async writeFile(path, content) {
167
+ const dir = dirname(path);
168
+ if (dir && dir !== ".") {
169
+ await exec(`mkdir -p ${shellQuote(dir)}`);
170
+ }
171
+ await client.writeFile(sandboxId, path, Buffer.from(content, "utf-8"));
172
+ return buildWriteFileResult(path, content);
173
+ },
174
+ async listDir(path) {
175
+ const result = await exec(`node -e ${shellQuote(NODE_LIST_DIR_SCRIPT)} ${shellQuote(path)}`);
176
+ if (result.exitCode !== 0) {
177
+ throw new Error(result.output.trim() || `list failed for ${path}`);
178
+ }
179
+ const entries = JSON.parse(result.output);
180
+ return { path, entries };
181
+ },
182
+ async grep(grepOptions) {
183
+ const resolvedPaths = resolveSandboxGrepPaths(grepOptions.paths);
184
+ if (grepOptions.dryRun) {
185
+ return buildSandboxGrepDryRunResult(resolvedPaths);
186
+ }
187
+ const command = ["rg", ...grepOptions.baseArgs, "--", grepOptions.pattern, ...resolvedPaths]
188
+ .map(shellQuote)
189
+ .join(" ");
190
+ try {
191
+ const result = await exec(command, {
192
+ timeoutMs: grepOptions.timeoutMs,
193
+ signal: grepOptions.signal,
194
+ });
195
+ return {
196
+ output: result.output,
197
+ exitCode: result.exitCode,
198
+ captureTruncated: result.truncated,
199
+ resolvedPaths,
200
+ };
201
+ }
202
+ catch (err) {
203
+ return buildSandboxGrepErrorResult(err, resolvedPaths);
204
+ }
205
+ },
206
+ };
207
+ }
208
+ export class CloudflareSandboxBridgeClient {
209
+ bridgeId;
210
+ baseUrl;
211
+ apiKey;
212
+ fetch;
213
+ constructor(options) {
214
+ this.bridgeId = options.bridgeId;
215
+ this.baseUrl = options.baseUrl.replace(/\/+$/, "");
216
+ this.apiKey = options.apiKey;
217
+ this.fetch = options.fetch;
218
+ }
219
+ async exec(sandboxId, options) {
220
+ const controller = new AbortController();
221
+ const abort = () => controller.abort();
222
+ options.signal?.addEventListener("abort", abort, { once: true });
223
+ if (options.signal?.aborted) {
224
+ controller.abort();
225
+ }
226
+ try {
227
+ const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/exec`, {
228
+ method: "POST",
229
+ headers: {
230
+ "Content-Type": "application/json",
231
+ ...(options.sessionId ? { "Session-Id": options.sessionId } : {}),
232
+ },
233
+ body: JSON.stringify({
234
+ argv: options.argv,
235
+ ...(options.cwd ? { cwd: options.cwd } : {}),
236
+ ...(options.timeoutMs !== undefined ? { timeout_ms: options.timeoutMs } : {}),
237
+ }),
238
+ signal: controller.signal,
239
+ });
240
+ if (!response.ok) {
241
+ throw await this.createHttpError(response);
242
+ }
243
+ if (!response.body) {
244
+ throw new Error(`Cloudflare Sandbox bridge '${this.bridgeId}' returned an empty exec body`);
245
+ }
246
+ return await parseExecSse(response.body);
247
+ }
248
+ catch (err) {
249
+ if (isAbortError(err) && options.onAbort) {
250
+ await options.onAbort();
251
+ }
252
+ throw err;
253
+ }
254
+ finally {
255
+ options.signal?.removeEventListener("abort", abort);
256
+ }
257
+ }
258
+ async readFile(sandboxId, path) {
259
+ const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${encodeBridgeFilePath(path)}`, { method: "GET" });
260
+ if (!response.ok) {
261
+ throw await this.createHttpError(response);
262
+ }
263
+ return Buffer.from(await response.arrayBuffer());
264
+ }
265
+ async writeFile(sandboxId, path, content) {
266
+ const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${encodeBridgeFilePath(path)}`, { method: "PUT", body: content });
267
+ if (!response.ok) {
268
+ throw await this.createHttpError(response);
269
+ }
270
+ }
271
+ async createSession(sandboxId, options) {
272
+ const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/session`, {
273
+ method: "POST",
274
+ headers: { "Content-Type": "application/json" },
275
+ body: JSON.stringify({ id: randomUUID(), cwd: options.cwd }),
276
+ });
277
+ if (!response.ok) {
278
+ throw await this.createHttpError(response);
279
+ }
280
+ const body = (await response.json());
281
+ if (typeof body.id !== "string" || !body.id) {
282
+ throw new Error(`Cloudflare Sandbox bridge '${this.bridgeId}' returned an invalid session`);
283
+ }
284
+ return body.id;
285
+ }
286
+ async deleteSession(sandboxId, sessionId) {
287
+ const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/session/${encodeURIComponent(sessionId)}`, { method: "DELETE" });
288
+ if (!response.ok) {
289
+ throw await this.createHttpError(response);
290
+ }
291
+ }
292
+ request(path, init) {
293
+ return this.fetch(`${this.baseUrl}${path}`, {
294
+ ...init,
295
+ headers: {
296
+ ...(this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}),
297
+ ...init.headers,
298
+ },
299
+ });
300
+ }
301
+ async createHttpError(response) {
302
+ let detail = "";
303
+ try {
304
+ const body = (await response.json());
305
+ detail = body.error || body.code || "";
306
+ }
307
+ catch {
308
+ detail = await response.text().catch(() => "");
309
+ }
310
+ return new Error(`Cloudflare Sandbox bridge '${this.bridgeId}' request failed (${response.status})${detail ? `: ${detail}` : ""}`);
311
+ }
312
+ }
313
+ async function parseExecSse(body) {
314
+ const reader = body.getReader();
315
+ const decoder = new TextDecoder();
316
+ let buffer = "";
317
+ let output = "";
318
+ let stdout = "";
319
+ let stderr = "";
320
+ let exitCode = null;
321
+ let truncated = false;
322
+ const trimToCaptureLimit = (value) => {
323
+ let next = value;
324
+ if (Buffer.byteLength(next, "utf-8") > BASH_MAX_CAPTURE_BYTES) {
325
+ truncated = true;
326
+ while (Buffer.byteLength(next, "utf-8") > BASH_MAX_CAPTURE_BYTES) {
327
+ next = next.slice(Math.max(1, Math.floor(next.length / 10)));
328
+ }
329
+ }
330
+ return next;
331
+ };
332
+ const appendOutput = (target, chunk) => {
333
+ output = trimToCaptureLimit(output + chunk);
334
+ if (target === "stdout") {
335
+ stdout = trimToCaptureLimit(stdout + chunk);
336
+ }
337
+ else {
338
+ stderr = trimToCaptureLimit(stderr + chunk);
339
+ }
340
+ };
341
+ const processEvent = (raw) => {
342
+ const lines = raw.split("\n");
343
+ let event = "message";
344
+ const dataLines = [];
345
+ for (const line of lines) {
346
+ if (line.startsWith("event:")) {
347
+ event = line.slice("event:".length).trim();
348
+ }
349
+ else if (line.startsWith("data:")) {
350
+ dataLines.push(line.slice("data:".length).trimStart());
351
+ }
352
+ }
353
+ const data = dataLines.join("\n");
354
+ if (event === "stdout" || event === "stderr") {
355
+ appendOutput(event, Buffer.from(data, "base64").toString("utf-8"));
356
+ }
357
+ else if (event === "exit") {
358
+ const parsed = JSON.parse(data);
359
+ exitCode = typeof parsed.exit_code === "number" ? parsed.exit_code : null;
360
+ }
361
+ else if (event === "error") {
362
+ const parsed = JSON.parse(data);
363
+ throw new Error(parsed.error || parsed.code || "Cloudflare Sandbox exec failed");
364
+ }
365
+ };
366
+ while (true) {
367
+ const { done, value } = await reader.read();
368
+ if (done)
369
+ break;
370
+ buffer += decoder.decode(value, { stream: true });
371
+ let splitIndex = buffer.indexOf("\n\n");
372
+ while (splitIndex !== -1) {
373
+ const raw = buffer.slice(0, splitIndex);
374
+ buffer = buffer.slice(splitIndex + 2);
375
+ if (raw.trim()) {
376
+ processEvent(raw);
377
+ }
378
+ splitIndex = buffer.indexOf("\n\n");
379
+ }
380
+ }
381
+ buffer += decoder.decode();
382
+ if (buffer.trim()) {
383
+ processEvent(buffer);
384
+ }
385
+ return { output, stdout, stderr, exitCode, truncated };
386
+ }
387
+ function encodeBridgeFilePath(path) {
388
+ return path
389
+ .replace(/^\/+/, "")
390
+ .split("/")
391
+ .map((part) => encodeURIComponent(part))
392
+ .join("/");
393
+ }
394
+ function isAbortError(err) {
395
+ return (typeof err === "object" &&
396
+ err !== null &&
397
+ "name" in err &&
398
+ err.name === "AbortError");
399
+ }
400
+ //# sourceMappingURL=cloudflare_sandbox_execution_environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare_sandbox_execution_environment.js","sourceRoot":"","sources":["../../src/execution/cloudflare_sandbox_execution_environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export class CompositeExecutionEnvironmentResolver {
2
+ resolvers;
3
+ constructor(resolvers) {
4
+ this.resolvers = resolvers;
5
+ }
6
+ resolve(input) {
7
+ return this.getResolver(input.kind).resolve(input);
8
+ }
9
+ canRestore(snapshot) {
10
+ const resolver = this.resolvers[snapshot.kind];
11
+ return resolver ? resolver.canRestore(snapshot) : false;
12
+ }
13
+ restore(snapshot) {
14
+ return this.getResolver(snapshot.kind).restore(snapshot);
15
+ }
16
+ getResolver(kind) {
17
+ const resolver = this.resolvers[kind];
18
+ if (!resolver) {
19
+ throw new Error(`unsupported execution environment kind '${kind}'`);
20
+ }
21
+ return resolver;
22
+ }
23
+ }
24
+ //# sourceMappingURL=execution_environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution_environment.js","sourceRoot":"","sources":["../../src/execution/execution_environment.ts"],"names":[],"mappings":"AA2CA,MAAM,OAAO,qCAAqC;IAC/B,SAAS,CAA2C;IAErE,YAAY,SAAmD;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,KAA+C;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,QAAqD;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,QAAqD;QAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEO,WAAW,CAAC,IAAsD;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}