langsmith 0.7.7 → 0.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +161 -15
  2. package/dist/_openapi_client/client.cjs +814 -0
  3. package/dist/_openapi_client/client.d.ts +247 -0
  4. package/dist/_openapi_client/client.js +777 -0
  5. package/dist/_openapi_client/core/api-promise.cjs +100 -0
  6. package/dist/_openapi_client/core/api-promise.d.ts +45 -0
  7. package/dist/_openapi_client/core/api-promise.js +96 -0
  8. package/dist/_openapi_client/core/error.cjs +134 -0
  9. package/dist/_openapi_client/core/error.d.ts +45 -0
  10. package/dist/_openapi_client/core/error.js +118 -0
  11. package/dist/_openapi_client/core/pagination.cjs +374 -0
  12. package/dist/_openapi_client/core/pagination.d.ts +157 -0
  13. package/dist/_openapi_client/core/pagination.js +361 -0
  14. package/dist/_openapi_client/core/resource.cjs +17 -0
  15. package/dist/_openapi_client/core/resource.d.ts +5 -0
  16. package/dist/_openapi_client/core/resource.js +13 -0
  17. package/dist/_openapi_client/core/uploads.cjs +5 -0
  18. package/dist/_openapi_client/core/uploads.d.ts +2 -0
  19. package/dist/_openapi_client/core/uploads.js +1 -0
  20. package/dist/_openapi_client/index.cjs +29 -0
  21. package/dist/_openapi_client/index.d.ts +6 -0
  22. package/dist/_openapi_client/index.js +8 -0
  23. package/dist/_openapi_client/internal/builtin-types.cjs +4 -0
  24. package/dist/_openapi_client/internal/builtin-types.d.ts +72 -0
  25. package/dist/_openapi_client/internal/builtin-types.js +3 -0
  26. package/dist/_openapi_client/internal/detect-platform.cjs +162 -0
  27. package/dist/_openapi_client/internal/detect-platform.d.ts +14 -0
  28. package/dist/_openapi_client/internal/detect-platform.js +157 -0
  29. package/dist/_openapi_client/internal/errors.cjs +41 -0
  30. package/dist/_openapi_client/internal/errors.d.ts +2 -0
  31. package/dist/_openapi_client/internal/errors.js +36 -0
  32. package/dist/_openapi_client/internal/headers.cjs +79 -0
  33. package/dist/_openapi_client/internal/headers.d.ts +5 -0
  34. package/dist/_openapi_client/internal/headers.js +74 -0
  35. package/dist/_openapi_client/internal/parse.cjs +40 -0
  36. package/dist/_openapi_client/internal/parse.d.ts +11 -0
  37. package/dist/_openapi_client/internal/parse.js +37 -0
  38. package/dist/_openapi_client/internal/qs/formats.cjs +12 -0
  39. package/dist/_openapi_client/internal/qs/formats.d.ts +6 -0
  40. package/dist/_openapi_client/internal/qs/formats.js +8 -0
  41. package/dist/_openapi_client/internal/qs/stringify.cjs +277 -0
  42. package/dist/_openapi_client/internal/qs/stringify.d.ts +2 -0
  43. package/dist/_openapi_client/internal/qs/stringify.js +274 -0
  44. package/dist/_openapi_client/internal/qs/types.cjs +2 -0
  45. package/dist/_openapi_client/internal/qs/types.d.ts +56 -0
  46. package/dist/_openapi_client/internal/qs/types.js +1 -0
  47. package/dist/_openapi_client/internal/qs/utils.cjs +230 -0
  48. package/dist/_openapi_client/internal/qs/utils.d.ts +14 -0
  49. package/dist/_openapi_client/internal/qs/utils.js +217 -0
  50. package/dist/_openapi_client/internal/request-options.cjs +14 -0
  51. package/dist/_openapi_client/internal/request-options.d.ts +74 -0
  52. package/dist/_openapi_client/internal/request-options.js +10 -0
  53. package/dist/_openapi_client/internal/shim-types.cjs +4 -0
  54. package/dist/_openapi_client/internal/shim-types.d.ts +16 -0
  55. package/dist/_openapi_client/internal/shim-types.js +3 -0
  56. package/dist/_openapi_client/internal/shims.cjs +92 -0
  57. package/dist/_openapi_client/internal/shims.d.ts +25 -0
  58. package/dist/_openapi_client/internal/shims.js +85 -0
  59. package/dist/_openapi_client/internal/to-file.cjs +91 -0
  60. package/dist/_openapi_client/internal/to-file.d.ts +44 -0
  61. package/dist/_openapi_client/internal/to-file.js +88 -0
  62. package/dist/_openapi_client/internal/types.cjs +4 -0
  63. package/dist/_openapi_client/internal/types.d.ts +62 -0
  64. package/dist/_openapi_client/internal/types.js +3 -0
  65. package/dist/_openapi_client/internal/uploads.cjs +140 -0
  66. package/dist/_openapi_client/internal/uploads.d.ts +41 -0
  67. package/dist/_openapi_client/internal/uploads.js +130 -0
  68. package/dist/_openapi_client/internal/utils/env.cjs +22 -0
  69. package/dist/_openapi_client/internal/utils/env.d.ts +8 -0
  70. package/dist/_openapi_client/internal/utils/env.js +18 -0
  71. package/dist/_openapi_client/internal/utils/log.cjs +88 -0
  72. package/dist/_openapi_client/internal/utils/log.d.ts +36 -0
  73. package/dist/_openapi_client/internal/utils/log.js +82 -0
  74. package/dist/_openapi_client/internal/utils/path.cjs +79 -0
  75. package/dist/_openapi_client/internal/utils/path.d.ts +14 -0
  76. package/dist/_openapi_client/internal/utils/path.js +74 -0
  77. package/dist/_openapi_client/internal/utils/query.cjs +42 -0
  78. package/dist/_openapi_client/internal/utils/query.d.ts +1 -0
  79. package/dist/_openapi_client/internal/utils/query.js +6 -0
  80. package/dist/_openapi_client/internal/utils/sleep.cjs +7 -0
  81. package/dist/_openapi_client/internal/utils/sleep.d.ts +1 -0
  82. package/dist/_openapi_client/internal/utils/sleep.js +3 -0
  83. package/dist/_openapi_client/internal/utils/uuid.cjs +19 -0
  84. package/dist/_openapi_client/internal/utils/uuid.d.ts +4 -0
  85. package/dist/_openapi_client/internal/utils/uuid.js +15 -0
  86. package/dist/_openapi_client/internal/utils/values.cjs +112 -0
  87. package/dist/_openapi_client/internal/utils/values.d.ts +17 -0
  88. package/dist/_openapi_client/internal/utils/values.js +94 -0
  89. package/dist/_openapi_client/resources/annotation-queues/annotation-queues.cjs +138 -0
  90. package/dist/_openapi_client/resources/annotation-queues/annotation-queues.d.ts +367 -0
  91. package/dist/_openapi_client/resources/annotation-queues/annotation-queues.js +101 -0
  92. package/dist/_openapi_client/resources/annotation-queues/runs.cjs +46 -0
  93. package/dist/_openapi_client/resources/annotation-queues/runs.d.ts +128 -0
  94. package/dist/_openapi_client/resources/annotation-queues/runs.js +42 -0
  95. package/dist/_openapi_client/resources/commits.cjs +44 -0
  96. package/dist/_openapi_client/resources/commits.d.ts +204 -0
  97. package/dist/_openapi_client/resources/commits.js +40 -0
  98. package/dist/_openapi_client/resources/datasets/comparative.cjs +22 -0
  99. package/dist/_openapi_client/resources/datasets/comparative.d.ts +55 -0
  100. package/dist/_openapi_client/resources/datasets/comparative.js +18 -0
  101. package/dist/_openapi_client/resources/datasets/datasets.cjs +193 -0
  102. package/dist/_openapi_client/resources/datasets/datasets.d.ts +374 -0
  103. package/dist/_openapi_client/resources/datasets/datasets.js +156 -0
  104. package/dist/_openapi_client/resources/datasets/experiments.cjs +16 -0
  105. package/dist/_openapi_client/resources/datasets/experiments.d.ts +23 -0
  106. package/dist/_openapi_client/resources/datasets/experiments.js +12 -0
  107. package/dist/_openapi_client/resources/datasets/group.cjs +17 -0
  108. package/dist/_openapi_client/resources/datasets/group.d.ts +160 -0
  109. package/dist/_openapi_client/resources/datasets/group.js +13 -0
  110. package/dist/_openapi_client/resources/datasets/runs.cjs +29 -0
  111. package/dist/_openapi_client/resources/datasets/runs.d.ts +216 -0
  112. package/dist/_openapi_client/resources/datasets/runs.js +25 -0
  113. package/dist/_openapi_client/resources/datasets/share.cjs +32 -0
  114. package/dist/_openapi_client/resources/datasets/share.d.ts +28 -0
  115. package/dist/_openapi_client/resources/datasets/share.js +28 -0
  116. package/dist/_openapi_client/resources/datasets/splits.cjs +22 -0
  117. package/dist/_openapi_client/resources/datasets/splits.d.ts +30 -0
  118. package/dist/_openapi_client/resources/datasets/splits.js +18 -0
  119. package/dist/_openapi_client/resources/datasets/versions.cjs +23 -0
  120. package/dist/_openapi_client/resources/datasets/versions.d.ts +36 -0
  121. package/dist/_openapi_client/resources/datasets/versions.js +19 -0
  122. package/dist/_openapi_client/resources/evaluators.cjs +15 -0
  123. package/dist/_openapi_client/resources/evaluators.d.ts +125 -0
  124. package/dist/_openapi_client/resources/evaluators.js +11 -0
  125. package/dist/_openapi_client/resources/examples/bulk.cjs +24 -0
  126. package/dist/_openapi_client/resources/examples/bulk.d.ts +78 -0
  127. package/dist/_openapi_client/resources/examples/bulk.js +20 -0
  128. package/dist/_openapi_client/resources/examples/examples.cjs +124 -0
  129. package/dist/_openapi_client/resources/examples/examples.d.ts +182 -0
  130. package/dist/_openapi_client/resources/examples/examples.js +87 -0
  131. package/dist/_openapi_client/resources/examples/validate.cjs +21 -0
  132. package/dist/_openapi_client/resources/examples/validate.d.ts +38 -0
  133. package/dist/_openapi_client/resources/examples/validate.js +17 -0
  134. package/dist/_openapi_client/resources/feedback/configs.cjs +24 -0
  135. package/dist/_openapi_client/resources/feedback/configs.d.ts +18 -0
  136. package/dist/_openapi_client/resources/feedback/configs.js +20 -0
  137. package/dist/_openapi_client/resources/feedback/feedback.cjs +98 -0
  138. package/dist/_openapi_client/resources/feedback/feedback.d.ts +275 -0
  139. package/dist/_openapi_client/resources/feedback/feedback.js +61 -0
  140. package/dist/_openapi_client/resources/feedback/tokens.cjs +35 -0
  141. package/dist/_openapi_client/resources/feedback/tokens.d.ts +130 -0
  142. package/dist/_openapi_client/resources/feedback/tokens.js +31 -0
  143. package/dist/_openapi_client/resources/index.cjs +35 -0
  144. package/dist/_openapi_client/resources/index.d.ts +15 -0
  145. package/dist/_openapi_client/resources/index.js +17 -0
  146. package/dist/_openapi_client/resources/info.cjs +15 -0
  147. package/dist/_openapi_client/resources/info.d.ts +51 -0
  148. package/dist/_openapi_client/resources/info.js +11 -0
  149. package/dist/_openapi_client/resources/online-evaluators.cjs +70 -0
  150. package/dist/_openapi_client/resources/online-evaluators.d.ts +284 -0
  151. package/dist/_openapi_client/resources/online-evaluators.js +66 -0
  152. package/dist/_openapi_client/resources/public/datasets.cjs +47 -0
  153. package/dist/_openapi_client/resources/public/datasets.d.ts +152 -0
  154. package/dist/_openapi_client/resources/public/datasets.js +43 -0
  155. package/dist/_openapi_client/resources/public/public.cjs +62 -0
  156. package/dist/_openapi_client/resources/public/public.d.ts +32 -0
  157. package/dist/_openapi_client/resources/public/public.js +25 -0
  158. package/dist/_openapi_client/resources/repos/directories.cjs +40 -0
  159. package/dist/_openapi_client/resources/repos/directories.d.ts +72 -0
  160. package/dist/_openapi_client/resources/repos/directories.js +36 -0
  161. package/dist/_openapi_client/resources/repos/repos.cjs +93 -0
  162. package/dist/_openapi_client/resources/repos/repos.d.ts +188 -0
  163. package/dist/_openapi_client/resources/repos/repos.js +56 -0
  164. package/dist/_openapi_client/resources/runs/rules.cjs +9 -0
  165. package/dist/_openapi_client/resources/runs/rules.d.ts +3 -0
  166. package/dist/_openapi_client/resources/runs/rules.js +5 -0
  167. package/dist/_openapi_client/resources/runs/runs.cjs +102 -0
  168. package/dist/_openapi_client/resources/runs/runs.d.ts +542 -0
  169. package/dist/_openapi_client/resources/runs/runs.js +65 -0
  170. package/dist/_openapi_client/resources/sandboxes/boxes.cjs +86 -0
  171. package/dist/_openapi_client/resources/sandboxes/boxes.d.ts +1121 -0
  172. package/dist/_openapi_client/resources/sandboxes/boxes.js +82 -0
  173. package/dist/_openapi_client/resources/sandboxes/sandboxes.cjs +63 -0
  174. package/dist/_openapi_client/resources/sandboxes/sandboxes.d.ts +13 -0
  175. package/dist/_openapi_client/resources/sandboxes/sandboxes.js +26 -0
  176. package/dist/_openapi_client/resources/sandboxes/snapshots.cjs +39 -0
  177. package/dist/_openapi_client/resources/sandboxes/snapshots.d.ts +130 -0
  178. package/dist/_openapi_client/resources/sandboxes/snapshots.js +35 -0
  179. package/dist/_openapi_client/resources/sessions/insights.cjs +54 -0
  180. package/dist/_openapi_client/resources/sessions/insights.d.ts +246 -0
  181. package/dist/_openapi_client/resources/sessions/insights.js +50 -0
  182. package/dist/_openapi_client/resources/sessions/sessions.cjs +109 -0
  183. package/dist/_openapi_client/resources/sessions/sessions.d.ts +674 -0
  184. package/dist/_openapi_client/resources/sessions/sessions.js +72 -0
  185. package/dist/_openapi_client/resources/settings.cjs +15 -0
  186. package/dist/_openapi_client/resources/settings.d.ts +18 -0
  187. package/dist/_openapi_client/resources/settings.js +11 -0
  188. package/dist/_openapi_client/resources/workspaces.cjs +35 -0
  189. package/dist/_openapi_client/resources/workspaces.d.ts +84 -0
  190. package/dist/_openapi_client/resources/workspaces.js +31 -0
  191. package/dist/_openapi_client/version.cjs +5 -0
  192. package/dist/_openapi_client/version.d.ts +1 -0
  193. package/dist/_openapi_client/version.js +2 -0
  194. package/dist/client.cjs +48 -19
  195. package/dist/client.d.ts +5 -0
  196. package/dist/client.js +29 -0
  197. package/dist/env.cjs +3 -3
  198. package/dist/env.d.ts +1 -1
  199. package/dist/env.js +1 -1
  200. package/dist/evaluation/_runner.cjs +31 -3
  201. package/dist/evaluation/_runner.d.ts +2 -0
  202. package/dist/evaluation/_runner.js +30 -4
  203. package/dist/experimental/otel/exporter.cjs +1 -1
  204. package/dist/experimental/otel/exporter.js +2 -2
  205. package/dist/experimental/vercel/telemetry.cjs +1 -1
  206. package/dist/experimental/vercel/telemetry.js +2 -2
  207. package/dist/index.cjs +4 -2
  208. package/dist/index.d.ts +2 -1
  209. package/dist/index.js +2 -1
  210. package/dist/run_trees.cjs +1 -1
  211. package/dist/run_trees.js +2 -2
  212. package/dist/sandbox/client.cjs +11 -3
  213. package/dist/sandbox/client.js +11 -3
  214. package/dist/sandbox/errors.cjs +2 -1
  215. package/dist/sandbox/errors.d.ts +2 -1
  216. package/dist/sandbox/errors.js +2 -1
  217. package/dist/sandbox/index.cjs +8 -2
  218. package/dist/sandbox/index.d.ts +3 -2
  219. package/dist/sandbox/index.js +2 -1
  220. package/dist/sandbox/mounts.cjs +114 -0
  221. package/dist/sandbox/mounts.d.ts +24 -0
  222. package/dist/sandbox/mounts.js +109 -0
  223. package/dist/sandbox/proxy_config.cjs +90 -5
  224. package/dist/sandbox/proxy_config.d.ts +19 -4
  225. package/dist/sandbox/proxy_config.js +86 -4
  226. package/dist/sandbox/types.d.ts +92 -3
  227. package/dist/traceable.cjs +1 -1
  228. package/dist/traceable.js +2 -2
  229. package/dist/utils/guard.cjs +13 -0
  230. package/dist/utils/guard.d.ts +6 -0
  231. package/dist/utils/guard.js +10 -0
  232. package/dist/utils/jestlike/globals.cjs +1 -1
  233. package/dist/utils/jestlike/globals.js +2 -2
  234. package/package.json +1 -1
package/README.md CHANGED
@@ -25,36 +25,41 @@ A typical workflow looks like:
25
25
 
26
26
  We'll walk through these steps in more detail below.
27
27
 
28
- ## Sandbox AWS auth proxy
28
+ ## Sandbox AWS Auth Proxy
29
29
 
30
- When you create a LangSmith sandbox that needs to call AWS services, use the
31
- sandbox AWS auth proxy helpers. The proxy keeps the real AWS credentials outside
32
- the sandbox and signs supported AWS HTTPS requests with SigV4, so code in the
33
- sandbox can use AWS SDKs normally without storing long-lived AWS keys in files,
34
- environment variables, shell history, or logs.
30
+ When sandbox code needs to call AWS services, use the sandbox AWS auth proxy.
31
+ The proxy keeps the real AWS credentials outside the sandbox and signs supported
32
+ AWS HTTPS requests with SigV4, so code in the sandbox can use AWS SDKs normally
33
+ without storing long-lived AWS keys in files, environment variables, shell
34
+ history, or logs.
35
35
 
36
- First, store `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` as LangSmith
37
- workspace secrets. Then create the sandbox with an AWS auth proxy config:
36
+ Store AWS credentials as LangSmith workspace secrets using names that make sense
37
+ for your workspace. Then create the sandbox with an AWS auth proxy config:
38
38
 
39
39
  ```ts
40
40
  import {
41
41
  SandboxClient,
42
- awsAuthProxyConfig,
42
+ awsAuth,
43
+ proxyConfig,
43
44
  workspaceSecret,
44
45
  } from "langsmith/sandbox";
45
46
 
46
47
  const client = new SandboxClient();
48
+ const authConfig = proxyConfig({
49
+ rules: [
50
+ awsAuth({
51
+ accessKeyId: workspaceSecret("SANDBOX_AWS_ACCESS_KEY_ID"),
52
+ secretAccessKey: workspaceSecret("SANDBOX_AWS_SECRET_ACCESS_KEY"),
53
+ }),
54
+ ],
55
+ });
47
56
 
48
57
  const sandbox = await client.createSandbox({
49
58
  name: "aws-sandbox",
50
- proxyConfig: awsAuthProxyConfig({
51
- accessKeyId: workspaceSecret("AWS_ACCESS_KEY_ID"),
52
- secretAccessKey: workspaceSecret("AWS_SECRET_ACCESS_KEY"),
53
- }),
59
+ proxyConfig: authConfig,
54
60
  });
55
61
 
56
62
  try {
57
- // Your sandbox code can use the AWS SDK, the AWS CLI, or other AWS tooling normally.
58
63
  const result = await sandbox.run("node your-aws-script.js");
59
64
  console.log(result.stdout);
60
65
  } finally {
@@ -64,7 +69,148 @@ try {
64
69
 
65
70
  Use `opaqueSecret("...")` instead of `workspaceSecret(...)` when your application
66
71
  needs to pass short-lived write-only AWS credentials at sandbox creation time.
67
- Plaintext AWS credential values are not supported.
72
+ Plaintext AWS credential values are not accepted directly; wrap them as
73
+ `opaqueSecret(...)` values.
74
+
75
+ ## Sandbox GCP Auth Proxy
76
+
77
+ When sandbox code needs to call Google APIs, use the sandbox GCP auth proxy.
78
+ The proxy keeps the service account JSON outside the sandbox and injects OAuth
79
+ bearer tokens for the Google API hosts you explicitly match.
80
+
81
+ Store the service account JSON as a LangSmith workspace secret. Then create the
82
+ sandbox with a GCP auth proxy config:
83
+
84
+ ```ts
85
+ import {
86
+ SandboxClient,
87
+ gcpAuth,
88
+ proxyConfig,
89
+ workspaceSecret,
90
+ } from "langsmith/sandbox";
91
+
92
+ const client = new SandboxClient();
93
+ const authConfig = proxyConfig({
94
+ rules: [
95
+ gcpAuth({
96
+ serviceAccountJson: workspaceSecret("SANDBOX_GCP_SERVICE_ACCOUNT_JSON"),
97
+ scopes: ["https://www.googleapis.com/auth/devstorage.read_write"],
98
+ }),
99
+ ],
100
+ });
101
+
102
+ const sandbox = await client.createSandbox({
103
+ name: "gcp-sandbox",
104
+ proxyConfig: authConfig,
105
+ });
106
+
107
+ try {
108
+ const result = await sandbox.run("node your-gcp-script.js");
109
+ console.log(result.stdout);
110
+ } finally {
111
+ await sandbox.delete();
112
+ }
113
+ ```
114
+
115
+ Use `opaqueSecret("...")` for short-lived write-only service account JSON.
116
+ Plaintext service account JSON is not accepted directly.
117
+
118
+ ## Sandbox Bucket Mounts
119
+
120
+ When you create a LangSmith sandbox that needs filesystem access to a bucket or
121
+ prefix, pass a `mountConfig` on sandbox creation. Mount specs contain only the
122
+ bucket target. Provider credentials stay in explicit auth config, and the SDK
123
+ expands `mountConfig` into the backend `mounts` and `proxy_config` fields.
124
+ If you also pass `proxyConfig`, its rules are merged with the mount-generated
125
+ proxy auth rules.
126
+ Provider auth for the same provider must appear in only one place.
127
+
128
+ S3 mounts require an enabled AWS auth proxy rule:
129
+
130
+ ```ts
131
+ import {
132
+ awsAuth,
133
+ mountConfig,
134
+ s3Mount,
135
+ workspaceSecret,
136
+ } from "langsmith/sandbox";
137
+
138
+ const mountCfg = mountConfig({
139
+ auth: [
140
+ awsAuth({
141
+ accessKeyId: workspaceSecret("SANDBOX_AWS_ACCESS_KEY_ID"),
142
+ secretAccessKey: workspaceSecret("SANDBOX_AWS_SECRET_ACCESS_KEY"),
143
+ }),
144
+ ],
145
+ mounts: [
146
+ s3Mount({
147
+ id: "customer_data",
148
+ mountPath: "/mnt/mounts/customer-data",
149
+ bucket: "example-bucket",
150
+ prefix: "datasets/customer-data",
151
+ region: "us-east-1",
152
+ endpointUrl: "https://s3.amazonaws.com",
153
+ pathStyle: false,
154
+ readOnly: false,
155
+ }),
156
+ ],
157
+ });
158
+
159
+ const sandbox = await client.createSandbox({
160
+ name: "s3-mount-sandbox",
161
+ mountConfig: mountCfg,
162
+ });
163
+
164
+ try {
165
+ const result = await sandbox.run("ls /mnt/mounts/customer-data");
166
+ console.log(result.stdout);
167
+ } finally {
168
+ await sandbox.delete();
169
+ }
170
+ ```
171
+
172
+ GCS mounts require an enabled GCP auth proxy rule that covers
173
+ `storage.googleapis.com` and `www.googleapis.com`. Read/write mounts require
174
+ `devstorage.read_write` or `cloud-platform`; read-only mounts can also use
175
+ `devstorage.read_only`.
176
+
177
+ ```ts
178
+ import {
179
+ gcpAuth,
180
+ gcsMount,
181
+ mountConfig,
182
+ workspaceSecret,
183
+ } from "langsmith/sandbox";
184
+
185
+ const mountCfg = mountConfig({
186
+ auth: [
187
+ gcpAuth({
188
+ serviceAccountJson: workspaceSecret("SANDBOX_GCP_SERVICE_ACCOUNT_JSON"),
189
+ scopes: ["https://www.googleapis.com/auth/devstorage.read_write"],
190
+ }),
191
+ ],
192
+ mounts: [
193
+ gcsMount({
194
+ id: "customer_data",
195
+ mountPath: "/mnt/mounts/customer-data",
196
+ bucket: "example-bucket",
197
+ prefix: "datasets/customer-data",
198
+ }),
199
+ ],
200
+ });
201
+
202
+ const sandbox = await client.createSandbox({
203
+ name: "gcs-mount-sandbox",
204
+ mountConfig: mountCfg,
205
+ });
206
+
207
+ try {
208
+ const result = await sandbox.run("ls /mnt/mounts/customer-data");
209
+ console.log(result.stdout);
210
+ } finally {
211
+ await sandbox.delete();
212
+ }
213
+ ```
68
214
 
69
215
  ## 1. Connect to LangSmith
70
216