@finalai/agent-provider 0.1.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.

Potentially problematic release.


This version of @finalai/agent-provider might be problematic. Click here for more details.

Files changed (176) hide show
  1. package/README.md +12 -0
  2. package/dist/modules/channel-context.d.mts +102 -0
  3. package/dist/modules/channel-context.mjs +52 -0
  4. package/dist/modules/channel-context.mjs.map +7 -0
  5. package/dist/modules/channel-socket.d.mts +65 -0
  6. package/dist/modules/channel-socket.mjs +188 -0
  7. package/dist/modules/channel-socket.mjs.map +7 -0
  8. package/dist/modules/channel.d.mts +382 -0
  9. package/dist/modules/channel.mjs +146 -0
  10. package/dist/modules/channel.mjs.map +7 -0
  11. package/dist/modules/conformance/agent.d.mts +20 -0
  12. package/dist/modules/conformance/agent.mjs +623 -0
  13. package/dist/modules/conformance/agent.mjs.map +7 -0
  14. package/dist/modules/conformance/fixtures.d.mts +41 -0
  15. package/dist/modules/conformance/fixtures.mjs +190 -0
  16. package/dist/modules/conformance/fixtures.mjs.map +7 -0
  17. package/dist/modules/conformance/harness-kit.d.mts +82 -0
  18. package/dist/modules/conformance/harness-kit.mjs +1303 -0
  19. package/dist/modules/conformance/harness-kit.mjs.map +7 -0
  20. package/dist/modules/conformance/image.d.mts +2 -0
  21. package/dist/modules/conformance/image.mjs +79 -0
  22. package/dist/modules/conformance/image.mjs.map +7 -0
  23. package/dist/modules/conformance/index.d.mts +8 -0
  24. package/dist/modules/conformance/index.mjs +12 -0
  25. package/dist/modules/conformance/index.mjs.map +7 -0
  26. package/dist/modules/conformance/local-harness.d.mts +25 -0
  27. package/dist/modules/conformance/local-harness.mjs +108 -0
  28. package/dist/modules/conformance/local-harness.mjs.map +7 -0
  29. package/dist/modules/conformance/protocol.d.mts +30 -0
  30. package/dist/modules/conformance/protocol.mjs +56 -0
  31. package/dist/modules/conformance/protocol.mjs.map +7 -0
  32. package/dist/modules/conformance/sandbox-kit.d.mts +19 -0
  33. package/dist/modules/conformance/sandbox-kit.mjs +320 -0
  34. package/dist/modules/conformance/sandbox-kit.mjs.map +7 -0
  35. package/dist/modules/conformance/scripted-model/chat-completions.d.mts +30 -0
  36. package/dist/modules/conformance/scripted-model/chat-completions.mjs +125 -0
  37. package/dist/modules/conformance/scripted-model/chat-completions.mjs.map +7 -0
  38. package/dist/modules/conformance/scripted-model/directives.d.mts +84 -0
  39. package/dist/modules/conformance/scripted-model/directives.mjs +304 -0
  40. package/dist/modules/conformance/scripted-model/directives.mjs.map +7 -0
  41. package/dist/modules/conformance/scripted-model/handler.d.mts +14 -0
  42. package/dist/modules/conformance/scripted-model/handler.mjs +133 -0
  43. package/dist/modules/conformance/scripted-model/handler.mjs.map +7 -0
  44. package/dist/modules/conformance/scripted-model/index.d.mts +6 -0
  45. package/dist/modules/conformance/scripted-model/index.mjs +7 -0
  46. package/dist/modules/conformance/scripted-model/index.mjs.map +7 -0
  47. package/dist/modules/conformance/scripted-model/messages.d.mts +39 -0
  48. package/dist/modules/conformance/scripted-model/messages.mjs +139 -0
  49. package/dist/modules/conformance/scripted-model/messages.mjs.map +7 -0
  50. package/dist/modules/conformance/scripted-model/responses.d.mts +62 -0
  51. package/dist/modules/conformance/scripted-model/responses.mjs +273 -0
  52. package/dist/modules/conformance/scripted-model/responses.mjs.map +7 -0
  53. package/dist/modules/conformance/scripted-model/sse.d.mts +15 -0
  54. package/dist/modules/conformance/scripted-model/sse.mjs +75 -0
  55. package/dist/modules/conformance/scripted-model/sse.mjs.map +7 -0
  56. package/dist/modules/conformance/v1-agent.d.mts +24 -0
  57. package/dist/modules/conformance/v1-agent.mjs +40 -0
  58. package/dist/modules/conformance/v1-agent.mjs.map +7 -0
  59. package/dist/modules/credential-routes.d.mts +24 -0
  60. package/dist/modules/credential-routes.mjs +25 -0
  61. package/dist/modules/credential-routes.mjs.map +7 -0
  62. package/dist/modules/credentials.d.mts +206 -0
  63. package/dist/modules/credentials.mjs +207 -0
  64. package/dist/modules/credentials.mjs.map +7 -0
  65. package/dist/modules/dynamic.d.mts +32 -0
  66. package/dist/modules/dynamic.mjs +77 -0
  67. package/dist/modules/dynamic.mjs.map +7 -0
  68. package/dist/modules/harness.d.mts +397 -0
  69. package/dist/modules/harness.mjs +213 -0
  70. package/dist/modules/harness.mjs.map +7 -0
  71. package/dist/modules/index.d.mts +15 -0
  72. package/dist/modules/index.mjs +40 -0
  73. package/dist/modules/index.mjs.map +7 -0
  74. package/dist/modules/json.d.mts +12 -0
  75. package/dist/modules/json.mjs +19 -0
  76. package/dist/modules/json.mjs.map +7 -0
  77. package/dist/modules/local-channel-socket.d.mts +23 -0
  78. package/dist/modules/local-channel-socket.mjs +141 -0
  79. package/dist/modules/local-channel-socket.mjs.map +7 -0
  80. package/dist/modules/manifest.d.mts +558 -0
  81. package/dist/modules/manifest.mjs +266 -0
  82. package/dist/modules/manifest.mjs.map +7 -0
  83. package/dist/modules/mcp-content.d.mts +21 -0
  84. package/dist/modules/mcp-content.mjs +86 -0
  85. package/dist/modules/mcp-content.mjs.map +7 -0
  86. package/dist/modules/provider-ref.d.mts +29 -0
  87. package/dist/modules/provider-ref.mjs +55 -0
  88. package/dist/modules/provider-ref.mjs.map +7 -0
  89. package/dist/modules/sandbox/bytes.d.mts +9 -0
  90. package/dist/modules/sandbox/bytes.mjs +154 -0
  91. package/dist/modules/sandbox/bytes.mjs.map +7 -0
  92. package/dist/modules/sandbox/client.d.mts +51 -0
  93. package/dist/modules/sandbox/client.mjs +500 -0
  94. package/dist/modules/sandbox/client.mjs.map +7 -0
  95. package/dist/modules/sandbox/confined-files.d.mts +22 -0
  96. package/dist/modules/sandbox/confined-files.mjs +142 -0
  97. package/dist/modules/sandbox/confined-files.mjs.map +7 -0
  98. package/dist/modules/sandbox/convenience.d.mts +10 -0
  99. package/dist/modules/sandbox/convenience.mjs +116 -0
  100. package/dist/modules/sandbox/convenience.mjs.map +7 -0
  101. package/dist/modules/sandbox/editor.d.mts +49 -0
  102. package/dist/modules/sandbox/editor.mjs +43 -0
  103. package/dist/modules/sandbox/editor.mjs.map +7 -0
  104. package/dist/modules/sandbox/frame-channel.d.mts +47 -0
  105. package/dist/modules/sandbox/frame-channel.mjs +153 -0
  106. package/dist/modules/sandbox/frame-channel.mjs.map +7 -0
  107. package/dist/modules/sandbox/index.d.mts +18 -0
  108. package/dist/modules/sandbox/index.mjs +70 -0
  109. package/dist/modules/sandbox/index.mjs.map +7 -0
  110. package/dist/modules/sandbox/mcp-channel.d.mts +9 -0
  111. package/dist/modules/sandbox/mcp-channel.mjs +77 -0
  112. package/dist/modules/sandbox/mcp-channel.mjs.map +7 -0
  113. package/dist/modules/sandbox/mcp-hosted.d.mts +46 -0
  114. package/dist/modules/sandbox/mcp-hosted.mjs +221 -0
  115. package/dist/modules/sandbox/mcp-hosted.mjs.map +7 -0
  116. package/dist/modules/sandbox/mcp-search.d.mts +51 -0
  117. package/dist/modules/sandbox/mcp-search.mjs +129 -0
  118. package/dist/modules/sandbox/mcp-search.mjs.map +7 -0
  119. package/dist/modules/sandbox/mcp-shell.d.mts +21 -0
  120. package/dist/modules/sandbox/mcp-shell.mjs +205 -0
  121. package/dist/modules/sandbox/mcp-shell.mjs.map +7 -0
  122. package/dist/modules/sandbox/mcp-testing.d.mts +11 -0
  123. package/dist/modules/sandbox/mcp-testing.mjs +33 -0
  124. package/dist/modules/sandbox/mcp-testing.mjs.map +7 -0
  125. package/dist/modules/sandbox/mcp.d.mts +83 -0
  126. package/dist/modules/sandbox/mcp.mjs +971 -0
  127. package/dist/modules/sandbox/mcp.mjs.map +7 -0
  128. package/dist/modules/sandbox/memory-sandbox.d.mts +32 -0
  129. package/dist/modules/sandbox/memory-sandbox.mjs +416 -0
  130. package/dist/modules/sandbox/memory-sandbox.mjs.map +7 -0
  131. package/dist/modules/sandbox/memory-shell.d.mts +29 -0
  132. package/dist/modules/sandbox/memory-shell.mjs +278 -0
  133. package/dist/modules/sandbox/memory-shell.mjs.map +7 -0
  134. package/dist/modules/sandbox/open-scope-node.d.mts +4 -0
  135. package/dist/modules/sandbox/open-scope-node.mjs +19 -0
  136. package/dist/modules/sandbox/open-scope-node.mjs.map +7 -0
  137. package/dist/modules/sandbox/open-scope.d.mts +16 -0
  138. package/dist/modules/sandbox/open-scope.mjs +66 -0
  139. package/dist/modules/sandbox/open-scope.mjs.map +7 -0
  140. package/dist/modules/sandbox/paths.d.mts +7 -0
  141. package/dist/modules/sandbox/paths.mjs +50 -0
  142. package/dist/modules/sandbox/paths.mjs.map +7 -0
  143. package/dist/modules/sandbox/rpc-peer.d.mts +35 -0
  144. package/dist/modules/sandbox/rpc-peer.mjs +224 -0
  145. package/dist/modules/sandbox/rpc-peer.mjs.map +7 -0
  146. package/dist/modules/sandbox/seeds.d.mts +26 -0
  147. package/dist/modules/sandbox/seeds.mjs +228 -0
  148. package/dist/modules/sandbox/seeds.mjs.map +7 -0
  149. package/dist/modules/sandbox/server.d.mts +66 -0
  150. package/dist/modules/sandbox/server.mjs +567 -0
  151. package/dist/modules/sandbox/server.mjs.map +7 -0
  152. package/dist/modules/sandbox/snapshots.d.mts +49 -0
  153. package/dist/modules/sandbox/snapshots.mjs +55 -0
  154. package/dist/modules/sandbox/snapshots.mjs.map +7 -0
  155. package/dist/modules/sandbox/stream-mux.d.mts +18 -0
  156. package/dist/modules/sandbox/stream-mux.mjs +285 -0
  157. package/dist/modules/sandbox/stream-mux.mjs.map +7 -0
  158. package/dist/modules/sandbox/testing.d.mts +25 -0
  159. package/dist/modules/sandbox/testing.mjs +64 -0
  160. package/dist/modules/sandbox/testing.mjs.map +7 -0
  161. package/dist/modules/sandbox/types.d.mts +352 -0
  162. package/dist/modules/sandbox/types.mjs +86 -0
  163. package/dist/modules/sandbox/types.mjs.map +7 -0
  164. package/dist/modules/sandbox/wire.d.mts +671 -0
  165. package/dist/modules/sandbox/wire.mjs +537 -0
  166. package/dist/modules/sandbox/wire.mjs.map +7 -0
  167. package/dist/modules/sandbox/workspace-root.d.mts +8 -0
  168. package/dist/modules/sandbox/workspace-root.mjs +79 -0
  169. package/dist/modules/sandbox/workspace-root.mjs.map +7 -0
  170. package/dist/modules/schemas.d.mts +121 -0
  171. package/dist/modules/schemas.mjs +146 -0
  172. package/dist/modules/schemas.mjs.map +7 -0
  173. package/dist/modules/semantic-events.d.mts +31 -0
  174. package/dist/modules/semantic-events.mjs +23 -0
  175. package/dist/modules/semantic-events.mjs.map +7 -0
  176. package/package.json +199 -0
@@ -0,0 +1,154 @@
1
+ const encoder = new TextEncoder();
2
+ const utf8Encode = (text) => encoder.encode(text);
3
+ const utf8Decode = (bytes) => new TextDecoder().decode(bytes);
4
+ const concatBytes = (chunks) => {
5
+ let total = 0;
6
+ for (const chunk of chunks) total += chunk.byteLength;
7
+ const out = new Uint8Array(total);
8
+ let offset = 0;
9
+ for (const chunk of chunks) {
10
+ out.set(chunk, offset);
11
+ offset += chunk.byteLength;
12
+ }
13
+ return out;
14
+ };
15
+ const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
16
+ const LOOKUP = new Uint8Array(256).fill(255);
17
+ for (let i = 0; i < ALPHABET.length; i += 1) LOOKUP[ALPHABET.charCodeAt(i)] = i;
18
+ LOOKUP["-".charCodeAt(0)] = 62;
19
+ LOOKUP["_".charCodeAt(0)] = 63;
20
+ const bytesToBase64 = (bytes) => {
21
+ const parts = [];
22
+ let line = "";
23
+ for (let i = 0; i < bytes.length; i += 3) {
24
+ const a = bytes[i] ?? 0;
25
+ const b = bytes[i + 1] ?? 0;
26
+ const c = bytes[i + 2] ?? 0;
27
+ const triple = a << 16 | b << 8 | c;
28
+ line += ALPHABET[triple >> 18 & 63];
29
+ line += ALPHABET[triple >> 12 & 63];
30
+ line += i + 1 < bytes.length ? ALPHABET[triple >> 6 & 63] : "=";
31
+ line += i + 2 < bytes.length ? ALPHABET[triple & 63] : "=";
32
+ if (line.length >= 8192) {
33
+ parts.push(line);
34
+ line = "";
35
+ }
36
+ }
37
+ parts.push(line);
38
+ return parts.join("");
39
+ };
40
+ const base64ToBytes = (text) => {
41
+ const clean = text.replace(/[\s=]/g, "");
42
+ const out = new Uint8Array(Math.floor(clean.length * 3 / 4));
43
+ let buffer = 0;
44
+ let bits = 0;
45
+ let index = 0;
46
+ for (let i = 0; i < clean.length; i += 1) {
47
+ const value = LOOKUP[clean.charCodeAt(i)] ?? 255;
48
+ if (value === 255) throw new Error("invalid base64 input");
49
+ buffer = buffer << 6 | value;
50
+ bits += 6;
51
+ if (bits >= 8) {
52
+ bits -= 8;
53
+ out[index] = buffer >> bits & 255;
54
+ index += 1;
55
+ }
56
+ }
57
+ return out.subarray(0, index);
58
+ };
59
+ const bytesToStream = (bytes, chunkBytes = 256 * 1024) => {
60
+ let offset = 0;
61
+ return new ReadableStream({
62
+ pull: (controller) => {
63
+ if (offset >= bytes.byteLength) {
64
+ controller.close();
65
+ return;
66
+ }
67
+ const end = Math.min(bytes.byteLength, offset + chunkBytes);
68
+ controller.enqueue(bytes.subarray(offset, end));
69
+ offset = end;
70
+ }
71
+ });
72
+ };
73
+ const readAllBytes = async (stream, abortSignal) => {
74
+ const reader = stream.getReader();
75
+ const chunks = [];
76
+ const cancel = () => {
77
+ void reader.cancel().catch(() => void 0);
78
+ };
79
+ abortSignal?.addEventListener("abort", cancel, { once: true });
80
+ if (abortSignal?.aborted === true) cancel();
81
+ let finished = false;
82
+ try {
83
+ for (; ; ) {
84
+ const { done, value } = await reader.read();
85
+ abortSignal?.throwIfAborted();
86
+ if (done) {
87
+ finished = true;
88
+ break;
89
+ }
90
+ chunks.push(value);
91
+ }
92
+ return concatBytes(chunks);
93
+ } finally {
94
+ abortSignal?.removeEventListener("abort", cancel);
95
+ if (!finished) await reader.cancel().catch(() => void 0);
96
+ reader.releaseLock();
97
+ }
98
+ };
99
+ const encodeSandboxText = (text, encoding = "utf-8") => {
100
+ const name = encoding.toLowerCase().replaceAll("-", "");
101
+ if (name === "utf8") return utf8Encode(text);
102
+ if (name === "base64" || name === "base64url") return base64ToBytes(text);
103
+ if (name === "hex") {
104
+ if (text.length % 2 !== 0 || !/^[0-9a-f]*$/i.test(text)) throw new Error("Invalid hex text");
105
+ return Uint8Array.from(text.match(/.{2}/g) ?? [], (pair) => Number.parseInt(pair, 16));
106
+ }
107
+ if (name === "utf16le" || name === "utf16be" || name === "ucs2") {
108
+ const bytes = new Uint8Array(text.length * 2);
109
+ const view = new DataView(bytes.buffer);
110
+ for (let index = 0; index < text.length; index++)
111
+ view.setUint16(index * 2, text.charCodeAt(index), name !== "utf16be");
112
+ return bytes;
113
+ }
114
+ if (name === "latin1" || name === "binary" || name === "ascii") {
115
+ return Uint8Array.from(
116
+ { length: text.length },
117
+ (_value, index) => text.charCodeAt(index) & 255
118
+ );
119
+ }
120
+ throw new Error(`Unsupported text-file write encoding: ${encoding}`);
121
+ };
122
+ const decodeSandboxText = (bytes, encoding = "utf-8") => {
123
+ const name = encoding.toLowerCase().replaceAll("-", "");
124
+ if (name === "base64" || name === "base64url") {
125
+ const text = bytesToBase64(bytes);
126
+ return name === "base64" ? text : text.replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
127
+ }
128
+ if (name === "hex") return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
129
+ if (name === "latin1" || name === "binary" || name === "ascii") {
130
+ const pieces = [];
131
+ for (let offset = 0; offset < bytes.length; offset += 8192) {
132
+ pieces.push(
133
+ String.fromCharCode(
134
+ ...bytes.subarray(offset, offset + 8192).map((byte) => name === "ascii" ? byte & 127 : byte)
135
+ )
136
+ );
137
+ }
138
+ return pieces.join("");
139
+ }
140
+ const decoderName = name === "utf8" ? "utf-8" : name === "ucs2" || name === "utf16le" ? "utf-16le" : name === "utf16be" ? "utf-16be" : encoding;
141
+ return new TextDecoder(decoderName).decode(bytes);
142
+ };
143
+ export {
144
+ base64ToBytes,
145
+ bytesToBase64,
146
+ bytesToStream,
147
+ concatBytes,
148
+ decodeSandboxText,
149
+ encodeSandboxText,
150
+ readAllBytes,
151
+ utf8Decode,
152
+ utf8Encode
153
+ };
154
+ //# sourceMappingURL=bytes.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/sandbox/bytes.ts"],
4
+ "sourcesContent": ["// Byte helpers that work in Workers, browsers and Node (no Buffer).\n\nconst encoder = new TextEncoder();\n\nexport const utf8Encode = (text: string): Uint8Array => encoder.encode(text);\n\nexport const utf8Decode = (bytes: Uint8Array): string => new TextDecoder().decode(bytes);\n\nexport const concatBytes = (chunks: readonly Uint8Array[]): Uint8Array => {\n let total = 0;\n for (const chunk of chunks) total += chunk.byteLength;\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n};\n\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst LOOKUP = new Uint8Array(256).fill(255);\nfor (let i = 0; i < ALPHABET.length; i += 1) LOOKUP[ALPHABET.charCodeAt(i)] = i;\nLOOKUP['-'.charCodeAt(0)] = 62;\nLOOKUP['_'.charCodeAt(0)] = 63;\n\nexport const bytesToBase64 = (bytes: Uint8Array): string => {\n const parts: string[] = [];\n let line = '';\n for (let i = 0; i < bytes.length; i += 3) {\n const a = bytes[i] ?? 0;\n const b = bytes[i + 1] ?? 0;\n const c = bytes[i + 2] ?? 0;\n const triple = (a << 16) | (b << 8) | c;\n line += ALPHABET[(triple >> 18) & 63];\n line += ALPHABET[(triple >> 12) & 63];\n line += i + 1 < bytes.length ? ALPHABET[(triple >> 6) & 63] : '=';\n line += i + 2 < bytes.length ? ALPHABET[triple & 63] : '=';\n if (line.length >= 8192) {\n parts.push(line);\n line = '';\n }\n }\n parts.push(line);\n return parts.join('');\n};\n\n// Accepts standard and URL-safe alphabets, with or without padding.\nexport const base64ToBytes = (text: string): Uint8Array => {\n const clean = text.replace(/[\\s=]/g, '');\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4));\n let buffer = 0;\n let bits = 0;\n let index = 0;\n for (let i = 0; i < clean.length; i += 1) {\n const value = LOOKUP[clean.charCodeAt(i)] ?? 255;\n if (value === 255) throw new Error('invalid base64 input');\n buffer = (buffer << 6) | value;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out[index] = (buffer >> bits) & 0xff;\n index += 1;\n }\n }\n return out.subarray(0, index);\n};\n\nexport const bytesToStream = (\n bytes: Uint8Array,\n chunkBytes = 256 * 1024,\n): ReadableStream<Uint8Array> => {\n let offset = 0;\n return new ReadableStream<Uint8Array>({\n pull: (controller) => {\n if (offset >= bytes.byteLength) {\n controller.close();\n return;\n }\n const end = Math.min(bytes.byteLength, offset + chunkBytes);\n controller.enqueue(bytes.subarray(offset, end));\n offset = end;\n },\n });\n};\n\nexport const readAllBytes = async (\n stream: ReadableStream<Uint8Array>,\n abortSignal?: AbortSignal,\n): Promise<Uint8Array> => {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n const cancel = () => {\n void reader.cancel().catch(() => undefined);\n };\n abortSignal?.addEventListener('abort', cancel, { once: true });\n if (abortSignal?.aborted === true) cancel();\n let finished = false;\n try {\n for (;;) {\n const { done, value } = await reader.read();\n abortSignal?.throwIfAborted();\n if (done) {\n finished = true;\n break;\n }\n chunks.push(value);\n }\n return concatBytes(chunks);\n } finally {\n abortSignal?.removeEventListener('abort', cancel);\n if (!finished) await reader.cancel().catch(() => undefined);\n reader.releaseLock();\n }\n};\n\n// Portable text-file codecs shared by handles and their wire client.\nexport const encodeSandboxText = (text: string, encoding = 'utf-8'): Uint8Array => {\n const name = encoding.toLowerCase().replaceAll('-', '');\n if (name === 'utf8') return utf8Encode(text);\n if (name === 'base64' || name === 'base64url') return base64ToBytes(text);\n if (name === 'hex') {\n if (text.length % 2 !== 0 || !/^[0-9a-f]*$/i.test(text)) throw new Error('Invalid hex text');\n return Uint8Array.from(text.match(/.{2}/g) ?? [], (pair) => Number.parseInt(pair, 16));\n }\n if (name === 'utf16le' || name === 'utf16be' || name === 'ucs2') {\n const bytes = new Uint8Array(text.length * 2);\n const view = new DataView(bytes.buffer);\n for (let index = 0; index < text.length; index++)\n view.setUint16(index * 2, text.charCodeAt(index), name !== 'utf16be');\n return bytes;\n }\n if (name === 'latin1' || name === 'binary' || name === 'ascii') {\n return Uint8Array.from(\n { length: text.length },\n (_value, index) => text.charCodeAt(index) & 0xff,\n );\n }\n throw new Error(`Unsupported text-file write encoding: ${encoding}`);\n};\n\nexport const decodeSandboxText = (bytes: Uint8Array, encoding = 'utf-8'): string => {\n const name = encoding.toLowerCase().replaceAll('-', '');\n if (name === 'base64' || name === 'base64url') {\n const text = bytesToBase64(bytes);\n return name === 'base64'\n ? text\n : text.replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');\n }\n if (name === 'hex') return [...bytes].map((byte) => byte.toString(16).padStart(2, '0')).join('');\n if (name === 'latin1' || name === 'binary' || name === 'ascii') {\n const pieces: string[] = [];\n for (let offset = 0; offset < bytes.length; offset += 8192) {\n pieces.push(\n String.fromCharCode(\n ...bytes\n .subarray(offset, offset + 8192)\n .map((byte) => (name === 'ascii' ? byte & 0x7f : byte)),\n ),\n );\n }\n return pieces.join('');\n }\n const decoderName =\n name === 'utf8'\n ? 'utf-8'\n : name === 'ucs2' || name === 'utf16le'\n ? 'utf-16le'\n : name === 'utf16be'\n ? 'utf-16be'\n : encoding;\n return new TextDecoder(decoderName).decode(bytes);\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,51 @@
1
+ import { SandboxCapability, type NetworkSandboxSessionIface } from "./types.mjs";
2
+ import { type FrameChannelIface, type WebSocketConstructorIface } from "./wire.mjs";
3
+ export interface SandboxClientIface extends NetworkSandboxSessionIface {
4
+ readonly confinedFiles: boolean;
5
+ readonly providerHooks: boolean;
6
+ onSandboxStop(): Promise<void>;
7
+ onSandboxDelete(options?: {
8
+ reason?: string;
9
+ }): Promise<void>;
10
+ onRuntimeShutdown(): Promise<void>;
11
+ readonly capabilities: readonly SandboxCapability[];
12
+ readFileRange(options: {
13
+ path: string;
14
+ root?: string;
15
+ offset: number;
16
+ length?: number;
17
+ abortSignal?: AbortSignal;
18
+ }): Promise<ReadableStream<Uint8Array> | null>;
19
+ close(): void;
20
+ }
21
+ export interface SandboxClientCredentialIface {
22
+ token: string;
23
+ expiresAt: string | null;
24
+ url?: string;
25
+ }
26
+ export interface ConnectSandboxClientArgsIface {
27
+ url: string;
28
+ token: string;
29
+ expiresAt?: string | null;
30
+ WebSocket?: WebSocketConstructorIface;
31
+ openChannel?: (target: {
32
+ url: string;
33
+ token: string;
34
+ }) => Promise<FrameChannelIface>;
35
+ refreshToken?: () => Promise<SandboxClientCredentialIface>;
36
+ binary?: boolean;
37
+ reconnect?: {
38
+ attempts?: number;
39
+ baseDelayMs?: number;
40
+ maxDelayMs?: number;
41
+ };
42
+ refreshMarginMs?: number;
43
+ clientInfo?: {
44
+ name: string;
45
+ version: string;
46
+ };
47
+ now?: () => number;
48
+ sleep?: (ms: number) => Promise<void>;
49
+ randomId?: () => string;
50
+ }
51
+ export declare const connectSandboxClient: (args: ConnectSandboxClientArgsIface) => Promise<SandboxClientIface>;