@5ss/ai-tools 3.3.1 → 3.5.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,23 @@ All notable changes to `@5ss/ai-tools` are documented here.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Releases are cut by [semantic-release](https://semantic-release.gitbook.io/) from [conventional commits](https://www.conventionalcommits.org/).
6
6
 
7
+ ## [3.5.0](https://github.com/five-star-solutions-co/ai-tools/compare/v3.4.0...v3.5.0) (2026-08-27)
8
+
9
+ ### Features
10
+
11
+ * **core:** clarify domain logic ([8caced9](https://github.com/five-star-solutions-co/ai-tools/commit/8caced9b1b4b5ca64383ca63200070e2963f33af))
12
+
13
+ ### Bug Fixes
14
+
15
+ * **core:** fix bun.lock file ([9bdbe59](https://github.com/five-star-solutions-co/ai-tools/commit/9bdbe59d61781a5c563bbd738f6c759bbf427010))
16
+ * **core:** simplify package dependencies ([43ad3b8](https://github.com/five-star-solutions-co/ai-tools/commit/43ad3b89c01cfeb2f1792da598c3263853a4aa6b))
17
+
18
+ ## [3.4.0](https://github.com/five-star-solutions-co/ai-tools/compare/v3.3.1...v3.4.0) (2026-08-26)
19
+
20
+ ### Features
21
+
22
+ * **core:** clarify sandbox api path ([1542840](https://github.com/five-star-solutions-co/ai-tools/commit/154284020629ec8625d6ede8e1fad2246e333caa))
23
+
7
24
  ## [3.3.1](https://github.com/five-star-solutions-co/ai-tools/compare/v3.3.0...v3.3.1) (2026-08-25)
8
25
 
9
26
  ### Bug Fixes
@@ -24,7 +24,7 @@ const MAX_LIST_FILES = 500;
24
24
  const DEFAULT_EXEC_TIMEOUT_MS = 3e4;
25
25
  const MAX_EXEC_TIMEOUT_MS = 6e5;
26
26
  const cloudflareSandboxAuthSchema = z.object({
27
- base_url: z.string().min(1).describe("Sandbox bridge Worker origin, for example https://sandbox-bridge.example.workers.dev"),
27
+ base_url: z.string().min(1).describe("Sandbox bridge base URL including any mount prefix, for example https://container.example/sandbox"),
28
28
  api_key: z.string().min(1).describe("Bridge SANDBOX_API_KEY Bearer token"),
29
29
  storage: s3AuthSchema.optional().describe("Optional S3-compatible storage for importArtifact / exportArtifact (ArtifactRef)")
30
30
  });
@@ -457,6 +457,7 @@ function parseListCodeContextsPayload(data) {
457
457
  * Gold: `src/vendors/resend/client.ts` + messaging ArtifactRef storage pattern.
458
458
  * @see https://developers.cloudflare.com/sandbox/bridge/http-api/
459
459
  */
460
+ const sandboxApiPath = "/v1/sandbox";
460
461
  var CloudflareSandboxClient = class CloudflareSandboxClient {
461
462
  #http;
462
463
  #storage;
@@ -503,12 +504,12 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
503
504
  return { ok: true };
504
505
  }
505
506
  async create() {
506
- const { data } = await this.#http.post("/v1/sandbox", void 0, { label: "Cloudflare Sandbox create" });
507
+ const { data } = await this.#http.post(sandboxApiPath, void 0, { label: "Cloudflare Sandbox create" });
507
508
  if (!isPlainObject(data) || !isString(data["id"])) throw new ToolError("Unexpected create sandbox response", { code: "upstream" });
508
509
  return { sandbox_id: data["id"] };
509
510
  }
510
511
  async destroy(input) {
511
- await this.#http.delete(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}`, { label: "Cloudflare Sandbox destroy" });
512
+ await this.#http.delete(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}`, { label: "Cloudflare Sandbox destroy" });
512
513
  this.#forgetSandboxContexts(input.sandbox_id);
513
514
  return {
514
515
  sandbox_id: input.sandbox_id,
@@ -516,7 +517,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
516
517
  };
517
518
  }
518
519
  async running(input) {
519
- const { data } = await this.#http.get(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/running`, { label: "Cloudflare Sandbox running" });
520
+ const { data } = await this.#http.get(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/running`, { label: "Cloudflare Sandbox running" });
520
521
  if (!isPlainObject(data) || typeof data["running"] !== "boolean") throw new ToolError("Unexpected running response", { code: "upstream" });
521
522
  return {
522
523
  sandbox_id: input.sandbox_id,
@@ -540,7 +541,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
540
541
  Accept: "text/event-stream"
541
542
  };
542
543
  if (input.session_id) headers["Session-Id"] = input.session_id;
543
- const { bytes } = await this.#http.bytes("POST", `/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/exec`, {
544
+ const { bytes } = await this.#http.bytes("POST", `${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/exec`, {
544
545
  body,
545
546
  headers,
546
547
  label: "Cloudflare Sandbox exec"
@@ -581,7 +582,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
581
582
  }
582
583
  async createCodeContext(input) {
583
584
  const language = input.language ?? "python";
584
- const { data } = await this.#http.post(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/context`, {
585
+ const { data } = await this.#http.post(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context`, {
585
586
  language,
586
587
  ...input.cwd && { cwd: input.cwd },
587
588
  ...input.env && Object.keys(input.env).length > 0 && { env: input.env },
@@ -596,14 +597,14 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
596
597
  };
597
598
  }
598
599
  async listCodeContexts(input) {
599
- const { data } = await this.#http.get(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/context`, { label: "Cloudflare Sandbox listCodeContexts" });
600
+ const { data } = await this.#http.get(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context`, { label: "Cloudflare Sandbox listCodeContexts" });
600
601
  return {
601
602
  sandbox_id: input.sandbox_id,
602
603
  contexts: parseListCodeContextsPayload(data)
603
604
  };
604
605
  }
605
606
  async deleteCodeContext(input) {
606
- await this.#http.delete(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/context/${encodeURIComponent(input.context_id)}`, { label: "Cloudflare Sandbox deleteCodeContext" });
607
+ await this.#http.delete(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context/${encodeURIComponent(input.context_id)}`, { label: "Cloudflare Sandbox deleteCodeContext" });
607
608
  const prefix = `${input.sandbox_id}:`;
608
609
  for (const [key, contextId] of this.#contexts) if (contextId === input.context_id && key.startsWith(prefix)) this.#contexts.delete(key);
609
610
  return {
@@ -613,7 +614,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
613
614
  };
614
615
  }
615
616
  async runCode(input) {
616
- const { data } = await this.#http.post(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/run-code`, {
617
+ const { data } = await this.#http.post(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/run-code`, {
617
618
  code: input.code,
618
619
  ...input.context_id && { context_id: input.context_id },
619
620
  ...input.language && { language: input.language },
@@ -770,7 +771,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
770
771
  };
771
772
  }
772
773
  async createSession(input) {
773
- const { data } = await this.#http.post(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/session`, void 0, { label: "Cloudflare Sandbox createSession" });
774
+ const { data } = await this.#http.post(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/session`, void 0, { label: "Cloudflare Sandbox createSession" });
774
775
  if (!isPlainObject(data) || !isString(data["id"])) throw new ToolError("Unexpected create session response", { code: "upstream" });
775
776
  return {
776
777
  sandbox_id: input.sandbox_id,
@@ -778,7 +779,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
778
779
  };
779
780
  }
780
781
  async deleteSession(input) {
781
- await this.#http.delete(`/v1/sandbox/${encodeURIComponent(input.sandbox_id)}/session/${encodeURIComponent(input.session_id)}`, { label: "Cloudflare Sandbox deleteSession" });
782
+ await this.#http.delete(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/session/${encodeURIComponent(input.session_id)}`, { label: "Cloudflare Sandbox deleteSession" });
782
783
  return {
783
784
  sandbox_id: input.sandbox_id,
784
785
  session_id: input.session_id,
@@ -821,7 +822,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
821
822
  };
822
823
  if (endpoint) body["bucket"] = data.bucket;
823
824
  else body["binding"] = data.bucket;
824
- await this.#http.post(`/v1/sandbox/${encodeURIComponent(data.sandbox_id)}/mount`, body, { label: "Cloudflare Sandbox mount" });
825
+ await this.#http.post(`${sandboxApiPath}/${encodeURIComponent(data.sandbox_id)}/mount`, body, { label: "Cloudflare Sandbox mount" });
825
826
  return {
826
827
  sandbox_id: data.sandbox_id,
827
828
  bucket: data.bucket,
@@ -841,7 +842,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
841
842
  details: { issues: parsed.error.issues.map((issue) => issue.message) }
842
843
  });
843
844
  const data = parsed.data;
844
- await this.#http.post(`/v1/sandbox/${encodeURIComponent(data.sandbox_id)}/unmount`, { mountPath: data.mount_path }, { label: "Cloudflare Sandbox unmount" });
845
+ await this.#http.post(`${sandboxApiPath}/${encodeURIComponent(data.sandbox_id)}/unmount`, { mountPath: data.mount_path }, { label: "Cloudflare Sandbox unmount" });
845
846
  return {
846
847
  sandbox_id: data.sandbox_id,
847
848
  mount_path: data.mount_path,
@@ -879,7 +880,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
879
880
  const key = workspaceFileKey(path);
880
881
  const headers = { "Content-Type": "application/octet-stream" };
881
882
  if (sessionId) headers["Session-Id"] = sessionId;
882
- const { data } = await this.#http.put(`/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${key.split("/").map(encodeURIComponent).join("/")}`, toArrayBuffer(bytes), {
883
+ const { data } = await this.#http.put(`${sandboxApiPath}/${encodeURIComponent(sandboxId)}/file/${key.split("/").map(encodeURIComponent).join("/")}`, toArrayBuffer(bytes), {
883
884
  headers,
884
885
  label: "Cloudflare Sandbox writeFile"
885
886
  });
@@ -889,7 +890,7 @@ var CloudflareSandboxClient = class CloudflareSandboxClient {
889
890
  const key = workspaceFileKey(path);
890
891
  const headers = {};
891
892
  if (sessionId) headers["Session-Id"] = sessionId;
892
- const { bytes } = await this.#http.bytes("GET", `/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${key.split("/").map(encodeURIComponent).join("/")}`, {
893
+ const { bytes } = await this.#http.bytes("GET", `${sandboxApiPath}/${encodeURIComponent(sandboxId)}/file/${key.split("/").map(encodeURIComponent).join("/")}`, {
893
894
  headers,
894
895
  label: "Cloudflare Sandbox readFile",
895
896
  maxBytes: MAX_FILE_BYTES
@@ -1124,4 +1125,4 @@ const cloudflareSandboxModule = defineModule({
1124
1125
  //#endregion
1125
1126
  export { listCodeContextsOutputSchema as $, MAX_FILE_PATH as A, deleteBridgeSessionInputSchema as B, workspaceAbsolutePath as C, MAX_ARG_CHARS as D, MAX_ARGV as E, cloudflareSandboxAuthSchema as F, execInputSchema as G, deleteCodeContextInputSchema as H, createBridgeSessionOutputSchema as I, exportArtifactInputSchema as J, execOutputSchema as K, createCodeContextInputSchema as L, MAX_LIST_FILES as M, MAX_READ_PATHS as N, MAX_EXEC_TIMEOUT_MS as O, MAX_WRITE_FILES as P, importArtifactOutputSchema as Q, createCodeContextOutputSchema as R, shellQuote as S, DEFAULT_EXEC_TIMEOUT_MS as T, deleteCodeContextOutputSchema as U, deleteBridgeSessionOutputSchema as V, destroySandboxOutputSchema as W, healthOutputSchema as X, exportArtifactOutputSchema as Y, importArtifactInputSchema as Z, cloudflareSandboxWriteFilesTool as _, writeFileOutputSchema as _t, cloudflareSandboxExecTool as a, readFileOutputSchema as at, parseRunCodePayload as b, cloudflareSandboxHealthTool as c, removeFilesInputSchema as ct, cloudflareSandboxModule as d, runningOutputSchema as dt, listFilesInputSchema as et, cloudflareSandboxReadFileTool as f, sandboxIdInputSchema as ft, cloudflareSandboxWriteFileTool as g, writeFileInputSchema as gt, cloudflareSandboxRunningTool as h, unmountBucketOutputSchema as ht, cloudflareSandboxDestroyTool as i, readFileInputSchema as it, MAX_FILE_TEXT as j, MAX_FILE_BYTES as k, cloudflareSandboxImportArtifactTool as l, removeFilesOutputSchema as lt, cloudflareSandboxRemoveFilesTool as m, unmountBucketInputSchema as mt, cloudflareSandboxCreateTool as n, mountBucketInputSchema as nt, cloudflareSandboxExecuteCodeTool as o, readFilesInputSchema as ot, cloudflareSandboxReadFilesTool as p, sandboxObjectArtifactRefSchema as pt, executeCodeInputSchema as q, cloudflareSandboxDeleteSessionTool as r, mountBucketOutputSchema as rt, cloudflareSandboxExportArtifactTool as s, readFilesOutputSchema as st, cloudflareSandboxCreateSessionTool as t, listFilesOutputSchema as tt, cloudflareSandboxListFilesTool as u, runCodeInputSchema as ut, CloudflareSandboxClient as v, writeFilesInputSchema as vt, workspaceFileKey as w, resolveWriteFileBytes as x, parseExecSse as y, writeFilesOutputSchema as yt, createSandboxOutputSchema as z };
1126
1127
 
1127
- //# sourceMappingURL=cloudflare-sandbox-D3rAu9bN.js.map
1128
+ //# sourceMappingURL=cloudflare-sandbox-DII392Z9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-sandbox-DII392Z9.js","names":["#http","#storage","#storageAuth","#contexts","#pendingContexts","#forgetSandboxContexts","#ensureCodeContext","#putFileBytes","#getFileBytes","#requireStorage"],"sources":["../src/vendors/cloudflare-sandbox/contracts.ts","../src/vendors/cloudflare-sandbox/domain.ts","../src/vendors/cloudflare-sandbox/client.ts","../src/vendors/cloudflare-sandbox/module.ts"],"sourcesContent":["/**\n * Cloudflare Sandbox Bridge HTTP API contracts.\n * Host deploys the bridge Worker; this pack is a Bearer client.\n * @see https://developers.cloudflare.com/sandbox/bridge/http-api/\n */\n\nimport { z } from 'zod'\n\nimport { s3AuthSchema } from '../s3/contracts'\n\nexport const MAX_ARGV = 64\nexport const MAX_ARG_CHARS = 100_000\nexport const MAX_FILE_PATH = 1024\nexport const MAX_FILE_TEXT = 2_000_000\n/** Bridge hard cap is 32 MiB; package tool path uses the same bound. */\nexport const MAX_FILE_BYTES = 32 * 1024 * 1024\nexport const MAX_WRITE_FILES = 20\nexport const MAX_READ_PATHS = 50\nexport const MAX_LIST_FILES = 500\nexport const DEFAULT_EXEC_TIMEOUT_MS = 30_000\nexport const MAX_EXEC_TIMEOUT_MS = 600_000\n\nexport const cloudflareSandboxAuthSchema = z.object({\n\tbase_url: z\n\t\t.string()\n\t\t.min(1)\n\t\t.describe('Sandbox bridge base URL including any mount prefix, for example https://container.example/sandbox'),\n\tapi_key: z.string().min(1).describe('Bridge SANDBOX_API_KEY Bearer token'),\n\tstorage: s3AuthSchema\n\t\t.optional()\n\t\t.describe('Optional S3-compatible storage for importArtifact / exportArtifact (ArtifactRef)')\n})\n\nexport type CloudflareSandboxAuth = z.infer<typeof cloudflareSandboxAuthSchema>\n\n/** Object-store ArtifactRef for sandbox import/export. */\nexport const sandboxObjectArtifactRefSchema = z.object({\n\tstore: z.literal('object').describe('Object store containing the artifact'),\n\tkey: z.string().min(1).describe('Object key'),\n\tmedia_type: z.string().min(1).optional().describe('MIME or format hint when known'),\n\tfilename: z.string().min(1).optional().describe('Original or display file name'),\n\tbyte_length: z.int().min(0).optional().describe('Size in bytes when known')\n})\n\nexport type SandboxObjectArtifactRef = z.infer<typeof sandboxObjectArtifactRefSchema>\n\nconst sandboxId = z.string().min(1).max(200).describe('Sandbox id returned by create')\n\nexport const sandboxIdInputSchema = z.object({\n\tsandbox_id: sandboxId\n})\n\nexport const createSandboxOutputSchema = z.object({\n\tsandbox_id: z.string().describe('Created sandbox id')\n})\n\nexport const destroySandboxOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tdestroyed: z.literal(true)\n})\n\nexport const runningOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\trunning: z.boolean().describe('Whether the container is live')\n})\n\nexport const healthOutputSchema = z.object({\n\tok: z.boolean()\n})\n\nexport const execInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\targv: z\n\t\t.array(z.string().min(1).max(MAX_ARG_CHARS))\n\t\t.min(1)\n\t\t.max(MAX_ARGV)\n\t\t.describe('Command argv array (not a shell string). Example: [\"python3\",\"-c\",\"print(1)\"]'),\n\ttimeout_ms: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(MAX_EXEC_TIMEOUT_MS)\n\t\t.optional()\n\t\t.describe(`Exec timeout in ms (default ${DEFAULT_EXEC_TIMEOUT_MS})`),\n\tcwd: z.string().min(1).max(MAX_FILE_PATH).optional().describe('Working directory (default /workspace)'),\n\tsession_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(200)\n\t\t.optional()\n\t\t.describe('Optional bridge session id for isolated working directory and runtime state'),\n\tenv: z\n\t\t.record(z.string().min(1).max(128), z.string().max(8_192))\n\t\t.optional()\n\t\t.describe('Optional environment variables for the process when the bridge supports env')\n})\n\nexport const execOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tstdout: z.string().describe('Decoded standard output'),\n\tstderr: z.string().describe('Decoded standard error'),\n\texit_code: z.number().int().optional().describe('Process exit code when the stream ends with exit'),\n\tsuccess: z.boolean().describe('True when exit_code is 0'),\n\terror: z.string().optional().describe('Bridge error message when the stream ends with error'),\n\terror_code: z.string().optional().describe('Bridge error code when present')\n})\n\nconst filePathField = z\n\t.string()\n\t.min(1)\n\t.max(MAX_FILE_PATH)\n\t.describe('Path under workspace (with or without /workspace/ prefix)')\n\nconst sessionIdField = z.string().min(1).max(200).optional().describe('Optional Session-Id header')\n\nconst writeFileBodyFields = {\n\ttext: z.string().max(MAX_FILE_TEXT).optional().describe('Utf-8 file contents (omit when body_base64 is set)'),\n\tbody_base64: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Base64 file bytes for binary content (omit when text is set; max 32 MiB decoded)')\n}\n\nfunction refineExactlyOneBody(\n\tval: { text?: string | undefined; body_base64?: string | undefined },\n\tctx: z.RefinementCtx\n): void {\n\tconst hasText = val.text !== undefined\n\tconst hasB64 = val.body_base64 !== undefined\n\tif (hasText === hasB64) {\n\t\tctx.addIssue({\n\t\t\tcode: 'custom',\n\t\t\tmessage: 'Provide exactly one of text or body_base64'\n\t\t})\n\t}\n}\n\nexport const writeFileInputSchema = z\n\t.object({\n\t\tsandbox_id: sandboxId,\n\t\tpath: filePathField,\n\t\t...writeFileBodyFields,\n\t\tsession_id: sessionIdField\n\t})\n\t.superRefine(refineExactlyOneBody)\n\nexport const writeFileOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpath: z.string(),\n\tok: z.literal(true),\n\tbyte_length: z.number().int().nonnegative().optional().describe('Decoded byte length written when known')\n})\n\nexport const readFileInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tpath: filePathField,\n\tencoding: z\n\t\t.enum(['utf8', 'base64'])\n\t\t.optional()\n\t\t.describe('Response encoding (default utf8 for text; use base64 for binary)'),\n\tsession_id: sessionIdField\n})\n\nexport const readFileOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpath: z.string(),\n\ttext: z.string().optional().describe('Utf-8 contents when encoding is utf8 (default)'),\n\tbody_base64: z.string().optional().describe('Base64 contents when encoding is base64'),\n\tbyte_length: z.number().int().nonnegative().optional().describe('Decoded byte length')\n})\n\nexport const writeFilesInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tfiles: z\n\t\t.array(\n\t\t\tz\n\t\t\t\t.object({\n\t\t\t\t\tpath: z.string().min(1).max(MAX_FILE_PATH).describe('Path under workspace'),\n\t\t\t\t\t...writeFileBodyFields\n\t\t\t\t})\n\t\t\t\t.superRefine(refineExactlyOneBody)\n\t\t)\n\t\t.min(1)\n\t\t.max(MAX_WRITE_FILES)\n\t\t.describe('Files to write under workspace (text or body_base64 each)'),\n\tsession_id: sessionIdField\n})\n\nexport const writeFilesOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpaths: z.array(z.string()),\n\tok: z.literal(true)\n})\n\nexport const readFilesInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tpaths: z\n\t\t.array(z.string().min(1).max(MAX_FILE_PATH).describe('Path under workspace'))\n\t\t.min(1)\n\t\t.max(MAX_READ_PATHS)\n\t\t.describe('Paths to read under workspace'),\n\tencoding: z.enum(['utf8', 'base64']).optional().describe('Response encoding for all files (default utf8)'),\n\tsession_id: sessionIdField\n})\n\nexport const readFilesOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tfiles: z.array(\n\t\tz.object({\n\t\t\tpath: z.string(),\n\t\t\ttext: z.string().optional(),\n\t\t\tbody_base64: z.string().optional(),\n\t\t\tbyte_length: z.number().int().nonnegative().optional()\n\t\t})\n\t)\n})\n\nexport const listFilesInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tdirectory_path: z.string().max(MAX_FILE_PATH).optional().describe('Directory to list (default /workspace)'),\n\tsession_id: sessionIdField\n})\n\nexport const listFilesOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpaths: z.array(z.string()).describe('Absolute or workspace-relative file paths found'),\n\traw: z.unknown().optional().describe('Provider listing payload when available')\n})\n\nexport const removeFilesInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tpaths: z\n\t\t.array(z.string().min(1).max(MAX_FILE_PATH))\n\t\t.min(1)\n\t\t.max(MAX_READ_PATHS)\n\t\t.describe('Paths to remove under workspace'),\n\tsession_id: sessionIdField\n})\n\nexport const removeFilesOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpaths: z.array(z.string()),\n\tok: z.literal(true)\n})\n\nexport const importArtifactInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tpath: filePathField,\n\tsource: sandboxObjectArtifactRefSchema.describe('Object-store ArtifactRef to copy into the sandbox'),\n\tsession_id: sessionIdField\n})\n\nexport const importArtifactOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpath: z.string(),\n\tok: z.literal(true),\n\tbyte_length: z.number().int().nonnegative()\n})\n\nexport const exportArtifactInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tpath: filePathField,\n\tdestination_key: z.string().min(1).describe('Object key to write under bound storage'),\n\tsession_id: sessionIdField\n})\n\nexport const exportArtifactOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tpath: z.string(),\n\tartifact: sandboxObjectArtifactRefSchema\n})\n\nexport const createBridgeSessionOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tsession_id: z.string().describe('Bridge session id for Session-Id header')\n})\n\nexport const deleteBridgeSessionInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tsession_id: z.string().min(1).max(200).describe('Bridge session id to delete')\n})\n\nexport const deleteBridgeSessionOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tsession_id: z.string(),\n\tdeleted: z.literal(true)\n})\n\nconst interpreterLanguageSchema = z.enum(['python', 'javascript', 'typescript'])\n\nexport const executeCodeInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tcode: z.string().min(1).max(MAX_ARG_CHARS).describe('Source code to run'),\n\tlanguage: interpreterLanguageSchema.optional().describe('Interpreter language (default python)'),\n\ttimeout_ms: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(MAX_EXEC_TIMEOUT_MS)\n\t\t.optional()\n\t\t.describe(`Exec timeout in ms (default ${DEFAULT_EXEC_TIMEOUT_MS})`),\n\tcontext_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(200)\n\t\t.optional()\n\t\t.describe('Optional interpreter context id; omit to reuse the sandbox language context')\n})\n\nexport const createCodeContextInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tlanguage: interpreterLanguageSchema.optional().describe('Interpreter language (default python)'),\n\tcwd: z.string().min(1).max(MAX_FILE_PATH).optional().describe('Working directory (default /workspace)'),\n\tenv: z\n\t\t.record(z.string().min(1).max(128), z.string().max(8_192))\n\t\t.optional()\n\t\t.describe('Environment variables for the interpreter context'),\n\ttimeout_ms: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(MAX_EXEC_TIMEOUT_MS)\n\t\t.optional()\n\t\t.describe(`Context create timeout in ms (default ${DEFAULT_EXEC_TIMEOUT_MS})`)\n})\n\nexport const createCodeContextOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tcontext_id: z.string().describe('Persistent interpreter context id'),\n\tlanguage: interpreterLanguageSchema.optional(),\n\tcwd: z.string().optional()\n})\n\nexport const listCodeContextsOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tcontexts: z.array(\n\t\tz.object({\n\t\t\tcontext_id: z.string(),\n\t\t\tlanguage: z.string().optional(),\n\t\t\tcwd: z.string().optional()\n\t\t})\n\t)\n})\n\nexport const deleteCodeContextInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tcontext_id: z.string().min(1).max(200).describe('Interpreter context id to delete')\n})\n\nexport const deleteCodeContextOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tcontext_id: z.string(),\n\tdeleted: z.literal(true)\n})\n\nexport const runCodeInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tcode: z.string().min(1).max(MAX_ARG_CHARS).describe('Source to run in the interpreter context'),\n\tcontext_id: z.string().min(1).max(200).optional().describe('Interpreter context id; omit for the language default'),\n\tlanguage: interpreterLanguageSchema.optional().describe('Interpreter language when creating a default context'),\n\ttimeout_ms: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(MAX_EXEC_TIMEOUT_MS)\n\t\t.optional()\n\t\t.describe(`Run timeout in ms (default ${DEFAULT_EXEC_TIMEOUT_MS})`)\n})\n\n/**\n * Mount an S3-compatible bucket into the sandbox filesystem.\n * @see https://developers.cloudflare.com/sandbox/bridge/http-api/#bucket-mounts\n *\n * Two bridge modes:\n * - **R2 binding:** omit `endpoint`; `bucket` is the Worker R2 binding name.\n * - **Remote S3/R2/GCS:** set `endpoint` (+ optional credentials; bridge may use Worker secrets).\n */\nexport const mountBucketInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tbucket: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(256)\n\t\t.describe(\n\t\t\t'R2 Worker binding name when endpoint is omitted; otherwise the remote bucket name (e.g. for S3/R2 endpoint mounts)'\n\t\t),\n\tmount_path: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(MAX_FILE_PATH)\n\t\t.refine((p) => p.startsWith('/'), { message: 'mount_path must be an absolute path (start with /)' })\n\t\t.describe('Absolute path inside the sandbox to mount at (e.g. /data or /mnt/workspace)'),\n\tendpoint: z\n\t\t.url()\n\t\t.optional()\n\t\t.describe(\n\t\t\t'S3-compatible endpoint URL (e.g. https://s3.amazonaws.com or https://ACCOUNT.r2.cloudflarestorage.com). Omit for Worker R2 binding mounts'\n\t\t),\n\tprovider: z\n\t\t.enum(['r2', 's3', 'gcs'])\n\t\t.optional()\n\t\t.describe('Provider hint for s3fs optimizations when using endpoint mounts'),\n\tread_only: z.boolean().optional().describe('Mount read-only (default false)'),\n\tprefix: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(MAX_FILE_PATH)\n\t\t.optional()\n\t\t.describe('Bucket prefix/subdirectory to expose at the mount (must start with / when set)'),\n\taccess_key_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Access key for endpoint mounts (maps to bridge credentials.accessKeyId)'),\n\tsecret_access_key: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Secret key for endpoint mounts (maps to bridge credentials.secretAccessKey)'),\n\tcredential_proxy: z\n\t\t.boolean()\n\t\t.optional()\n\t\t.describe(\n\t\t\t'When true, bridge keeps credentials out of the container (egress signing). Endpoint mounts only; requires ContainerProxy on the bridge Worker'\n\t\t),\n\tlocal_bucket: z\n\t\t.boolean()\n\t\t.optional()\n\t\t.describe('When true, use local R2 binding sync (wrangler dev). Mutually exclusive with endpoint'),\n\ts3fs_options: z\n\t\t.array(z.string().min(1).max(256))\n\t\t.max(32)\n\t\t.optional()\n\t\t.describe('Advanced s3fs mount flags (e.g. use_cache=/tmp/cache)')\n})\n\nexport const mountBucketOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tbucket: z.string(),\n\tmount_path: z.string(),\n\tok: z.literal(true)\n})\n\nexport const unmountBucketInputSchema = z.object({\n\tsandbox_id: sandboxId,\n\tmount_path: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(MAX_FILE_PATH)\n\t\t.refine((p) => p.startsWith('/'), { message: 'mount_path must be an absolute path (start with /)' })\n\t\t.describe('Absolute mount path previously passed to mount')\n})\n\nexport const unmountBucketOutputSchema = z.object({\n\tsandbox_id: z.string(),\n\tmount_path: z.string(),\n\tok: z.literal(true)\n})\n\nexport type SandboxIdInput = z.infer<typeof sandboxIdInputSchema>\nexport type CreateSandboxOutput = z.infer<typeof createSandboxOutputSchema>\nexport type DestroySandboxOutput = z.infer<typeof destroySandboxOutputSchema>\nexport type RunningOutput = z.infer<typeof runningOutputSchema>\nexport type HealthOutput = z.infer<typeof healthOutputSchema>\nexport type ExecInput = z.infer<typeof execInputSchema>\nexport type ExecOutput = z.infer<typeof execOutputSchema>\nexport type WriteFileInput = z.infer<typeof writeFileInputSchema>\nexport type WriteFileOutput = z.infer<typeof writeFileOutputSchema>\nexport type ReadFileInput = z.infer<typeof readFileInputSchema>\nexport type ReadFileOutput = z.infer<typeof readFileOutputSchema>\nexport type WriteFilesInput = z.infer<typeof writeFilesInputSchema>\nexport type WriteFilesOutput = z.infer<typeof writeFilesOutputSchema>\nexport type ReadFilesInput = z.infer<typeof readFilesInputSchema>\nexport type ReadFilesOutput = z.infer<typeof readFilesOutputSchema>\nexport type ListFilesInput = z.infer<typeof listFilesInputSchema>\nexport type ListFilesOutput = z.infer<typeof listFilesOutputSchema>\nexport type RemoveFilesInput = z.infer<typeof removeFilesInputSchema>\nexport type RemoveFilesOutput = z.infer<typeof removeFilesOutputSchema>\nexport type ImportArtifactInput = z.infer<typeof importArtifactInputSchema>\nexport type ImportArtifactOutput = z.infer<typeof importArtifactOutputSchema>\nexport type ExportArtifactInput = z.infer<typeof exportArtifactInputSchema>\nexport type ExportArtifactOutput = z.infer<typeof exportArtifactOutputSchema>\nexport type CreateBridgeSessionOutput = z.infer<typeof createBridgeSessionOutputSchema>\nexport type DeleteBridgeSessionInput = z.infer<typeof deleteBridgeSessionInputSchema>\nexport type DeleteBridgeSessionOutput = z.infer<typeof deleteBridgeSessionOutputSchema>\nexport type ExecuteCodeInput = z.infer<typeof executeCodeInputSchema>\nexport type CreateCodeContextInput = z.infer<typeof createCodeContextInputSchema>\nexport type CreateCodeContextOutput = z.infer<typeof createCodeContextOutputSchema>\nexport type ListCodeContextsOutput = z.infer<typeof listCodeContextsOutputSchema>\nexport type DeleteCodeContextInput = z.infer<typeof deleteCodeContextInputSchema>\nexport type DeleteCodeContextOutput = z.infer<typeof deleteCodeContextOutputSchema>\nexport type RunCodeInput = z.infer<typeof runCodeInputSchema>\nexport type MountBucketInput = z.infer<typeof mountBucketInputSchema>\nexport type MountBucketOutput = z.infer<typeof mountBucketOutputSchema>\nexport type UnmountBucketInput = z.infer<typeof unmountBucketInputSchema>\nexport type UnmountBucketOutput = z.infer<typeof unmountBucketOutputSchema>\n","/**\n * Cloudflare Sandbox Bridge pure helpers (no HTTP).\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\nimport { z } from 'zod'\n\nimport { ToolError } from '../../core/errors'\nimport { base64ToBytes, utf8ToBytes } from '../../shared/bytes'\nimport { MAX_FILE_BYTES } from './contracts'\nimport type { ListCodeContextsOutput } from './contracts'\n\n/** Normalize a host path to the bridge URL segment under /file/… (no leading slash). */\nexport function workspaceFileKey(path: string): string {\n\tconst trimmed = path.trim()\n\tif (!trimmed) {\n\t\tthrow new ToolError('File path is empty', { code: 'bad_input' })\n\t}\n\tconst noLead = trimmed.replace(/^\\/+/, '')\n\tconst under = noLead.startsWith('workspace/') ? noLead : `workspace/${noLead}`\n\t// Reject traversal\n\tconst parts = under.split('/')\n\tif (parts.some((p) => p === '..' || p === '')) {\n\t\tthrow new ToolError('File path must stay under workspace', {\n\t\t\tcode: 'bad_input',\n\t\t\tdetails: { path: trimmed }\n\t\t})\n\t}\n\treturn under\n}\n\n/** Absolute workspace path for shell list/rm (leading slash). */\nexport function workspaceAbsolutePath(path: string): string {\n\tconst key = workspaceFileKey(path)\n\treturn `/${key}`\n}\n\n/** Shell-safe single-quoted string. */\nexport function shellQuote(value: string): string {\n\treturn `'${value.replaceAll(\"'\", `'\\\\''`)}'`\n}\n\n/**\n * Resolve write-file body to raw bytes (text UTF-8 or base64).\n * Enforces MAX_FILE_BYTES (bridge limit).\n */\nexport function resolveWriteFileBytes(input: {\n\ttext?: string | undefined\n\tbody_base64?: string | undefined\n}): Uint8Array {\n\tif (input.body_base64 !== undefined && input.text !== undefined) {\n\t\tthrow new ToolError('Provide exactly one of text or body_base64', { code: 'bad_input' })\n\t}\n\tif (input.body_base64 !== undefined) {\n\t\tconst bytes = base64ToBytes(input.body_base64)\n\t\tif (bytes.byteLength > MAX_FILE_BYTES) {\n\t\t\tthrow new ToolError('Sandbox file exceeds max byte limit', {\n\t\t\t\tcode: 'too_large',\n\t\t\t\tdetails: { max_bytes: MAX_FILE_BYTES, content_length: bytes.byteLength }\n\t\t\t})\n\t\t}\n\t\treturn bytes\n\t}\n\tif (input.text !== undefined) {\n\t\tconst bytes = utf8ToBytes(input.text)\n\t\tif (bytes.byteLength > MAX_FILE_BYTES) {\n\t\t\tthrow new ToolError('Sandbox file exceeds max byte limit', {\n\t\t\t\tcode: 'too_large',\n\t\t\t\tdetails: { max_bytes: MAX_FILE_BYTES, content_length: bytes.byteLength }\n\t\t\t})\n\t\t}\n\t\treturn bytes\n\t}\n\tthrow new ToolError('Provide exactly one of text or body_base64', { code: 'bad_input' })\n}\n\nexport type ParsedExecStream = {\n\tstdout: string\n\tstderr: string\n\texit_code?: number\n\terror?: string\n\terror_code?: string\n}\n\nexport type ParseExecSseOptions = {\n\t/** Called for each stdout chunk as the SSE body is walked (buffer may still be complete). */\n\tonStdout?: (chunk: string) => void\n\t/** Called for each stderr chunk as the SSE body is walked. */\n\tonStderr?: (chunk: string) => void\n}\n\n/**\n * Parse bridge /exec text/event-stream body.\n * Events: stdout/stderr (base64 data), exit ({\"exit_code\":N}), error ({\"error\",\"code\"}).\n */\nexport function parseExecSse(body: string, options: ParseExecSseOptions = {}): ParsedExecStream {\n\tconst stdoutChunks: string[] = []\n\tconst stderrChunks: string[] = []\n\tlet exit_code: number | undefined\n\tlet error: string | undefined\n\tlet error_code: string | undefined\n\n\tconst blocks = body.replaceAll('\\r\\n', '\\n').split('\\n\\n')\n\tfor (const block of blocks) {\n\t\tconst lines = block.split('\\n').filter((line) => line.length > 0)\n\t\tif (lines.length === 0) continue\n\t\tlet event = 'message'\n\t\tconst dataLines: string[] = []\n\t\tfor (const line of lines) {\n\t\t\tif (line.startsWith('event:')) {\n\t\t\t\tevent = line.slice(6).trim()\n\t\t\t} else if (line.startsWith('data:')) {\n\t\t\t\tdataLines.push(line.slice(5).trimStart())\n\t\t\t}\n\t\t}\n\t\tconst data = dataLines.join('\\n')\n\t\tif (event === 'stdout' && data.length > 0) {\n\t\t\tconst chunk = decodeBase64Chunk(data)\n\t\t\tstdoutChunks.push(chunk)\n\t\t\toptions.onStdout?.(chunk)\n\t\t} else if (event === 'stderr' && data.length > 0) {\n\t\t\tconst chunk = decodeBase64Chunk(data)\n\t\t\tstderrChunks.push(chunk)\n\t\t\toptions.onStderr?.(chunk)\n\t\t} else if (event === 'exit' && data.length > 0) {\n\t\t\tconst parsed = safeJson(data)\n\t\t\tif (isPlainObject(parsed)) {\n\t\t\t\tconst code = parsed['exit_code']\n\t\t\t\tif (typeof code === 'number' && Number.isFinite(code)) exit_code = code\n\t\t\t}\n\t\t} else if (event === 'error' && data.length > 0) {\n\t\t\tconst parsed = safeJson(data)\n\t\t\tif (isPlainObject(parsed)) {\n\t\t\t\tif (isString(parsed['error'])) error = parsed['error']\n\t\t\t\tif (isString(parsed['code'])) error_code = parsed['code']\n\t\t\t} else {\n\t\t\t\terror = data\n\t\t\t}\n\t\t}\n\t}\n\n\tconst out: ParsedExecStream = {\n\t\tstdout: stdoutChunks.join(''),\n\t\tstderr: stderrChunks.join('')\n\t}\n\tif (exit_code !== undefined) out.exit_code = exit_code\n\tif (error !== undefined) out.error = error\n\tif (error_code !== undefined) out.error_code = error_code\n\treturn out\n}\n\nfunction decodeBase64Chunk(data: string): string {\n\ttry {\n\t\t// Bun/Node Buffer or atob\n\t\tif (typeof Buffer !== 'undefined') {\n\t\t\treturn Buffer.from(data, 'base64').toString('utf8')\n\t\t}\n\t\tconst binary = atob(data)\n\t\tconst bytes = new Uint8Array(binary.length)\n\t\tfor (let i = 0; i < binary.length; i += 1) bytes[i] = binary.charCodeAt(i)\n\t\treturn new TextDecoder().decode(bytes)\n\t} catch {\n\t\treturn data\n\t}\n}\n\nfunction safeJson(text: string): unknown {\n\ttry {\n\t\tconst value: unknown = JSON.parse(text)\n\t\treturn value\n\t} catch {\n\t\treturn undefined\n\t}\n}\n\nexport type InterpreterLanguage = 'python' | 'javascript' | 'typescript'\n\n/** Cloudflare interpreter `runCode` JSON. https://developers.cloudflare.com/sandbox/api/interpreter/ */\nconst runCodePayloadSchema = z.object({\n\tlogs: z.object({\n\t\tstdout: z.array(z.string()),\n\t\tstderr: z.array(z.string())\n\t}),\n\terror: z\n\t\t.object({\n\t\t\tname: z.string(),\n\t\t\tvalue: z.string()\n\t\t})\n\t\t.optional()\n})\n\nexport type ParsedRunCode = {\n\tstdout: string\n\tstderr: string\n\tsuccess: boolean\n\texit_code: number\n\terror?: string\n}\n\nexport function parseRunCodePayload(data: unknown): ParsedRunCode {\n\tconst parsed = runCodePayloadSchema.safeParse(data)\n\tif (!parsed.success) {\n\t\tthrow new ToolError('Unexpected run-code response', { code: 'upstream' })\n\t}\n\tconst { logs, error } = parsed.data\n\tconst out: ParsedRunCode = {\n\t\tstdout: logs.stdout.join(''),\n\t\tstderr: logs.stderr.join(''),\n\t\tsuccess: error === undefined,\n\t\texit_code: error === undefined ? 0 : 1\n\t}\n\tif (error) out.error = error.value\n\treturn out\n}\n\nconst createCodeContextPayloadSchema = z.object({\n\tid: z.string().min(1),\n\tcwd: z.string().min(1).optional()\n})\n\nexport function parseCreateCodeContextPayload(data: unknown): { id: string; cwd?: string } {\n\tconst parsed = createCodeContextPayloadSchema.safeParse(data)\n\tif (!parsed.success) {\n\t\tthrow new ToolError('Unexpected create code context response', { code: 'upstream' })\n\t}\n\treturn {\n\t\tid: parsed.data.id,\n\t\t...(parsed.data.cwd && { cwd: parsed.data.cwd })\n\t}\n}\n\nconst listCodeContextsPayloadSchema = z.object({\n\tcontexts: z.array(\n\t\tz.object({\n\t\t\tid: z.string().min(1),\n\t\t\tlanguage: z.string().min(1).optional(),\n\t\t\tcwd: z.string().min(1).optional()\n\t\t})\n\t)\n})\n\nexport function parseListCodeContextsPayload(data: unknown): ListCodeContextsOutput['contexts'] {\n\tconst parsed = listCodeContextsPayloadSchema.safeParse(data)\n\tif (!parsed.success) {\n\t\tthrow new ToolError('Unexpected list code contexts response', { code: 'upstream' })\n\t}\n\treturn parsed.data.contexts.map((row) => ({\n\t\tcontext_id: row.id,\n\t\t...(row.language && { language: row.language }),\n\t\t...(row.cwd && { cwd: row.cwd })\n\t}))\n}\n","/**\n * Cloudflare Sandbox Bridge vendor client (HttpService + Bearer).\n * Host: `new CloudflareSandboxClient(auth)`. Agent: `fromContext(ctx)`.\n * Gold: `src/vendors/resend/client.ts` + messaging ArtifactRef storage pattern.\n * @see https://developers.cloudflare.com/sandbox/bridge/http-api/\n */\n\nimport { isPlainObject, isString, trimEnd } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { bytesToBase64, bytesToUtf8, toArrayBuffer } from '../../shared/bytes'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport { S3Client } from '../s3'\nimport type {\n\tCloudflareSandboxAuth,\n\tCreateBridgeSessionOutput,\n\tCreateCodeContextInput,\n\tCreateCodeContextOutput,\n\tCreateSandboxOutput,\n\tDeleteBridgeSessionInput,\n\tDeleteBridgeSessionOutput,\n\tDeleteCodeContextInput,\n\tDeleteCodeContextOutput,\n\tDestroySandboxOutput,\n\tExecInput,\n\tExecOutput,\n\tExecuteCodeInput,\n\tExportArtifactInput,\n\tExportArtifactOutput,\n\tHealthOutput,\n\tImportArtifactInput,\n\tImportArtifactOutput,\n\tListCodeContextsOutput,\n\tListFilesInput,\n\tListFilesOutput,\n\tMountBucketInput,\n\tMountBucketOutput,\n\tReadFileInput,\n\tReadFileOutput,\n\tReadFilesInput,\n\tReadFilesOutput,\n\tRemoveFilesInput,\n\tRemoveFilesOutput,\n\tRunCodeInput,\n\tRunningOutput,\n\tSandboxIdInput,\n\tUnmountBucketInput,\n\tUnmountBucketOutput,\n\tWriteFileInput,\n\tWriteFileOutput,\n\tWriteFilesInput,\n\tWriteFilesOutput\n} from './contracts'\nimport {\n\tDEFAULT_EXEC_TIMEOUT_MS,\n\tMAX_FILE_BYTES,\n\tMAX_LIST_FILES,\n\tcloudflareSandboxAuthSchema,\n\tmountBucketInputSchema,\n\tunmountBucketInputSchema\n} from './contracts'\nimport {\n\tparseCreateCodeContextPayload,\n\tparseExecSse,\n\tparseListCodeContextsPayload,\n\tparseRunCodePayload,\n\tresolveWriteFileBytes,\n\tshellQuote,\n\tworkspaceAbsolutePath,\n\tworkspaceFileKey\n} from './domain'\nimport type { InterpreterLanguage } from './domain'\n\nexport type CloudflareSandboxClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nconst sandboxApiPath = '/v1/sandbox'\n\nexport class CloudflareSandboxClient {\n\treadonly #http: HttpService\n\treadonly #storage: S3Client | undefined\n\t/** Optional S3 auth fields for endpoint mount credential fallback (Mastra workspace FS). */\n\treadonly #storageAuth:\n\t\t| {\n\t\t\t\taccess_key_id: string\n\t\t\t\tsecret_access_key: string\n\t\t\t\tendpoint?: string | undefined\n\t\t }\n\t\t| undefined\n\t/** sandbox_id:language → interpreter context id (Node/Python stay loaded). */\n\treadonly #contexts = new Map<string, string>()\n\treadonly #pendingContexts = new Map<string, Promise<string>>()\n\n\tconstructor(auth: CloudflareSandboxAuth, options: CloudflareSandboxClientOptions = {}) {\n\t\tconst parsed = cloudflareSandboxAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Cloudflare Sandbox auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#http = new HttpService({\n\t\t\tbaseURL: trimEnd(parsed.data.base_url, '/'),\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${parsed.data.api_key}`\n\t\t\t},\n\t\t\ttimeout: 120_000,\n\t\t\tlabel: 'Cloudflare Sandbox',\n\t\t\t...(options.fetch && { fetch: options.fetch }),\n\t\t\t...(options.signal && { signal: options.signal })\n\t\t})\n\t\tthis.#storage = parsed.data.storage\n\t\t\t? new S3Client(parsed.data.storage, {\n\t\t\t\t\t...(options.fetch && { fetch: options.fetch }),\n\t\t\t\t\t...(options.signal && { signal: options.signal })\n\t\t\t\t})\n\t\t\t: undefined\n\t\tthis.#storageAuth = parsed.data.storage\n\t\t\t? {\n\t\t\t\t\taccess_key_id: parsed.data.storage.access_key_id,\n\t\t\t\t\tsecret_access_key: parsed.data.storage.secret_access_key,\n\t\t\t\t\t...(parsed.data.storage.endpoint && { endpoint: parsed.data.storage.endpoint })\n\t\t\t\t}\n\t\t\t: undefined\n\t}\n\n\tstatic fromContext(ctx: ToolContext): CloudflareSandboxClient {\n\t\treturn new CloudflareSandboxClient(requireAuth(ctx, cloudflareSandboxAuthSchema), {\n\t\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t\t...(ctx.signal && { signal: ctx.signal })\n\t\t})\n\t}\n\n\t/** Liveness probe on the bridge. */\n\tasync health(): Promise<HealthOutput> {\n\t\tconst { data } = await this.#http.get('/health', {\n\t\t\tlabel: 'Cloudflare Sandbox health'\n\t\t})\n\t\tif (isPlainObject(data) && data['ok'] === true) return { ok: true }\n\t\tif (isPlainObject(data) && data['ok'] === false) return { ok: false }\n\t\treturn { ok: true }\n\t}\n\n\tasync create(): Promise<CreateSandboxOutput> {\n\t\tconst { data } = await this.#http.post(sandboxApiPath, undefined, {\n\t\t\tlabel: 'Cloudflare Sandbox create'\n\t\t})\n\t\tif (!isPlainObject(data) || !isString(data['id'])) {\n\t\t\tthrow new ToolError('Unexpected create sandbox response', { code: 'upstream' })\n\t\t}\n\t\treturn { sandbox_id: data['id'] }\n\t}\n\n\tasync destroy(input: SandboxIdInput): Promise<DestroySandboxOutput> {\n\t\tawait this.#http.delete(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}`, {\n\t\t\tlabel: 'Cloudflare Sandbox destroy'\n\t\t})\n\t\tthis.#forgetSandboxContexts(input.sandbox_id)\n\t\treturn { sandbox_id: input.sandbox_id, destroyed: true }\n\t}\n\n\tasync running(input: SandboxIdInput): Promise<RunningOutput> {\n\t\tconst { data } = await this.#http.get(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/running`, {\n\t\t\tlabel: 'Cloudflare Sandbox running'\n\t\t})\n\t\tif (!isPlainObject(data) || typeof data['running'] !== 'boolean') {\n\t\t\tthrow new ToolError('Unexpected running response', { code: 'upstream' })\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, running: data['running'] }\n\t}\n\n\t/**\n\t * Run a command. Bridge returns text/event-stream (stdout/stderr base64 + exit).\n\t * Uses HttpService.bytes so ofetch does not try to JSON-parse the SSE body.\n\t * Optional onStdout/onStderr fire while walking the buffered SSE (not true wire streaming).\n\t */\n\tasync exec(\n\t\tinput: ExecInput,\n\t\tstream: { onStdout?: (chunk: string) => void; onStderr?: (chunk: string) => void } = {}\n\t): Promise<ExecOutput> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\targv: input.argv,\n\t\t\ttimeout_ms: input.timeout_ms ?? DEFAULT_EXEC_TIMEOUT_MS\n\t\t}\n\t\tif (input.cwd) body['cwd'] = input.cwd\n\t\tif (input.env && Object.keys(input.env).length > 0) body['env'] = input.env\n\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/json',\n\t\t\tAccept: 'text/event-stream'\n\t\t}\n\t\tif (input.session_id) headers['Session-Id'] = input.session_id\n\n\t\tconst { bytes } = await this.#http.bytes('POST', `${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/exec`, {\n\t\t\tbody,\n\t\t\theaders,\n\t\t\tlabel: 'Cloudflare Sandbox exec'\n\t\t})\n\t\tconst text = new TextDecoder().decode(bytes)\n\t\tconst parsed = parseExecSse(text, {\n\t\t\t...(stream.onStdout && { onStdout: stream.onStdout }),\n\t\t\t...(stream.onStderr && { onStderr: stream.onStderr })\n\t\t})\n\t\tif (parsed.error && parsed.exit_code === undefined) {\n\t\t\tthrow new ToolError(parsed.error, {\n\t\t\t\tcode: 'upstream',\n\t\t\t\tdetails: {\n\t\t\t\t\t...(parsed.error_code && { error_code: parsed.error_code }),\n\t\t\t\t\tsandbox_id: input.sandbox_id\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tconst exit_code = parsed.exit_code ?? (parsed.error ? 1 : 0)\n\t\tconst out: ExecOutput = {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tstdout: parsed.stdout,\n\t\t\tstderr: parsed.stderr,\n\t\t\texit_code,\n\t\t\tsuccess: exit_code === 0\n\t\t}\n\t\tif (parsed.error) out.error = parsed.error\n\t\tif (parsed.error_code) out.error_code = parsed.error_code\n\t\treturn out\n\t}\n\n\tasync executeCode(input: ExecuteCodeInput): Promise<ExecOutput> {\n\t\tconst language = input.language ?? 'python'\n\t\tconst context_id = input.context_id ?? (await this.#ensureCodeContext(input.sandbox_id, language))\n\t\treturn this.runCode({\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tcode: input.code,\n\t\t\tcontext_id,\n\t\t\tlanguage,\n\t\t\t...(input.timeout_ms !== undefined && { timeout_ms: input.timeout_ms })\n\t\t})\n\t}\n\n\tasync createCodeContext(input: CreateCodeContextInput): Promise<CreateCodeContextOutput> {\n\t\tconst language = input.language ?? 'python'\n\t\tconst { data } = await this.#http.post(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context`,\n\t\t\t{\n\t\t\t\tlanguage,\n\t\t\t\t...(input.cwd && { cwd: input.cwd }),\n\t\t\t\t...(input.env && Object.keys(input.env).length > 0 && { env: input.env }),\n\t\t\t\t...(input.timeout_ms !== undefined && { timeout_ms: input.timeout_ms })\n\t\t\t},\n\t\t\t{ label: 'Cloudflare Sandbox createCodeContext' }\n\t\t)\n\t\tconst row = parseCreateCodeContextPayload(data)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tcontext_id: row.id,\n\t\t\tlanguage,\n\t\t\t...(row.cwd && { cwd: row.cwd })\n\t\t}\n\t}\n\n\tasync listCodeContexts(input: SandboxIdInput): Promise<ListCodeContextsOutput> {\n\t\tconst { data } = await this.#http.get(`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context`, {\n\t\t\tlabel: 'Cloudflare Sandbox listCodeContexts'\n\t\t})\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tcontexts: parseListCodeContextsPayload(data)\n\t\t}\n\t}\n\n\tasync deleteCodeContext(input: DeleteCodeContextInput): Promise<DeleteCodeContextOutput> {\n\t\tawait this.#http.delete(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/context/${encodeURIComponent(input.context_id)}`,\n\t\t\t{ label: 'Cloudflare Sandbox deleteCodeContext' }\n\t\t)\n\t\tconst prefix = `${input.sandbox_id}:`\n\t\tfor (const [key, contextId] of this.#contexts) {\n\t\t\tif (contextId === input.context_id && key.startsWith(prefix)) this.#contexts.delete(key)\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, context_id: input.context_id, deleted: true }\n\t}\n\n\tasync runCode(input: RunCodeInput): Promise<ExecOutput> {\n\t\tconst { data } = await this.#http.post(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/run-code`,\n\t\t\t{\n\t\t\t\tcode: input.code,\n\t\t\t\t...(input.context_id && { context_id: input.context_id }),\n\t\t\t\t...(input.language && { language: input.language }),\n\t\t\t\t...(input.timeout_ms !== undefined && { timeout_ms: input.timeout_ms })\n\t\t\t},\n\t\t\t{ label: 'Cloudflare Sandbox runCode' }\n\t\t)\n\t\tconst parsed = parseRunCodePayload(data)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tstdout: parsed.stdout,\n\t\t\tstderr: parsed.stderr,\n\t\t\texit_code: parsed.exit_code,\n\t\t\tsuccess: parsed.success,\n\t\t\t...(parsed.error && { error: parsed.error })\n\t\t}\n\t}\n\n\tasync writeFile(input: WriteFileInput): Promise<WriteFileOutput> {\n\t\tconst bytes = resolveWriteFileBytes(input)\n\t\tawait this.#putFileBytes(input.sandbox_id, input.path, bytes, input.session_id)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tpath: input.path,\n\t\t\tok: true,\n\t\t\tbyte_length: bytes.byteLength\n\t\t}\n\t}\n\n\tasync readFile(input: ReadFileInput): Promise<ReadFileOutput> {\n\t\tconst bytes = await this.#getFileBytes(input.sandbox_id, input.path, input.session_id)\n\t\tconst encoding = input.encoding ?? 'utf8'\n\t\tconst out: ReadFileOutput = {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tpath: input.path,\n\t\t\tbyte_length: bytes.byteLength\n\t\t}\n\t\tif (encoding === 'base64') {\n\t\t\tout.body_base64 = bytesToBase64(bytes)\n\t\t} else {\n\t\t\tout.text = bytesToUtf8(bytes)\n\t\t}\n\t\treturn out\n\t}\n\n\tasync writeFiles(input: WriteFilesInput): Promise<WriteFilesOutput> {\n\t\tconst paths: string[] = []\n\t\tfor (const file of input.files) {\n\t\t\tawait this.writeFile({\n\t\t\t\tsandbox_id: input.sandbox_id,\n\t\t\t\tpath: file.path,\n\t\t\t\t...(file.text !== undefined && { text: file.text }),\n\t\t\t\t...(file.body_base64 !== undefined && { body_base64: file.body_base64 }),\n\t\t\t\t...(input.session_id && { session_id: input.session_id })\n\t\t\t})\n\t\t\tpaths.push(file.path)\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, paths, ok: true }\n\t}\n\n\tasync readFiles(input: ReadFilesInput): Promise<ReadFilesOutput> {\n\t\tconst files: ReadFilesOutput['files'] = []\n\t\tfor (const path of input.paths) {\n\t\t\tconst row = await this.readFile({\n\t\t\t\tsandbox_id: input.sandbox_id,\n\t\t\t\tpath,\n\t\t\t\t...(input.encoding && { encoding: input.encoding }),\n\t\t\t\t...(input.session_id && { session_id: input.session_id })\n\t\t\t})\n\t\t\tfiles.push({\n\t\t\t\tpath: row.path,\n\t\t\t\t...(row.text !== undefined && { text: row.text }),\n\t\t\t\t...(row.body_base64 !== undefined && { body_base64: row.body_base64 }),\n\t\t\t\t...(row.byte_length !== undefined && { byte_length: row.byte_length })\n\t\t\t})\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, files }\n\t}\n\n\t/** List files via find in the workspace (bridge has no list route). */\n\tasync listFiles(input: ListFilesInput): Promise<ListFilesOutput> {\n\t\tconst dir = input.directory_path?.trim() || '/workspace'\n\t\tconst abs = dir.startsWith('/') ? dir : workspaceAbsolutePath(dir)\n\t\tconst out = await this.exec({\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\targv: ['sh', '-lc', `find ${shellQuote(abs)} -maxdepth 4 -type f 2>/dev/null | head -n ${MAX_LIST_FILES}`],\n\t\t\t...(input.session_id && { session_id: input.session_id })\n\t\t})\n\t\tconst paths = out.stdout\n\t\t\t.split('\\n')\n\t\t\t.map((line) => line.trim())\n\t\t\t.filter((line) => line.length > 0)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tpaths,\n\t\t\traw: { stdout: out.stdout, stderr: out.stderr, exit_code: out.exit_code }\n\t\t}\n\t}\n\n\t/** Remove files via rm (bridge has no delete-file route). */\n\tasync removeFiles(input: RemoveFilesInput): Promise<RemoveFilesOutput> {\n\t\tfor (const path of input.paths) {\n\t\t\tconst abs = path.startsWith('/') ? path : workspaceAbsolutePath(path)\n\t\t\tawait this.exec({\n\t\t\t\tsandbox_id: input.sandbox_id,\n\t\t\t\targv: ['rm', '-f', '--', abs],\n\t\t\t\t...(input.session_id && { session_id: input.session_id })\n\t\t\t})\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, paths: input.paths, ok: true }\n\t}\n\n\t/**\n\t * Copy an object-store ArtifactRef into the sandbox workspace.\n\t * Requires auth.storage.\n\t */\n\tasync importArtifact(input: ImportArtifactInput): Promise<ImportArtifactOutput> {\n\t\tconst storage = this.#requireStorage('importArtifact')\n\t\tif (input.source.store !== 'object') {\n\t\t\tthrow new ToolError('Sandbox importArtifact only supports store=object ArtifactRefs', {\n\t\t\t\tcode: 'bad_input'\n\t\t\t})\n\t\t}\n\t\tconst bytes = await storage.getBytes(input.source.key, { maxBytes: MAX_FILE_BYTES })\n\t\tawait this.#putFileBytes(input.sandbox_id, input.path, bytes, input.session_id)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tpath: input.path,\n\t\t\tok: true,\n\t\t\tbyte_length: bytes.byteLength\n\t\t}\n\t}\n\n\t/**\n\t * Copy a sandbox workspace file to object storage and return an ArtifactRef.\n\t * Requires auth.storage.\n\t */\n\tasync exportArtifact(input: ExportArtifactInput): Promise<ExportArtifactOutput> {\n\t\tconst storage = this.#requireStorage('exportArtifact')\n\t\tconst bytes = await this.#getFileBytes(input.sandbox_id, input.path, input.session_id)\n\t\tawait storage.putBytes(input.destination_key, bytes)\n\t\treturn {\n\t\t\tsandbox_id: input.sandbox_id,\n\t\t\tpath: input.path,\n\t\t\tartifact: {\n\t\t\t\tstore: 'object',\n\t\t\t\tkey: input.destination_key,\n\t\t\t\tbyte_length: bytes.byteLength\n\t\t\t}\n\t\t}\n\t}\n\n\tasync createSession(input: SandboxIdInput): Promise<CreateBridgeSessionOutput> {\n\t\tconst { data } = await this.#http.post(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/session`,\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tlabel: 'Cloudflare Sandbox createSession'\n\t\t\t}\n\t\t)\n\t\tif (!isPlainObject(data) || !isString(data['id'])) {\n\t\t\tthrow new ToolError('Unexpected create session response', { code: 'upstream' })\n\t\t}\n\t\treturn { sandbox_id: input.sandbox_id, session_id: data['id'] }\n\t}\n\n\tasync deleteSession(input: DeleteBridgeSessionInput): Promise<DeleteBridgeSessionOutput> {\n\t\tawait this.#http.delete(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(input.sandbox_id)}/session/${encodeURIComponent(input.session_id)}`,\n\t\t\t{ label: 'Cloudflare Sandbox deleteSession' }\n\t\t)\n\t\treturn { sandbox_id: input.sandbox_id, session_id: input.session_id, deleted: true }\n\t}\n\n\t/**\n\t * Mount an S3-compatible bucket (or Worker R2 binding) at an absolute path in the sandbox.\n\t * Bridge: `POST /v1/sandbox/:id/mount`.\n\t * For Mastra / host workspace S3 FS: pass `endpoint` + credentials (or rely on auth.storage).\n\t * @see https://developers.cloudflare.com/sandbox/bridge/http-api/#bucket-mounts\n\t */\n\tasync mount(input: MountBucketInput): Promise<MountBucketOutput> {\n\t\tconst parsed = mountBucketInputSchema.safeParse(input)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid sandbox mount input', {\n\t\t\t\tcode: 'bad_input',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tconst data = parsed.data\n\t\tif (data.local_bucket && data.endpoint) {\n\t\t\tthrow new ToolError('local_bucket and endpoint are mutually exclusive on mount', { code: 'bad_input' })\n\t\t}\n\t\tif (data.prefix !== undefined && !data.prefix.startsWith('/')) {\n\t\t\tthrow new ToolError('mount prefix must start with /', { code: 'bad_input' })\n\t\t}\n\n\t\t// Endpoint mounts only: omit endpoint for Worker R2 binding mounts.\n\t\tconst endpoint = data.local_bucket ? undefined : data.endpoint\n\t\t// Credentials: explicit input, else auth.storage when doing an endpoint mount (Mastra S3 FS).\n\t\tconst accessKeyId = data.access_key_id ?? (endpoint !== undefined ? this.#storageAuth?.access_key_id : undefined)\n\t\tconst secretAccessKey =\n\t\t\tdata.secret_access_key ?? (endpoint !== undefined ? this.#storageAuth?.secret_access_key : undefined)\n\n\t\tconst options: Record<string, unknown> = {}\n\t\tif (endpoint) options['endpoint'] = endpoint\n\t\tif (data.provider) options['provider'] = data.provider\n\t\tif (data.read_only !== undefined) options['readOnly'] = data.read_only\n\t\tif (data.prefix) options['prefix'] = data.prefix\n\t\tif (data.credential_proxy !== undefined) options['credentialProxy'] = data.credential_proxy\n\t\tif (data.local_bucket) options['localBucket'] = true\n\t\tif (data.s3fs_options && data.s3fs_options.length > 0) options['s3fsOptions'] = data.s3fs_options\n\t\tif (endpoint && accessKeyId && secretAccessKey) {\n\t\t\toptions['credentials'] = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey\n\t\t\t}\n\t\t}\n\n\t\tconst body: Record<string, unknown> = {\n\t\t\tmountPath: data.mount_path,\n\t\t\toptions\n\t\t}\n\t\tif (endpoint) body['bucket'] = data.bucket\n\t\telse body['binding'] = data.bucket\n\n\t\tawait this.#http.post(`${sandboxApiPath}/${encodeURIComponent(data.sandbox_id)}/mount`, body, {\n\t\t\tlabel: 'Cloudflare Sandbox mount'\n\t\t})\n\t\treturn {\n\t\t\tsandbox_id: data.sandbox_id,\n\t\t\tbucket: data.bucket,\n\t\t\tmount_path: data.mount_path,\n\t\t\tok: true\n\t\t}\n\t}\n\n\t/**\n\t * Unmount a previously mounted bucket path.\n\t * Bridge: `POST /v1/sandbox/:id/unmount` with `{ mountPath }`.\n\t * Mounts are also cleared when the sandbox is destroyed.\n\t */\n\tasync unmount(input: UnmountBucketInput): Promise<UnmountBucketOutput> {\n\t\tconst parsed = unmountBucketInputSchema.safeParse(input)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid sandbox unmount input', {\n\t\t\t\tcode: 'bad_input',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tconst data = parsed.data\n\t\tawait this.#http.post(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(data.sandbox_id)}/unmount`,\n\t\t\t{ mountPath: data.mount_path },\n\t\t\t{ label: 'Cloudflare Sandbox unmount' }\n\t\t)\n\t\treturn {\n\t\t\tsandbox_id: data.sandbox_id,\n\t\t\tmount_path: data.mount_path,\n\t\t\tok: true\n\t\t}\n\t}\n\n\tasync #ensureCodeContext(sandboxId: string, language: InterpreterLanguage): Promise<string> {\n\t\tconst key = `${sandboxId}:${language}`\n\t\tconst cached = this.#contexts.get(key)\n\t\tif (cached) return cached\n\t\tconst pending = this.#pendingContexts.get(key)\n\t\tif (pending) return pending\n\t\tconst created = this.createCodeContext({ sandbox_id: sandboxId, language })\n\t\t\t.then((row) => {\n\t\t\t\tthis.#contexts.set(key, row.context_id)\n\t\t\t\treturn row.context_id\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.#pendingContexts.delete(key)\n\t\t\t})\n\t\tthis.#pendingContexts.set(key, created)\n\t\treturn created\n\t}\n\n\t#forgetSandboxContexts(sandboxId: string): void {\n\t\tconst prefix = `${sandboxId}:`\n\t\tfor (const key of this.#contexts.keys()) {\n\t\t\tif (key.startsWith(prefix)) this.#contexts.delete(key)\n\t\t}\n\t\tfor (const key of this.#pendingContexts.keys()) {\n\t\t\tif (key.startsWith(prefix)) this.#pendingContexts.delete(key)\n\t\t}\n\t}\n\n\t#requireStorage(op: string): S3Client {\n\t\tif (!this.#storage) {\n\t\t\tthrow new ToolError(`${op} requires storage credentials on sandbox auth`, {\n\t\t\t\tcode: 'bad_auth'\n\t\t\t})\n\t\t}\n\t\treturn this.#storage\n\t}\n\n\tasync #putFileBytes(\n\t\tsandboxId: string,\n\t\tpath: string,\n\t\tbytes: Uint8Array,\n\t\tsessionId: string | undefined\n\t): Promise<void> {\n\t\tconst key = workspaceFileKey(path)\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/octet-stream'\n\t\t}\n\t\tif (sessionId) headers['Session-Id'] = sessionId\n\t\tconst { data } = await this.#http.put(\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(sandboxId)}/file/${key.split('/').map(encodeURIComponent).join('/')}`,\n\t\t\ttoArrayBuffer(bytes),\n\t\t\t{ headers, label: 'Cloudflare Sandbox writeFile' }\n\t\t)\n\t\tif (isPlainObject(data) && data['ok'] === false) {\n\t\t\tthrow new ToolError('Sandbox writeFile failed', { code: 'upstream' })\n\t\t}\n\t}\n\n\tasync #getFileBytes(sandboxId: string, path: string, sessionId: string | undefined): Promise<Uint8Array> {\n\t\tconst key = workspaceFileKey(path)\n\t\tconst headers: Record<string, string> = {}\n\t\tif (sessionId) headers['Session-Id'] = sessionId\n\t\tconst { bytes } = await this.#http.bytes(\n\t\t\t'GET',\n\t\t\t`${sandboxApiPath}/${encodeURIComponent(sandboxId)}/file/${key.split('/').map(encodeURIComponent).join('/')}`,\n\t\t\t{ headers, label: 'Cloudflare Sandbox readFile', maxBytes: MAX_FILE_BYTES }\n\t\t)\n\t\treturn bytes\n\t}\n}\n","import { z } from 'zod'\n\nimport { defineModule, defineTool } from '../../core/define'\nimport { CloudflareSandboxClient } from './client'\nimport {\n\tcloudflareSandboxAuthSchema,\n\tcreateBridgeSessionOutputSchema,\n\tcreateSandboxOutputSchema,\n\tdeleteBridgeSessionInputSchema,\n\tdeleteBridgeSessionOutputSchema,\n\tdestroySandboxOutputSchema,\n\texecInputSchema,\n\texecOutputSchema,\n\texecuteCodeInputSchema,\n\texportArtifactInputSchema,\n\texportArtifactOutputSchema,\n\thealthOutputSchema,\n\timportArtifactInputSchema,\n\timportArtifactOutputSchema,\n\tlistFilesInputSchema,\n\tlistFilesOutputSchema,\n\treadFileInputSchema,\n\treadFileOutputSchema,\n\treadFilesInputSchema,\n\treadFilesOutputSchema,\n\tremoveFilesInputSchema,\n\tremoveFilesOutputSchema,\n\trunningOutputSchema,\n\tsandboxIdInputSchema,\n\twriteFileInputSchema,\n\twriteFileOutputSchema,\n\twriteFilesInputSchema,\n\twriteFilesOutputSchema\n} from './contracts'\n\nconst id = 'cloudflare-sandbox'\nconst emptyInputSchema = z.object({})\n\nexport const cloudflareSandboxHealthTool = defineTool({\n\tid: `${id}-health`,\n\tname: 'cloudflareSandboxHealth',\n\tdescription:\n\t\t'Check whether the Cloudflare Sandbox bridge is reachable. Use only for explicit availability diagnostics; ordinary sandbox work should begin with cloudflare-sandbox-create.',\n\tinputSchema: emptyInputSchema,\n\toutputSchema: healthOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (_input, ctx) => CloudflareSandboxClient.fromContext(ctx).health()\n})\n\nexport const cloudflareSandboxCreateTool = defineTool({\n\tid: `${id}-create`,\n\tname: 'cloudflareSandboxCreate',\n\tdescription:\n\t\t'Create an isolated Cloudflare sandbox and return sandbox_id. Use only when arbitrary code, commands, or temporary files are required and no purpose-built tool covers the task. Do not create a sandbox to build or edit supported deliverables.',\n\tinputSchema: emptyInputSchema,\n\toutputSchema: createSandboxOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (_input, ctx) => CloudflareSandboxClient.fromContext(ctx).create()\n})\n\nexport const cloudflareSandboxDestroyTool = defineTool({\n\tid: `${id}-destroy`,\n\tname: 'cloudflareSandboxDestroy',\n\tdescription:\n\t\t'Destroy a Cloudflare sandbox by sandbox_id and release its temporary files and resources. Call after the sandbox workflow is complete and any required output file has been exported.',\n\tinputSchema: sandboxIdInputSchema,\n\toutputSchema: destroySandboxOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).destroy(input)\n})\n\nexport const cloudflareSandboxRunningTool = defineTool({\n\tid: `${id}-running`,\n\tname: 'cloudflareSandboxRunning',\n\tdescription:\n\t\t'Check whether a Cloudflare sandbox is currently running. Use before continuing work on an existing sandbox_id; this does not execute code or inspect files.',\n\tinputSchema: sandboxIdInputSchema,\n\toutputSchema: runningOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).running(input)\n})\n\nexport const cloudflareSandboxExecTool = defineTool({\n\tid: `${id}-exec`,\n\tname: 'cloudflareSandboxExec',\n\tdescription:\n\t\t'One-shot argv exec in a Cloudflare sandbox (stdout/stderr/exit_code). Prefer a host workspace agent for multi-step shell; use tools for workflow one-shots. Optional env when the bridge supports it.',\n\tinputSchema: execInputSchema,\n\toutputSchema: execOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\ttags: ['exec', 'one-shot', 'compute'],\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).exec(input)\n})\n\nexport const cloudflareSandboxExecuteCodeTool = defineTool({\n\tid: `${id}-execute-code`,\n\tname: 'cloudflareSandboxExecuteCode',\n\tdescription:\n\t\t'Execute Python, JavaScript, or TypeScript in a Cloudflare sandbox interpreter context. Imports and variables stay loaded on later calls. Use exec for shell. Use as a fallback for computation or automation with no dedicated tool. Do not generate or edit supported documents, spreadsheets, presentations, PDFs, or images here when a purpose-built tool is available.',\n\tinputSchema: executeCodeInputSchema,\n\toutputSchema: execOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).executeCode(input)\n})\n\nexport const cloudflareSandboxWriteFileTool = defineTool({\n\tid: `${id}-write-file`,\n\tname: 'cloudflareSandboxWriteFile',\n\tdescription:\n\t\t'Write one temporary file under the Cloudflare sandbox workspace from UTF-8 text or base64 bytes, up to 32 MiB decoded. Use for sandbox intermediates. This is not durable delivery; export a genuinely sandbox-produced final file with cloudflare-sandbox-export-artifact.',\n\tinputSchema: writeFileInputSchema,\n\toutputSchema: writeFileOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).writeFile(input)\n})\n\nexport const cloudflareSandboxReadFileTool = defineTool({\n\tid: `${id}-read-file`,\n\tname: 'cloudflareSandboxReadFile',\n\tdescription:\n\t\t'Read one temporary file from the Cloudflare sandbox workspace as UTF-8 or base64. Use for sandbox intermediates; use format-aware readers for supported ArtifactRefs.',\n\tinputSchema: readFileInputSchema,\n\toutputSchema: readFileOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).readFile(input)\n})\n\nexport const cloudflareSandboxWriteFilesTool = defineTool({\n\tid: `${id}-write-files`,\n\tname: 'cloudflareSandboxWriteFiles',\n\tdescription:\n\t\t'Write multiple temporary files under the Cloudflare sandbox workspace from text or base64. Use for sandbox intermediates, not final document generation. Export only a final file that the sandbox genuinely had to produce.',\n\tinputSchema: writeFilesInputSchema,\n\toutputSchema: writeFilesOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).writeFiles(input)\n})\n\nexport const cloudflareSandboxReadFilesTool = defineTool({\n\tid: `${id}-read-files`,\n\tname: 'cloudflareSandboxReadFiles',\n\tdescription:\n\t\t'Read multiple temporary files from the Cloudflare sandbox workspace as UTF-8 or base64. Use only within an active sandbox workflow; use format-aware readers for supported ArtifactRefs.',\n\tinputSchema: readFilesInputSchema,\n\toutputSchema: readFilesOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).readFiles(input)\n})\n\nexport const cloudflareSandboxListFilesTool = defineTool({\n\tid: `${id}-list-files`,\n\tname: 'cloudflareSandboxListFiles',\n\tdescription:\n\t\t'List temporary files under a Cloudflare sandbox directory, defaulting to /workspace. Use to locate sandbox intermediates, not durable workspace files or ArtifactRefs.',\n\tinputSchema: listFilesInputSchema,\n\toutputSchema: listFilesOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).listFiles(input)\n})\n\nexport const cloudflareSandboxRemoveFilesTool = defineTool({\n\tid: `${id}-remove-files`,\n\tname: 'cloudflareSandboxRemoveFiles',\n\tdescription:\n\t\t'Remove temporary files from the Cloudflare sandbox workspace by path. Use only for sandbox cleanup; this does not delete durable workspace files or ArtifactRefs.',\n\tinputSchema: removeFilesInputSchema,\n\toutputSchema: removeFilesOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).removeFiles(input)\n})\n\nexport const cloudflareSandboxImportArtifactTool = defineTool({\n\tid: `${id}-import-artifact`,\n\tname: 'cloudflareSandboxImportArtifact',\n\tdescription:\n\t\t'Copy an existing object-store ArtifactRef into a Cloudflare sandbox workspace. Use only when arbitrary sandbox computation must consume that file. Do not import a supported document merely to read or edit it with general code.',\n\tinputSchema: importArtifactInputSchema,\n\toutputSchema: importArtifactOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).importArtifact(input)\n})\n\nexport const cloudflareSandboxExportArtifactTool = defineTool({\n\tid: `${id}-export-artifact`,\n\tname: 'cloudflareSandboxExportArtifact',\n\tdescription:\n\t\t'Persist a final file that was genuinely created inside the Cloudflare sandbox and return its ArtifactRef for delivery. Use only after sandbox work. Do not call for files returned by document, presentation, PDF, image, render, or conversion tools; those ArtifactRefs are already final.',\n\tinputSchema: exportArtifactInputSchema,\n\toutputSchema: exportArtifactOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).exportArtifact(input)\n})\n\nexport const cloudflareSandboxCreateSessionTool = defineTool({\n\tid: `${id}-create-session`,\n\tname: 'cloudflareSandboxCreateSession',\n\tdescription:\n\t\t'Create an isolated execution session inside an existing Cloudflare sandbox and return session_id. Use only when separate working directories or runtime state are needed; pass the id to later command and file calls.',\n\tinputSchema: sandboxIdInputSchema,\n\toutputSchema: createBridgeSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).createSession(input)\n})\n\nexport const cloudflareSandboxDeleteSessionTool = defineTool({\n\tid: `${id}-delete-session`,\n\tname: 'cloudflareSandboxDeleteSession',\n\tdescription:\n\t\t'Delete an isolated execution session inside a Cloudflare sandbox. Use after session-specific work is complete; this does not destroy the parent sandbox.',\n\tinputSchema: deleteBridgeSessionInputSchema,\n\toutputSchema: deleteBridgeSessionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\tnetwork: true,\n\texecute: async (input, ctx) => CloudflareSandboxClient.fromContext(ctx).deleteSession(input)\n})\n\nexport const cloudflareSandboxModule = defineModule({\n\tid,\n\ttitle: 'Cloudflare Sandbox',\n\tdescription:\n\t\t'Cloudflare sandbox bridge: one-shot exec/files/sessions for workflows. Prefer a host workspace agent for multi-step shell. Client export remains first-class for Workspace hybrids. Prefer purpose-built document tools over sandbox for office formats.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: cloudflareSandboxAuthSchema },\n\tcategories: ['compute', 'sandbox', 'cloudflare'],\n\tclassification: 'standard',\n\ttags: ['exec', 'workspace', 'bridge'],\n\ttools: [\n\t\tcloudflareSandboxHealthTool,\n\t\tcloudflareSandboxCreateTool,\n\t\tcloudflareSandboxDestroyTool,\n\t\tcloudflareSandboxRunningTool,\n\t\tcloudflareSandboxExecTool,\n\t\tcloudflareSandboxExecuteCodeTool,\n\t\tcloudflareSandboxWriteFileTool,\n\t\tcloudflareSandboxReadFileTool,\n\t\tcloudflareSandboxWriteFilesTool,\n\t\tcloudflareSandboxReadFilesTool,\n\t\tcloudflareSandboxListFilesTool,\n\t\tcloudflareSandboxRemoveFilesTool,\n\t\tcloudflareSandboxImportArtifactTool,\n\t\tcloudflareSandboxExportArtifactTool,\n\t\tcloudflareSandboxCreateSessionTool,\n\t\tcloudflareSandboxDeleteSessionTool\n\t]\n})\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { t as ToolError } from "../../errors-DoSpNHvs.js";
2
2
  import { n as defineModule, r as defineTool } from "../../define-ieoksEQ0.js";
3
3
  import { n as requireAuth } from "../../provider-CgDAlg6K.js";
4
4
  import { _ as MAX_COMMAND_CHARS, g as MAX_CODE_CHARS, m as BedrockAgentCoreCodeInterpreterClient, x as bedrockAgentCoreCodeInterpreterAuthSchema, y as MAX_FILE_TEXT } from "../../bedrock-agentcore-code-interpreter-F0dnrAm4.js";
5
- import { F as cloudflareSandboxAuthSchema, v as CloudflareSandboxClient } from "../../cloudflare-sandbox-D3rAu9bN.js";
5
+ import { F as cloudflareSandboxAuthSchema, v as CloudflareSandboxClient } from "../../cloudflare-sandbox-DII392Z9.js";
6
6
  import { isPlainObject, isString } from "es-toolkit";
7
7
  import { z } from "zod";
8
8
  //#region src/modules/code-sandbox/contracts.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/vendors/cloudflare-sandbox/contracts.ts","../../../src/vendors/cloudflare-sandbox/client.ts","../../../src/vendors/cloudflare-sandbox/domain.ts","../../../src/vendors/cloudflare-sandbox/module.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/vendors/cloudflare-sandbox/contracts.ts","../../../src/vendors/cloudflare-sandbox/client.ts","../../../src/vendors/cloudflare-sandbox/domain.ts","../../../src/vendors/cloudflare-sandbox/module.ts"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { $ as listCodeContextsOutputSchema, A as MAX_FILE_PATH, B as deleteBridgeSessionInputSchema, C as workspaceAbsolutePath, D as MAX_ARG_CHARS, E as MAX_ARGV, F as cloudflareSandboxAuthSchema, G as execInputSchema, H as deleteCodeContextInputSchema, I as createBridgeSessionOutputSchema, J as exportArtifactInputSchema, K as execOutputSchema, L as createCodeContextInputSchema, M as MAX_LIST_FILES, N as MAX_READ_PATHS, O as MAX_EXEC_TIMEOUT_MS, P as MAX_WRITE_FILES, Q as importArtifactOutputSchema, R as createCodeContextOutputSchema, S as shellQuote, T as DEFAULT_EXEC_TIMEOUT_MS, U as deleteCodeContextOutputSchema, V as deleteBridgeSessionOutputSchema, W as destroySandboxOutputSchema, X as healthOutputSchema, Y as exportArtifactOutputSchema, Z as importArtifactInputSchema, _ as cloudflareSandboxWriteFilesTool, _t as writeFileOutputSchema, a as cloudflareSandboxExecTool, at as readFileOutputSchema, b as parseRunCodePayload, c as cloudflareSandboxHealthTool, ct as removeFilesInputSchema, d as cloudflareSandboxModule, dt as runningOutputSchema, et as listFilesInputSchema, f as cloudflareSandboxReadFileTool, ft as sandboxIdInputSchema, g as cloudflareSandboxWriteFileTool, gt as writeFileInputSchema, h as cloudflareSandboxRunningTool, ht as unmountBucketOutputSchema, i as cloudflareSandboxDestroyTool, it as readFileInputSchema, j as MAX_FILE_TEXT, k as MAX_FILE_BYTES, l as cloudflareSandboxImportArtifactTool, lt as removeFilesOutputSchema, m as cloudflareSandboxRemoveFilesTool, mt as unmountBucketInputSchema, n as cloudflareSandboxCreateTool, nt as mountBucketInputSchema, o as cloudflareSandboxExecuteCodeTool, ot as readFilesInputSchema, p as cloudflareSandboxReadFilesTool, pt as sandboxObjectArtifactRefSchema, q as executeCodeInputSchema, r as cloudflareSandboxDeleteSessionTool, rt as mountBucketOutputSchema, s as cloudflareSandboxExportArtifactTool, st as readFilesOutputSchema, t as cloudflareSandboxCreateSessionTool, tt as listFilesOutputSchema, u as cloudflareSandboxListFilesTool, ut as runCodeInputSchema, v as CloudflareSandboxClient, vt as writeFilesInputSchema, w as workspaceFileKey, x as resolveWriteFileBytes, y as parseExecSse, yt as writeFilesOutputSchema, z as createSandboxOutputSchema } from "../../cloudflare-sandbox-D3rAu9bN.js";
1
+ import { $ as listCodeContextsOutputSchema, A as MAX_FILE_PATH, B as deleteBridgeSessionInputSchema, C as workspaceAbsolutePath, D as MAX_ARG_CHARS, E as MAX_ARGV, F as cloudflareSandboxAuthSchema, G as execInputSchema, H as deleteCodeContextInputSchema, I as createBridgeSessionOutputSchema, J as exportArtifactInputSchema, K as execOutputSchema, L as createCodeContextInputSchema, M as MAX_LIST_FILES, N as MAX_READ_PATHS, O as MAX_EXEC_TIMEOUT_MS, P as MAX_WRITE_FILES, Q as importArtifactOutputSchema, R as createCodeContextOutputSchema, S as shellQuote, T as DEFAULT_EXEC_TIMEOUT_MS, U as deleteCodeContextOutputSchema, V as deleteBridgeSessionOutputSchema, W as destroySandboxOutputSchema, X as healthOutputSchema, Y as exportArtifactOutputSchema, Z as importArtifactInputSchema, _ as cloudflareSandboxWriteFilesTool, _t as writeFileOutputSchema, a as cloudflareSandboxExecTool, at as readFileOutputSchema, b as parseRunCodePayload, c as cloudflareSandboxHealthTool, ct as removeFilesInputSchema, d as cloudflareSandboxModule, dt as runningOutputSchema, et as listFilesInputSchema, f as cloudflareSandboxReadFileTool, ft as sandboxIdInputSchema, g as cloudflareSandboxWriteFileTool, gt as writeFileInputSchema, h as cloudflareSandboxRunningTool, ht as unmountBucketOutputSchema, i as cloudflareSandboxDestroyTool, it as readFileInputSchema, j as MAX_FILE_TEXT, k as MAX_FILE_BYTES, l as cloudflareSandboxImportArtifactTool, lt as removeFilesOutputSchema, m as cloudflareSandboxRemoveFilesTool, mt as unmountBucketInputSchema, n as cloudflareSandboxCreateTool, nt as mountBucketInputSchema, o as cloudflareSandboxExecuteCodeTool, ot as readFilesInputSchema, p as cloudflareSandboxReadFilesTool, pt as sandboxObjectArtifactRefSchema, q as executeCodeInputSchema, r as cloudflareSandboxDeleteSessionTool, rt as mountBucketOutputSchema, s as cloudflareSandboxExportArtifactTool, st as readFilesOutputSchema, t as cloudflareSandboxCreateSessionTool, tt as listFilesOutputSchema, u as cloudflareSandboxListFilesTool, ut as runCodeInputSchema, v as CloudflareSandboxClient, vt as writeFilesInputSchema, w as workspaceFileKey, x as resolveWriteFileBytes, y as parseExecSse, yt as writeFilesOutputSchema, z as createSandboxOutputSchema } from "../../cloudflare-sandbox-DII392Z9.js";
2
2
  export { CloudflareSandboxClient, DEFAULT_EXEC_TIMEOUT_MS, MAX_ARGV, MAX_ARG_CHARS, MAX_EXEC_TIMEOUT_MS, MAX_FILE_BYTES, MAX_FILE_PATH, MAX_FILE_TEXT, MAX_LIST_FILES, MAX_READ_PATHS, MAX_WRITE_FILES, cloudflareSandboxAuthSchema, cloudflareSandboxCreateSessionTool, cloudflareSandboxCreateTool, cloudflareSandboxDeleteSessionTool, cloudflareSandboxDestroyTool, cloudflareSandboxExecTool, cloudflareSandboxExecuteCodeTool, cloudflareSandboxExportArtifactTool, cloudflareSandboxHealthTool, cloudflareSandboxImportArtifactTool, cloudflareSandboxListFilesTool, cloudflareSandboxModule, cloudflareSandboxReadFileTool, cloudflareSandboxReadFilesTool, cloudflareSandboxRemoveFilesTool, cloudflareSandboxRunningTool, cloudflareSandboxWriteFileTool, cloudflareSandboxWriteFilesTool, createBridgeSessionOutputSchema, createCodeContextInputSchema, createCodeContextOutputSchema, createSandboxOutputSchema, deleteBridgeSessionInputSchema, deleteBridgeSessionOutputSchema, deleteCodeContextInputSchema, deleteCodeContextOutputSchema, destroySandboxOutputSchema, execInputSchema, execOutputSchema, executeCodeInputSchema, exportArtifactInputSchema, exportArtifactOutputSchema, healthOutputSchema, importArtifactInputSchema, importArtifactOutputSchema, listCodeContextsOutputSchema, listFilesInputSchema, listFilesOutputSchema, mountBucketInputSchema, mountBucketOutputSchema, parseExecSse, parseRunCodePayload, readFileInputSchema, readFileOutputSchema, readFilesInputSchema, readFilesOutputSchema, removeFilesInputSchema, removeFilesOutputSchema, resolveWriteFileBytes, runCodeInputSchema, runningOutputSchema, sandboxIdInputSchema, sandboxObjectArtifactRefSchema, shellQuote, unmountBucketInputSchema, unmountBucketOutputSchema, workspaceAbsolutePath, workspaceFileKey, writeFileInputSchema, writeFileOutputSchema, writeFilesInputSchema, writeFilesOutputSchema };