blaxel 0.2.30__py3-none-any.whl → 0.2.31rc120__py3-none-any.whl

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 (25) hide show
  1. blaxel/__init__.py +2 -2
  2. blaxel/core/client/client.py +18 -2
  3. blaxel/core/sandbox/client/api/filesystem/delete_filesystem_tree_path.py +188 -0
  4. blaxel/core/sandbox/client/api/filesystem/get_filesystem_content_search_path.py +250 -0
  5. blaxel/core/sandbox/client/api/filesystem/get_filesystem_find_path.py +248 -0
  6. blaxel/core/sandbox/client/api/filesystem/get_filesystem_search_path.py +237 -0
  7. blaxel/core/sandbox/client/api/filesystem/get_filesystem_tree_path.py +197 -0
  8. blaxel/core/sandbox/client/api/filesystem/put_filesystem_tree_path.py +223 -0
  9. blaxel/core/sandbox/client/models/__init__.py +16 -0
  10. blaxel/core/sandbox/client/models/content_search_match.py +98 -0
  11. blaxel/core/sandbox/client/models/content_search_response.py +97 -0
  12. blaxel/core/sandbox/client/models/find_match.py +69 -0
  13. blaxel/core/sandbox/client/models/find_response.py +88 -0
  14. blaxel/core/sandbox/client/models/fuzzy_search_match.py +78 -0
  15. blaxel/core/sandbox/client/models/fuzzy_search_response.py +88 -0
  16. blaxel/core/sandbox/client/models/tree_request.py +76 -0
  17. blaxel/core/sandbox/client/models/tree_request_files.py +49 -0
  18. blaxel/core/sandbox/default/action.py +12 -8
  19. blaxel/core/sandbox/default/filesystem.py +238 -48
  20. blaxel/core/sandbox/default/interpreter.py +62 -55
  21. blaxel/core/sandbox/default/process.py +66 -46
  22. {blaxel-0.2.30.dist-info → blaxel-0.2.31rc120.dist-info}/METADATA +1 -1
  23. {blaxel-0.2.30.dist-info → blaxel-0.2.31rc120.dist-info}/RECORD +25 -11
  24. {blaxel-0.2.30.dist-info → blaxel-0.2.31rc120.dist-info}/WHEEL +0 -0
  25. {blaxel-0.2.30.dist-info → blaxel-0.2.31rc120.dist-info}/licenses/LICENSE +0 -0
@@ -198,55 +198,55 @@ class CodeInterpreter(SandboxInstance):
198
198
 
199
199
  execution = CodeInterpreter.Execution()
200
200
 
201
- async with self.process.get_client() as client:
202
- timeout_cfg = httpx.Timeout(
203
- connect=connect_timeout, read=read_timeout, write=write_timeout, pool=pool_timeout
204
- )
205
- async with client.stream(
206
- "POST",
207
- "/port/8888/execute",
208
- json=body,
209
- timeout=timeout_cfg,
210
- ) as response:
211
- if response.status_code >= 400:
212
- try:
213
- body_text = await response.aread()
214
- body_text = body_text.decode(errors="ignore")
215
- except Exception:
216
- body_text = "<unavailable>"
217
- req = getattr(response, "request", None)
218
- method = getattr(req, "method", "UNKNOWN") if req else "UNKNOWN"
219
- url = str(getattr(req, "url", "UNKNOWN")) if req else "UNKNOWN"
220
- reason = getattr(response, "reason_phrase", "")
221
- details = (
222
- "Execution failed\n"
223
- f"- method: {method}\n- url: {url}\n- status: {response.status_code} {reason}\n"
224
- f"- response-headers: {dict(response.headers)}\n- body:\n{body_text}"
201
+ client = self.process.get_client()
202
+ timeout_cfg = httpx.Timeout(
203
+ connect=connect_timeout, read=read_timeout, write=write_timeout, pool=pool_timeout
204
+ )
205
+ async with client.stream(
206
+ "POST",
207
+ "/port/8888/execute",
208
+ json=body,
209
+ timeout=timeout_cfg,
210
+ ) as response:
211
+ if response.status_code >= 400:
212
+ try:
213
+ body_text = await response.aread()
214
+ body_text = body_text.decode(errors="ignore")
215
+ except Exception:
216
+ body_text = "<unavailable>"
217
+ req = getattr(response, "request", None)
218
+ method = getattr(req, "method", "UNKNOWN") if req else "UNKNOWN"
219
+ url = str(getattr(req, "url", "UNKNOWN")) if req else "UNKNOWN"
220
+ reason = getattr(response, "reason_phrase", "")
221
+ details = (
222
+ "Execution failed\n"
223
+ f"- method: {method}\n- url: {url}\n- status: {response.status_code} {reason}\n"
224
+ f"- response-headers: {dict(response.headers)}\n- body:\n{body_text}"
225
+ )
226
+ self.logger.debug(details)
227
+ raise RuntimeError(details)
228
+
229
+ async for line in response.aiter_lines():
230
+ if not line:
231
+ continue
232
+ try:
233
+ decoded = line
234
+ except Exception:
235
+ decoded = str(line)
236
+ try:
237
+ self._parse_output(
238
+ execution,
239
+ decoded,
240
+ on_stdout=on_stdout,
241
+ on_stderr=on_stderr,
242
+ on_result=on_result,
243
+ on_error=on_error,
225
244
  )
226
- self.logger.debug(details)
227
- raise RuntimeError(details)
228
-
229
- async for line in response.aiter_lines():
230
- if not line:
231
- continue
232
- try:
233
- decoded = line
234
- except Exception:
235
- decoded = str(line)
236
- try:
237
- self._parse_output(
238
- execution,
239
- decoded,
240
- on_stdout=on_stdout,
241
- on_stderr=on_stderr,
242
- on_result=on_result,
243
- on_error=on_error,
244
- )
245
- except json.JSONDecodeError:
245
+ except json.JSONDecodeError:
246
246
  # Fallback: treat as stdout text-only message
247
- execution.logs.stdout.append(decoded)
248
- if on_stdout:
249
- on_stdout(CodeInterpreter.OutputMessage(decoded, None, False))
247
+ execution.logs.stdout.append(decoded)
248
+ if on_stdout:
249
+ on_stdout(CodeInterpreter.OutputMessage(decoded, None, False))
250
250
 
251
251
  return execution
252
252
 
@@ -262,15 +262,19 @@ class CodeInterpreter(SandboxInstance):
262
262
  if cwd:
263
263
  data["cwd"] = cwd
264
264
 
265
- async with self.process.get_client() as client:
266
- response = await client.post(
267
- "/port/8888/contexts",
268
- json=data,
269
- timeout=request_timeout or 10.0,
270
- )
265
+ client = self.process.get_client()
266
+ response = await client.post(
267
+ "/port/8888/contexts",
268
+ json=data,
269
+ timeout=request_timeout or 10.0,
270
+ )
271
+ try:
272
+ # Always read response body first
273
+ body_bytes = await response.aread()
274
+
271
275
  if response.status_code >= 400:
272
276
  try:
273
- body_text = response.text
277
+ body_text = body_bytes.decode('utf-8', errors='ignore')
274
278
  except Exception:
275
279
  body_text = "<unavailable>"
276
280
  method = getattr(response.request, "method", "UNKNOWN")
@@ -283,7 +287,10 @@ class CodeInterpreter(SandboxInstance):
283
287
  )
284
288
  self.logger.debug(details)
285
289
  raise RuntimeError(details)
286
- data = response.json()
290
+
291
+ data = json.loads(body_bytes)
287
292
  return CodeInterpreter.Context.from_json(data)
293
+ finally:
294
+ await response.aclose()
288
295
 
289
296
 
@@ -200,40 +200,37 @@ class SandboxProcess(SandboxAction):
200
200
  # Always start process without wait_for_completion to avoid server-side blocking
201
201
  if should_wait_for_completion and on_log is not None:
202
202
  process.wait_for_completion = False
203
- async with self.get_client() as client_instance:
204
- response = await client_instance.post("/process", json=process.to_dict())
205
- # Parse JSON response only once, with better error handling
206
- response_data = None
207
- if response.content:
208
- try:
209
- response_data = response.json()
210
- except Exception:
211
- # If JSON parsing fails, check the response first
212
- self.handle_response_error(response)
213
- raise
214
-
203
+
204
+ client = self.get_client()
205
+ response = await client.post("/process", json=process.to_dict())
206
+ try:
207
+ content_bytes = await response.aread()
215
208
  self.handle_response_error(response)
209
+ import json
210
+ response_data = json.loads(content_bytes) if content_bytes else None
216
211
  result = ProcessResponse.from_dict(response_data)
212
+ finally:
213
+ await response.aclose()
217
214
 
218
- # Handle wait_for_completion with parallel log streaming
219
- if should_wait_for_completion and on_log is not None:
215
+ # Handle wait_for_completion with parallel log streaming
216
+ if should_wait_for_completion and on_log is not None:
217
+ stream_control = self._stream_logs(result.pid, {"on_log": on_log})
218
+ try:
219
+ # Wait for process completion
220
+ result = await self.wait(result.pid, interval=500, max_wait=1000 * 60 * 60)
221
+ finally:
222
+ # Clean up log streaming
223
+ if stream_control:
224
+ stream_control["close"]()
225
+ else:
226
+ # For non-blocking execution, set up log streaming immediately if requested
227
+ if on_log is not None:
220
228
  stream_control = self._stream_logs(result.pid, {"on_log": on_log})
221
- try:
222
- # Wait for process completion
223
- result = await self.wait(result.pid, interval=500, max_wait=1000 * 60 * 60)
224
- finally:
225
- # Clean up log streaming
226
- if stream_control:
227
- stream_control["close"]()
228
- else:
229
- # For non-blocking execution, set up log streaming immediately if requested
230
- if on_log is not None:
231
- stream_control = self._stream_logs(result.pid, {"on_log": on_log})
232
- return ProcessResponseWithLog(
233
- result, lambda: stream_control["close"]() if stream_control else None
234
- )
235
-
236
- return result
229
+ return ProcessResponseWithLog(
230
+ result, lambda: stream_control["close"]() if stream_control else None
231
+ )
232
+
233
+ return result
237
234
 
238
235
  async def wait(
239
236
  self, identifier: str, max_wait: int = 60000, interval: int = 1000
@@ -257,37 +254,58 @@ class SandboxProcess(SandboxAction):
257
254
  return data
258
255
 
259
256
  async def get(self, identifier: str) -> ProcessResponse:
260
- async with self.get_client() as client_instance:
261
- response = await client_instance.get(f"/process/{identifier}")
257
+ import json
258
+ client = self.get_client()
259
+ response = await client.get(f"/process/{identifier}")
260
+ try:
261
+ data = json.loads(await response.aread())
262
262
  self.handle_response_error(response)
263
- return ProcessResponse.from_dict(response.json())
263
+ return ProcessResponse.from_dict(data)
264
+ finally:
265
+ await response.aclose()
264
266
 
265
267
  async def list(self) -> list[ProcessResponse]:
266
- async with self.get_client() as client_instance:
267
- response = await client_instance.get("/process")
268
+ import json
269
+ client = self.get_client()
270
+ response = await client.get("/process")
271
+ try:
272
+ data = json.loads(await response.aread())
268
273
  self.handle_response_error(response)
269
- return [ProcessResponse.from_dict(item) for item in response.json()]
274
+ return [ProcessResponse.from_dict(item) for item in data]
275
+ finally:
276
+ await response.aclose()
270
277
 
271
278
  async def stop(self, identifier: str) -> SuccessResponse:
272
- async with self.get_client() as client_instance:
273
- response = await client_instance.delete(f"/process/{identifier}")
279
+ import json
280
+ client = self.get_client()
281
+ response = await client.delete(f"/process/{identifier}")
282
+ try:
283
+ data = json.loads(await response.aread())
274
284
  self.handle_response_error(response)
275
- return SuccessResponse.from_dict(response.json())
285
+ return SuccessResponse.from_dict(data)
286
+ finally:
287
+ await response.aclose()
276
288
 
277
289
  async def kill(self, identifier: str) -> SuccessResponse:
278
- async with self.get_client() as client_instance:
279
- response = await client_instance.delete(f"/process/{identifier}/kill")
290
+ import json
291
+ client = self.get_client()
292
+ response = await client.delete(f"/process/{identifier}/kill")
293
+ try:
294
+ data = json.loads(await response.aread())
280
295
  self.handle_response_error(response)
281
- return SuccessResponse.from_dict(response.json())
296
+ return SuccessResponse.from_dict(data)
297
+ finally:
298
+ await response.aclose()
282
299
 
283
300
  async def logs(
284
301
  self, identifier: str, log_type: Literal["stdout", "stderr", "all"] = "all"
285
302
  ) -> str:
286
- async with self.get_client() as client_instance:
287
- response = await client_instance.get(f"/process/{identifier}/logs")
303
+ import json
304
+ client = self.get_client()
305
+ response = await client.get(f"/process/{identifier}/logs")
306
+ try:
307
+ data = json.loads(await response.aread())
288
308
  self.handle_response_error(response)
289
-
290
- data = response.json()
291
309
  if log_type == "all":
292
310
  return data.get("logs", "")
293
311
  elif log_type == "stdout":
@@ -296,3 +314,5 @@ class SandboxProcess(SandboxAction):
296
314
  return data.get("stderr", "")
297
315
 
298
316
  raise Exception("Unsupported log type")
317
+ finally:
318
+ await response.aclose()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blaxel
3
- Version: 0.2.30
3
+ Version: 0.2.31rc120
4
4
  Summary: Blaxel - AI development platform SDK
5
5
  Project-URL: Homepage, https://blaxel.ai
6
6
  Project-URL: Documentation, https://docs.blaxel.ai
@@ -1,4 +1,4 @@
1
- blaxel/__init__.py,sha256=cYJGcG2cbn4ieiOOx5G6CgS82USYtqTTSk8I9dSIxrY,412
1
+ blaxel/__init__.py,sha256=BsxvXTrkIkw0RrMs_El9xCAr3r5RuLSsJ28sPEabLsQ,420
2
2
  blaxel/core/__init__.py,sha256=CKMC7TaCYdOdnwqcJCN9VjBbNg366coZUGTxI1mgFQQ,1710
3
3
  blaxel/core/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  blaxel/core/agents/__init__.py,sha256=nZfYRnBlpYLD2rnMpVgl3VabQm4w6NoDbGU3qHtpGhw,4376
@@ -11,7 +11,7 @@ blaxel/core/authentication/types.py,sha256=_gQ9nj1LF9xEUyHNZC6GIh7hLC11RYOVJL2eP
11
11
  blaxel/core/cache/__init__.py,sha256=i655Ah-0hOKBQXBxLlnnMgK89GHQaOonY30Tv7tKQ04,66
12
12
  blaxel/core/cache/cache.py,sha256=fS3tYFiQFJfnceDLktbiviwyGBv0vysQ80Qn1zL-BwA,1296
13
13
  blaxel/core/client/__init__.py,sha256=EeR30NIh2X0SF9oL9kEJbDgSWT_he-y7nbJQvYFgz30,137
14
- blaxel/core/client/client.py,sha256=6YTHrnnCWh5sGbOKNwhfXwog0y4tnaPur-FPEN55bO0,7060
14
+ blaxel/core/client/client.py,sha256=3oJYUigCQqy4VrvU3hcHokYm8UJuzPEDP_EabFixQL4,8116
15
15
  blaxel/core/client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
16
16
  blaxel/core/client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
17
17
  blaxel/core/client/response_interceptor.py,sha256=fcxryjNHXCe1rj4MJdSCVaysl83tHeUhDGmJbRASPwE,3057
@@ -359,14 +359,20 @@ blaxel/core/sandbox/client/api/fastapply/put_codegen_fastapply_path.py,sha256=Cf
359
359
  blaxel/core/sandbox/client/api/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
360
  blaxel/core/sandbox/client/api/filesystem/delete_filesystem_multipart_upload_id_abort.py,sha256=jUorG0CXTCUjnuDYCVJDgZJ2Ab9jWH5iDf7bYbH0gjw,4378
361
361
  blaxel/core/sandbox/client/api/filesystem/delete_filesystem_path.py,sha256=-6cUPdV52iK7bw6e_9Kb1ah2gYmUNlhjxTrDL8Nl7E8,4892
362
+ blaxel/core/sandbox/client/api/filesystem/delete_filesystem_tree_path.py,sha256=zsnPTO42XXNe8HhIGWVeedxMI0SKq5qiEHxq-nZubpg,4921
363
+ blaxel/core/sandbox/client/api/filesystem/get_filesystem_content_search_path.py,sha256=bWtXPwebSEGsUGQswrpcqDKad1zAaGtZarwE06UhiuU,7370
364
+ blaxel/core/sandbox/client/api/filesystem/get_filesystem_find_path.py,sha256=ig0kSIatwhjdZul2UZbEkeLYFcKTfcptUpll7OaHmus,7146
362
365
  blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart.py,sha256=SedhIOKRlQeh6f_VjWKcezYtTfygva2KXCPUf_l6Fcs,3850
363
366
  blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart_upload_id_parts.py,sha256=jzfvF36yAiSAGZbjnzLLsbKcHqpP9KCLg2pJiTBTTNY,4480
364
367
  blaxel/core/sandbox/client/api/filesystem/get_filesystem_path.py,sha256=9nHpooL69NArp-pi3E2QQFFs_DHobSrX2NuCtzMc5Zo,6404
368
+ blaxel/core/sandbox/client/api/filesystem/get_filesystem_search_path.py,sha256=91WIMK2VOLApHTwfsocwekdU0xv11JR9d-IC6P_aPSY,7142
369
+ blaxel/core/sandbox/client/api/filesystem/get_filesystem_tree_path.py,sha256=ERgzPhZSYUuYtu_fQCT2Lr8zQfu1iDOuDZw-tVjJe14,5532
365
370
  blaxel/core/sandbox/client/api/filesystem/get_watch_filesystem_path.py,sha256=O3mGfv_yJhhN1BxfFL34XUMqhjJBDxSN5-kKJ0BJVws,4927
366
371
  blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_initiate_path.py,sha256=kj1XItK0Ad6p37cu1jzvCUdGv6a9TsRg6M27Vy4bG6Q,5051
367
372
  blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_upload_id_complete.py,sha256=9YkRSN1AfamF3bserH7GkNfXS-kn5xJ2WHUEA3Ia6o0,5147
368
373
  blaxel/core/sandbox/client/api/filesystem/put_filesystem_multipart_upload_id_part.py,sha256=VXRch_XKDzqUsjeZ_AhRTtr-1L-l3n-dfKn-W0ZOMVI,5826
369
374
  blaxel/core/sandbox/client/api/filesystem/put_filesystem_path.py,sha256=9Y0KLGyMHPMWKCAy4JIoxrgWFWeu-4roQfKBC4aomlU,4877
375
+ blaxel/core/sandbox/client/api/filesystem/put_filesystem_tree_path.py,sha256=2hNDwkJY7LCoiQ8RFsPa3lyyHs1dWZWmTJzy4MoLq9s,6148
370
376
  blaxel/core/sandbox/client/api/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
371
377
  blaxel/core/sandbox/client/api/network/delete_network_process_pid_monitor.py,sha256=9L2PMcnZiarVVSWneZOzJkQ6aAyxa2y_sSNzQwOHuV8,4691
372
378
  blaxel/core/sandbox/client/api/network/get_network_process_pid_ports.py,sha256=2Czvf5QnObhTZf7A7asgRlLtdrcuqkProU6ydbExdoM,4565
@@ -386,9 +392,11 @@ blaxel/core/sandbox/client/api/root/options.py,sha256=Ri5WqtwXvul0Woe0aT4pB6YEi5
386
392
  blaxel/core/sandbox/client/api/root/patch.py,sha256=kku7eQP8X7ABuiUVcuYZ5ouklifiyhqJxZkg-x5Ex-M,3301
387
393
  blaxel/core/sandbox/client/api/root/post.py,sha256=wfJMBM1oyGeinvBxGKYPxhgfVlNb7CWqpUHS0Hh6SMM,3300
388
394
  blaxel/core/sandbox/client/api/root/put.py,sha256=5BnSR0F_0FVdelkIUGBqnxJNtHocy-JCWrHKPbTuG-0,3299
389
- blaxel/core/sandbox/client/models/__init__.py,sha256=vVMLK2whUGxNpMLV5TNI4S85XpYb9dM-B0MotlMKxM4,2844
395
+ blaxel/core/sandbox/client/models/__init__.py,sha256=C5e8VSXAKB_oO6DqYVYlxkC5QTiZBucZnAc8eWPu-zM,3407
390
396
  blaxel/core/sandbox/client/models/apply_edit_request.py,sha256=-FKKqvSyYhfUpg514HnmjQ5fBe2VGNCLK5Rtzhjuj0o,1943
391
397
  blaxel/core/sandbox/client/models/apply_edit_response.py,sha256=pB2N_EDjT7IJcUYr1_nD7jpYQ8n7w7XfWqZ1GvMTaW0,3320
398
+ blaxel/core/sandbox/client/models/content_search_match.py,sha256=5mqistsioqZvKrOGMJ1rE8WPwmcYXymKZXDFux6FBdY,2687
399
+ blaxel/core/sandbox/client/models/content_search_response.py,sha256=eZetAN55dXuTwOMqE4piTwPY5omZTOrv8xYjDzj3saM,2918
392
400
  blaxel/core/sandbox/client/models/delete_network_process_pid_monitor_response_200.py,sha256=9cQgKDjG98sMridjXKgeR2oZzFKcQ0G9QIojhwYFosI,1376
393
401
  blaxel/core/sandbox/client/models/directory.py,sha256=Cufag2aJuBHXfxDnfiXL4oEiQE5GSb5FWH7Tu_hOhtc,3186
394
402
  blaxel/core/sandbox/client/models/error_response.py,sha256=4UZjR8ej0uFPl4CmkMplYebqS3U9EDodqNBltQtGvxI,1493
@@ -398,6 +406,10 @@ blaxel/core/sandbox/client/models/file_with_content.py,sha256=iDMYClAJBJK-l1Kr0y
398
406
  blaxel/core/sandbox/client/models/filesystem_multipart_upload.py,sha256=sMgmNfxB2zXB-xDQN6joQYCS4cs8opqYFR-LIFxgGGI,3561
399
407
  blaxel/core/sandbox/client/models/filesystem_multipart_upload_parts.py,sha256=35yEfWLC4KBRDcG5WGiMBu7Qj8KXe-GKmmhT0X5g_dY,1976
400
408
  blaxel/core/sandbox/client/models/filesystem_uploaded_part.py,sha256=I0SqbiXpTy9dvtbM-wl-9P2wpTBvI3rYmxYrDYJD4dU,2491
409
+ blaxel/core/sandbox/client/models/find_match.py,sha256=L1vnOolCTs4kj_sNHzptn79J_uE48QzhPLqqYVLLz1Y,1818
410
+ blaxel/core/sandbox/client/models/find_response.py,sha256=Yf3ZvsopMcK-8mXrtHtjQlIZmekl6XVGvzwv6c9fh-M,2548
411
+ blaxel/core/sandbox/client/models/fuzzy_search_match.py,sha256=jNRteKOX5JohI6m-dOuO9_FBCRgqkdVpj023Mc_fkg8,2106
412
+ blaxel/core/sandbox/client/models/fuzzy_search_response.py,sha256=5om3loRK9Bw07sJ3K5NuyorxURwYgzk7Pg6v8OizQCY,2637
401
413
  blaxel/core/sandbox/client/models/get_network_process_pid_ports_response_200.py,sha256=x4uv80kK0GVroWO98l5sE84a6uwZ8pnUKTpGg81ipWA,1351
402
414
  blaxel/core/sandbox/client/models/multipart_complete_request.py,sha256=1R7mqasb7KDIcX0-YmvU9WGE6kkPeEsWOVEBukdUXCo,2365
403
415
  blaxel/core/sandbox/client/models/multipart_initiate_request.py,sha256=vgS2tEiASIly6xRxnzrhCLCGnlhqFW51yLrMsLbGmPI,1696
@@ -418,15 +430,17 @@ blaxel/core/sandbox/client/models/ranked_file.py,sha256=REYmMt8E0iu1MlhS8uqXfJr-
418
430
  blaxel/core/sandbox/client/models/reranking_response.py,sha256=SC9T4BePWzKM4-wjzTHgbU5Q0i3QzB_TQiyHxwc6CZw,2842
419
431
  blaxel/core/sandbox/client/models/subdirectory.py,sha256=obztIgi_XjT4pPoT1-dyOX6O8k0e4ERZUTiI9qgkhJM,1593
420
432
  blaxel/core/sandbox/client/models/success_response.py,sha256=m8Bj9GJjN4yYQsPszC68izkuTRzEE9DCHjOaDdIYeGg,1825
433
+ blaxel/core/sandbox/client/models/tree_request.py,sha256=IPtQqDSnfZhc_izDO6OtcH2KiLI-i8G9vNQkfADQ2sw,2257
434
+ blaxel/core/sandbox/client/models/tree_request_files.py,sha256=4pt0c5PTLs66tkGGW9n2lqhY1eIemPMw_Eqd-S2YUTA,1330
421
435
  blaxel/core/sandbox/client/models/welcome_response.py,sha256=Bx3L8qHJI1q4dl_hPmkcEz3iPGz2PS1MVzku0O0vblc,2406
422
436
  blaxel/core/sandbox/default/__init__.py,sha256=9URzscKkEzpAwycPbtJTSWyDAT-8JI-LobgpcLK3kn4,325
423
- blaxel/core/sandbox/default/action.py,sha256=HC1Y7ou-583IKfkZH5_aj61WZEO0WK544kxCKK6-6ac,2466
437
+ blaxel/core/sandbox/default/action.py,sha256=aukfRfCvOYje2fLp6sBd1CaGRTNtdQ32YCpjNoCYQug,2727
424
438
  blaxel/core/sandbox/default/codegen.py,sha256=RpcUDyjyk5VMNGQRx56R9CXEy7gje-qPnr4jexd2Sc0,3195
425
- blaxel/core/sandbox/default/filesystem.py,sha256=Z1KMQiTsJGR0hg76-GMKxHNDpEp4Cz1FfRS-BwprHBI,17051
426
- blaxel/core/sandbox/default/interpreter.py,sha256=EWWvezBA3xbUDP8zoL9jSBPjgS7knwe4y7_cOUu04iM,11226
439
+ blaxel/core/sandbox/default/filesystem.py,sha256=hTZ5EH6LgP_uZ2ouQIh6E0HZxg8q3fcBpGRoQyBdL3o,23452
440
+ blaxel/core/sandbox/default/interpreter.py,sha256=bhTCNM8HP74iSHq9Nsq9i9ExGLJRr0BcgZe_WHHrPTA,11219
427
441
  blaxel/core/sandbox/default/network.py,sha256=3ZvrJB_9JdZrclNkwifZOIciz2OqzV0LQfbebjZXLIY,358
428
442
  blaxel/core/sandbox/default/preview.py,sha256=dSNPo64dohA8QMPlaS8SqF-0kzkAW0CRuGacREb0bsw,6114
429
- blaxel/core/sandbox/default/process.py,sha256=NLLCZo2Oj79_MPH-h3fCc0A8fc7a-7nrYpLBJQ-Kcjc,12001
443
+ blaxel/core/sandbox/default/process.py,sha256=aezKM-AmK-XrmUd-hw-WR_0bciB6naCcg8JLiQeACA0,12171
430
444
  blaxel/core/sandbox/default/sandbox.py,sha256=28KCro43ZxGk0zvRVat-W0NhYsTUCcIc-0XaDT67dOo,12229
431
445
  blaxel/core/sandbox/default/session.py,sha256=XzVpPOH_az6T38Opp4Hmj3RIg7QCzA1l5wh1YDh7czc,5313
432
446
  blaxel/core/sandbox/sync/__init__.py,sha256=Ulxw777O8CtZtmOn53uxNFx56pCzlrrBYRRoGDLDCl4,374
@@ -488,7 +502,7 @@ blaxel/telemetry/instrumentation/map.py,sha256=PCzZJj39yiYVYJrxLBNP-NW-tjjYyTijw
488
502
  blaxel/telemetry/instrumentation/utils.py,sha256=KInMYZH-mu9_wvetmf0EmgrfN3Sw8IWk2Y95v2u90_U,1901
489
503
  blaxel/telemetry/log/log.py,sha256=k9Gcs_wCDrZFFGCkcgMBROk2vTJIy7eIVNiP_pI2EPY,2430
490
504
  blaxel/telemetry/log/logger.py,sha256=NPAS3g82ryROjvc_DEZaTIfrcehoLEZoP-JkLxADxc0,4113
491
- blaxel-0.2.30.dist-info/METADATA,sha256=PqakkZQjcfocQtRxicP0Pamw7AwerRtiId4IkhlxmXw,10102
492
- blaxel-0.2.30.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
493
- blaxel-0.2.30.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
494
- blaxel-0.2.30.dist-info/RECORD,,
505
+ blaxel-0.2.31rc120.dist-info/METADATA,sha256=8D1t7R5Ex-7z6EKPbJtzByr6RWljpreF9zUnMCFNIrs,10107
506
+ blaxel-0.2.31rc120.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
507
+ blaxel-0.2.31rc120.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
508
+ blaxel-0.2.31rc120.dist-info/RECORD,,