blaxel 0.1.9rc36__py3-none-any.whl → 0.1.10rc38__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 (52) hide show
  1. blaxel/agents/__init__.py +52 -15
  2. blaxel/authentication/__init__.py +11 -2
  3. blaxel/authentication/devicemode.py +1 -0
  4. blaxel/common/autoload.py +0 -2
  5. blaxel/common/internal.py +75 -0
  6. blaxel/common/settings.py +6 -1
  7. blaxel/mcp/server.py +2 -1
  8. blaxel/sandbox/base.py +68 -0
  9. blaxel/sandbox/client/__init__.py +8 -0
  10. blaxel/sandbox/client/api/__init__.py +1 -0
  11. blaxel/sandbox/client/api/filesystem/__init__.py +0 -0
  12. blaxel/sandbox/client/api/filesystem/delete_filesystem_path.py +184 -0
  13. blaxel/sandbox/client/api/filesystem/get_filesystem_path.py +184 -0
  14. blaxel/sandbox/client/api/filesystem/put_filesystem_path.py +189 -0
  15. blaxel/sandbox/client/api/network/__init__.py +0 -0
  16. blaxel/sandbox/client/api/network/delete_network_process_pid_monitor.py +169 -0
  17. blaxel/sandbox/client/api/network/get_network_process_pid_ports.py +169 -0
  18. blaxel/sandbox/client/api/network/post_network_process_pid_monitor.py +195 -0
  19. blaxel/sandbox/client/api/process/__init__.py +0 -0
  20. blaxel/sandbox/client/api/process/delete_process_identifier.py +163 -0
  21. blaxel/sandbox/client/api/process/delete_process_identifier_kill.py +189 -0
  22. blaxel/sandbox/client/api/process/get_process.py +135 -0
  23. blaxel/sandbox/client/api/process/get_process_identifier.py +159 -0
  24. blaxel/sandbox/client/api/process/get_process_identifier_logs.py +167 -0
  25. blaxel/sandbox/client/api/process/post_process.py +176 -0
  26. blaxel/sandbox/client/client.py +162 -0
  27. blaxel/sandbox/client/errors.py +16 -0
  28. blaxel/sandbox/client/models/__init__.py +35 -0
  29. blaxel/sandbox/client/models/delete_network_process_pid_monitor_response_200.py +45 -0
  30. blaxel/sandbox/client/models/directory.py +110 -0
  31. blaxel/sandbox/client/models/error_response.py +60 -0
  32. blaxel/sandbox/client/models/file.py +105 -0
  33. blaxel/sandbox/client/models/file_request.py +78 -0
  34. blaxel/sandbox/client/models/file_with_content.py +114 -0
  35. blaxel/sandbox/client/models/get_network_process_pid_ports_response_200.py +45 -0
  36. blaxel/sandbox/client/models/get_process_identifier_logs_response_200.py +45 -0
  37. blaxel/sandbox/client/models/port_monitor_request.py +60 -0
  38. blaxel/sandbox/client/models/post_network_process_pid_monitor_response_200.py +45 -0
  39. blaxel/sandbox/client/models/process_kill_request.py +60 -0
  40. blaxel/sandbox/client/models/process_request.py +118 -0
  41. blaxel/sandbox/client/models/process_response.py +123 -0
  42. blaxel/sandbox/client/models/success_response.py +69 -0
  43. blaxel/sandbox/client/py.typed +1 -0
  44. blaxel/sandbox/client/types.py +46 -0
  45. blaxel/sandbox/filesystem.py +102 -0
  46. blaxel/sandbox/process.py +57 -0
  47. blaxel/sandbox/sandbox.py +92 -0
  48. blaxel/tools/__init__.py +62 -21
  49. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10rc38.dist-info}/METADATA +1 -1
  50. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10rc38.dist-info}/RECORD +52 -11
  51. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10rc38.dist-info}/WHEEL +0 -0
  52. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10rc38.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,92 @@
1
+ import asyncio
2
+ import logging
3
+ import time
4
+ from typing import List
5
+
6
+ from ..client.api.compute.create_sandbox import asyncio as create_sandbox
7
+ from ..client.api.compute.delete_sandbox import asyncio as delete_sandbox
8
+ from ..client.api.compute.get_sandbox import asyncio as get_sandbox
9
+ from ..client.api.compute.list_sandboxes import asyncio as list_sandboxes
10
+ from ..client.client import client
11
+ from ..client.models import Sandbox
12
+ from .filesystem import SandboxFileSystem
13
+ from .process import SandboxProcess
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ class SandboxInstance:
18
+ def __init__(self, sandbox: Sandbox):
19
+ self.sandbox = sandbox
20
+ self.fs = SandboxFileSystem(sandbox)
21
+ self.process = SandboxProcess(sandbox)
22
+
23
+ @property
24
+ def metadata(self):
25
+ return self.sandbox.metadata
26
+
27
+ @property
28
+ def status(self):
29
+ return self.sandbox.status
30
+
31
+ @property
32
+ def events(self):
33
+ return self.sandbox.events
34
+
35
+ @property
36
+ def spec(self):
37
+ return self.sandbox.spec
38
+
39
+ async def wait(self, max_wait: int = 60000, interval: int = 1000) -> None:
40
+ start_time = time.time() * 1000 # Convert to milliseconds
41
+ while self.sandbox.status != "DEPLOYED":
42
+ await asyncio.sleep(interval / 1000) # Convert to seconds
43
+ try:
44
+ response = await get_sandbox(
45
+ self.sandbox.metadata.name,
46
+ client=client,
47
+ )
48
+ logger.info(f"Waiting for sandbox to be deployed, status: {response.status}")
49
+ self.sandbox = response
50
+ except Exception as e:
51
+ logger.error("Could not retrieve sandbox", exc_info=e)
52
+
53
+ if self.sandbox.status == "FAILED":
54
+ raise Exception("Sandbox failed to deploy")
55
+
56
+ if (time.time() * 1000) - start_time > max_wait:
57
+ raise Exception("Sandbox did not deploy in time")
58
+
59
+ @classmethod
60
+ async def create(cls, sandbox: Sandbox) -> "SandboxInstance":
61
+ if not sandbox.spec:
62
+ raise Exception("Sandbox spec is required")
63
+ if not sandbox.spec.runtime:
64
+ raise Exception("Sandbox runtime is required")
65
+ sandbox.spec.runtime.generation = sandbox.spec.runtime.generation or "mk3"
66
+
67
+ response = await create_sandbox(
68
+ client=client,
69
+ body=sandbox,
70
+ )
71
+ return cls(response)
72
+
73
+ @classmethod
74
+ async def get(cls, sandbox_name: str) -> "SandboxInstance":
75
+ response = await get_sandbox(
76
+ sandbox_name,
77
+ client=client,
78
+ )
79
+ return cls(response)
80
+
81
+ @classmethod
82
+ async def list(cls) -> List["SandboxInstance"]:
83
+ response = await list_sandboxes()
84
+ return [cls(sandbox) for sandbox in response]
85
+
86
+ @classmethod
87
+ async def delete(cls, sandbox_name: str) -> Sandbox:
88
+ response = await delete_sandbox(
89
+ sandbox_name,
90
+ client=client,
91
+ )
92
+ return response
blaxel/tools/__init__.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  import json
3
3
  import os
4
+ import traceback
4
5
  from contextlib import AsyncExitStack
5
6
  from logging import getLogger
6
7
  from typing import Any, cast
@@ -10,6 +11,7 @@ from mcp.types import CallToolResult
10
11
  from mcp.types import Tool as MCPTool
11
12
 
12
13
  from ..common.env import env
14
+ from ..common.internal import get_global_unique_hash
13
15
  from ..common.settings import settings
14
16
  from ..instrumentation.span import SpanManager
15
17
  from ..mcp.client import websocket_client
@@ -22,15 +24,19 @@ if os.getenv("BL_SERVER_PORT"):
22
24
  DEFAULT_TIMEOUT = 5
23
25
 
24
26
  class PersistentWebSocket:
25
- def __init__(self, url: str, timeout: int = DEFAULT_TIMEOUT, timeout_enabled: bool = True):
27
+ def __init__(self, url: str, name: str, timeout: int = DEFAULT_TIMEOUT, timeout_enabled: bool = True):
26
28
  self.url = url
29
+ self.name = name
27
30
  self.timeout = timeout
28
- self.timeout_enabled = timeout_enabled
29
31
  self.session_exit_stack = AsyncExitStack()
30
32
  self.client_exit_stack = AsyncExitStack()
31
33
  self.session: ClientSession = None
32
34
  self.timer_task = None
33
35
  self.tools_cache = []
36
+ if settings.bl_cloud:
37
+ self.timeout_enabled = False
38
+ else:
39
+ self.timeout_enabled = timeout_enabled
34
40
 
35
41
  def with_metas(self, metas: dict[str, Any]):
36
42
  self.metas = metas
@@ -46,19 +52,32 @@ class PersistentWebSocket:
46
52
  logger.debug(f"Tool {tool_name} returned {call_tool_result}")
47
53
  if self.timeout_enabled:
48
54
  self._reset_timer()
55
+ else:
56
+ await self._close()
49
57
  return call_tool_result
50
58
 
51
59
  async def list_tools(self):
52
- await self._initialize()
53
- if self.timeout_enabled:
54
- self._remove_timer()
55
- logger.debug("Listing tools")
56
- list_tools_result = await self.session.list_tools()
57
- self.tools_cache = list_tools_result.tools
58
- logger.debug(f"Tools listed: {list_tools_result}")
59
- if self.timeout_enabled:
60
- self._reset_timer()
61
- return list_tools_result
60
+ logger.debug(f"Listing tools for {self.name}")
61
+ span_attributes = {
62
+ "tool.server": self.url,
63
+ "tool.server_name": self.name,
64
+ "span.type": "tool.list",
65
+ }
66
+ with SpanManager("blaxel-tracer").create_active_span(self.name, span_attributes) as span:
67
+ await self._initialize()
68
+ logger.debug(f"Initialized websocket for {self.name}")
69
+ if self.timeout_enabled:
70
+ self._remove_timer()
71
+ logger.debug("Listing tools")
72
+ list_tools_result = await self.session.list_tools()
73
+ self.tools_cache = list_tools_result.tools
74
+ logger.debug(f"Tools listed: {list_tools_result}")
75
+ if self.timeout_enabled:
76
+ self._reset_timer()
77
+ else:
78
+ await self._close()
79
+ span.set_attribute("tool.list.result", list_tools_result.model_dump_json())
80
+ return list_tools_result
62
81
 
63
82
  def get_tools(self):
64
83
  return self.tools_cache
@@ -125,6 +144,7 @@ def convert_mcp_tool_to_blaxel_tool(
125
144
  "tool.args": json.dumps(arguments),
126
145
  "tool.server": url,
127
146
  "tool.server_name": name,
147
+ "span.type": "tool.call",
128
148
  }
129
149
  with SpanManager("blaxel-tracer").create_active_span("blaxel-tool-call", span_attributes):
130
150
  logger.debug(f"Calling tool {tool.name} with arguments {arguments}")
@@ -163,22 +183,37 @@ class BlTools:
163
183
  self.timeout = timeout
164
184
  self.timeout_enabled = timeout_enabled
165
185
 
166
- def _external_url(self, name: str) -> str:
167
- return f"{settings.run_url}/{settings.auth.workspace_name}/functions/{name}"
186
+ def _internal_url(self, name: str):
187
+ """Get the internal URL for the agent using a hash of workspace and agent name."""
188
+ hash = get_global_unique_hash(settings.workspace, "function", name)
189
+ return f"{settings.run_internal_protocol}://bl-{settings.env}-{hash}.{settings.run_internal_hostname}"
168
190
 
169
- def _url(self, name: str) -> str:
191
+ def _forced_url(self, name: str):
192
+ """Get the forced URL from environment variables if set."""
170
193
  env_var = name.replace("-", "_").upper()
171
194
  if env[f"BL_FUNCTION_{env_var}_URL"]:
172
195
  return env[f"BL_FUNCTION_{env_var}_URL"]
173
- elif env[f"BL_FUNCTION_{env_var}_SERVICE_NAME"]:
174
- return f"https://{env[f'BL_FUNCTION_{env_var}_SERVICE_NAME']}.{settings.run_internal_hostname}"
175
- return self._external_url(name)
196
+ return None
197
+
198
+ def _external_url(self, name: str):
199
+ return f"{settings.run_url}/{settings.workspace}/functions/{name}"
176
200
 
177
- def _fallback_url(self, name: str) -> str | None:
201
+ def _fallback_url(self, name: str):
178
202
  if self._external_url(name) != self._url(name):
179
203
  return self._external_url(name)
180
204
  return None
181
205
 
206
+ def _url(self, name: str):
207
+ logger.debug(f"Getting URL for {name}")
208
+ if self._forced_url(name):
209
+ logger.debug(f"Forced URL found for {name}: {self._forced_url(name)}")
210
+ return self._forced_url(name)
211
+ if settings.run_internal_hostname:
212
+ logger.debug(f"Internal hostname found for {name}: {self._internal_url(name)}")
213
+ return self._internal_url(name)
214
+ logger.debug(f"No URL found for {name}, using external URL")
215
+ return self._external_url(name)
216
+
182
217
  def get_tools(self) -> list[Tool]:
183
218
  """Get a list of all tools from all connected servers."""
184
219
  all_tools: list[Tool] = []
@@ -240,8 +275,13 @@ class BlTools:
240
275
  except Exception as e:
241
276
  if not self._fallback_url(name):
242
277
  raise e
278
+ logger.warning(f"Error connecting to {name}: {e}\n{traceback.format_exc()}")
243
279
  url = self._fallback_url(name)
244
- await self.connect_with_url(name, url)
280
+ try:
281
+ await self.connect_with_url(name, url)
282
+ except Exception as e:
283
+ logger.error(f"Error connecting to {name} with fallback URL: {e}\n{traceback.format_exc()}")
284
+ raise e
245
285
 
246
286
  async def connect_with_url(
247
287
  self, name: str, url: str
@@ -255,7 +295,8 @@ class BlTools:
255
295
  logger.debug(f"Initializing session and loading tools from {url}")
256
296
 
257
297
  if not toolPersistances.get(name):
258
- toolPersistances[name] = PersistentWebSocket(url, timeout=self.timeout, timeout_enabled=self.timeout_enabled)
298
+ logger.debug(f"Creating new persistent websocket for {name}")
299
+ toolPersistances[name] = PersistentWebSocket(url, name, timeout=self.timeout, timeout_enabled=self.timeout_enabled)
259
300
  await toolPersistances[name].list_tools()
260
301
  logger.debug(f"Loaded {len(toolPersistances[name].get_tools())} tools from {url}")
261
302
  return toolPersistances[name].with_metas(self.metas)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blaxel
3
- Version: 0.1.9rc36
3
+ Version: 0.1.10rc38
4
4
  Summary: Add your description here
5
5
  Author-email: cploujoux <cploujoux@blaxel.ai>
6
6
  License-File: LICENSE
@@ -1,9 +1,9 @@
1
1
  blaxel/__init__.py,sha256=qmuJKjl5oGnjj4TbqHcJqUkKoxk4PvCsMb6-8rp67pE,159
2
- blaxel/agents/__init__.py,sha256=HCyqYdDHr0GkET2BBhoVpR2ZRFq824LqrYK4zf2C0dk,3369
3
- blaxel/authentication/__init__.py,sha256=WInBOiziLiEbBcrE0QXF10Ue2HJkL8aCIXjNcF5OvTA,2942
2
+ blaxel/agents/__init__.py,sha256=RDWkvfICIXXaQxJuuSu63jsFj_F8NBAL4U752hfN4AE,5262
3
+ blaxel/authentication/__init__.py,sha256=tL9XKNCek5ixszTqjlKRBvidXMg4Nj6ODlBKlxxA9uk,3283
4
4
  blaxel/authentication/apikey.py,sha256=nOgLVba7EfVk3V-qm7cj-30LAL-BT7NOMIlGL9Ni1jY,1249
5
5
  blaxel/authentication/clientcredentials.py,sha256=SfWNuZVHZw6jjMqoBMMB4ZawmpyKbVPbOpv-JDFqzw8,3080
6
- blaxel/authentication/devicemode.py,sha256=kWbArs4okIIDqW-ql5oV2eQRE_LpRwfadCB6LG83irw,5986
6
+ blaxel/authentication/devicemode.py,sha256=JorMjo1JNbZ2sWw-cQaNG_909mdCB1Km3nzjmTdFHgs,6024
7
7
  blaxel/authentication/oauth.py,sha256=Q5J0taIK1JrvGB6BC-zz3hM77HPCNu01DPGf4l7xjPQ,1417
8
8
  blaxel/authentication/types.py,sha256=E3lmfbmZuJ4Bc_kGA0Kc0GZC02Sjha1_2CbabP7z6oo,1603
9
9
  blaxel/cache/__init__.py,sha256=i655Ah-0hOKBQXBxLlnnMgK89GHQaOonY30Tv7tKQ04,66
@@ -236,10 +236,11 @@ blaxel/client/models/workspace.py,sha256=K_xs5Z6qFVgw6ShzaSBtTLIdltcpfu1Op422IA2
236
236
  blaxel/client/models/workspace_labels.py,sha256=WbnUY6eCTkUNdY7hhhSF-KQCl8fWFfkCf7hzCTiNp4A,1246
237
237
  blaxel/client/models/workspace_runtime.py,sha256=dxEpmwCFPOCRKHRKhY-iW7j6TbtL5qUsbjzSn00uTXU,1665
238
238
  blaxel/client/models/workspace_user.py,sha256=70CcifQWYbeWG7TDui4pblTzUe5sVK0AS19vNCzKE8g,3423
239
- blaxel/common/autoload.py,sha256=SXlmPBcXUFSgqPCE4PKLYoIceloVUeDYRRI1QvDpvQA,265
239
+ blaxel/common/autoload.py,sha256=NFuK71-IHOY2JQyEBSjDCVfUaQ8D8PJsEUEryIdG4AU,263
240
240
  blaxel/common/env.py,sha256=wTbzPDdNgz4HMJiS2NCZmQlN0qpxy1PQEYBaZgtvhoc,1247
241
+ blaxel/common/internal.py,sha256=J-etgnBzelb-ln8uBR9WIWzrEUyDds8rdT9FImjes9g,2390
241
242
  blaxel/common/logger.py,sha256=emqgonfZMBIaQPowpngWOOZxWQieKP-yj_OzGZT8Oe8,1918
242
- blaxel/common/settings.py,sha256=cTPeFQ4fie23dLJUqnxqkVWbT1i1tsATDhEFE1vf74s,1959
243
+ blaxel/common/settings.py,sha256=X0g0_hIR19qfjSeWNf8qraxb_UTSbYukVHJeRHKLTn8,2138
243
244
  blaxel/instrumentation/exporters.py,sha256=EoX3uaBVku1Rg49pSNXKFyHhgY5OV3Ih6UlqgjF5epw,1670
244
245
  blaxel/instrumentation/log.py,sha256=4tGyvLg6r4DbjqJfajYbbZ1toUzF4Q4H7kHVqYWFAEA,2537
245
246
  blaxel/instrumentation/manager.py,sha256=jVwVasyMI6tu0zv27DVYOaN57nXYuHFJ8QzJQKaNoK4,8880
@@ -247,7 +248,7 @@ blaxel/instrumentation/map.py,sha256=zZoiUiQHmik5WQZ4VCWNARSa6ppMi0r7D6hlb41N-Mg
247
248
  blaxel/instrumentation/span.py,sha256=X2lwfu_dyxwQTMQJT2vbXOrbVSChEhjRLc413QOxQJM,3244
248
249
  blaxel/mcp/__init__.py,sha256=KednMrtuc4Y0O3lv7u1Lla54FCk8UX9c1k0USjL3Ahk,69
249
250
  blaxel/mcp/client.py,sha256=cFFXfpKXoMu8qTUly2ejF0pX2iBQkSNAxqwvDV1V6xY,4979
250
- blaxel/mcp/server.py,sha256=Rqa6fXoP96-ePz0OIBlsFhwcBa6s5NfR87_3SRUj50Q,7249
251
+ blaxel/mcp/server.py,sha256=GIldtA_NgIc2dzd7ZpPvpbhpIt_7AfKu5yS_YJ0bDGg,7310
251
252
  blaxel/models/__init__.py,sha256=BawkSR3ociBSHAXr42upBiX8AFJTXFVdvnt8F_CMdpc,3880
252
253
  blaxel/models/crewai.py,sha256=xsp8TmbtDjtqj5std5Gpg-yammhhgdTNL7Vlr1RSPa8,1705
253
254
  blaxel/models/googleadk.py,sha256=I2rH3ZpzdrLnFhNt01XqAC73rGvQ9gnwXjIEagFWBk8,1951
@@ -259,7 +260,47 @@ blaxel/models/pydantic.py,sha256=4_z2KtaeEiRMt_Zz6Ghy6il-QiaXzE3yizDJnCBcWO8,332
259
260
  blaxel/models/custom/langchain/gemini.py,sha256=AkhpuVMXnh1CyJ0zR2NMTtxQFPPHtAdHf_cyNzV3EsA,55421
260
261
  blaxel/models/custom/llamaindex/cohere.py,sha256=Igj5Y1ozf1V4feIXfBHDdaTFU7od_wuOhm0yChZNxMY,19109
261
262
  blaxel/models/custom/pydantic/gemini.py,sha256=rbsunh-M7EEKlD5ir3GlA-8a12JzPFcvsf6NISjzE5I,1052
262
- blaxel/tools/__init__.py,sha256=zBWKvxl0c3Oc24ZqP6ICvQ4GrCHXGTlySNWVzOGFHKY,9626
263
+ blaxel/sandbox/base.py,sha256=Ps1RvasF1MB8h0-XRz3Sxz7UGjpAPaI6pvrfonUckHo,2106
264
+ blaxel/sandbox/filesystem.py,sha256=vBeKUp1s3Gp1vD6pccg0MDwEolz_j6S-9Bfi7WD0gxQ,4604
265
+ blaxel/sandbox/process.py,sha256=EWI6UctxdWo4Vd4VUSilABJME3g3x3ceuSuBN2mDfhM,2519
266
+ blaxel/sandbox/sandbox.py,sha256=meRE_iUx1dvlav-RIBdzQLrrHE_efBTtcbq-u9_mId4,2992
267
+ blaxel/sandbox/client/__init__.py,sha256=N26bD5o1jsTb48oExow6Rgivd8ylaU9jaWZfZsVilP8,128
268
+ blaxel/sandbox/client/client.py,sha256=tcP8cJ4Q3dV9aB3yQ01dDXO-ekfsa3WGGFz4DQAEf8I,7079
269
+ blaxel/sandbox/client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
270
+ blaxel/sandbox/client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
271
+ blaxel/sandbox/client/types.py,sha256=E1hhDh_zXfsSQ0NCt9-uw90_Mr5iIlsdfnfvxv5HarU,1005
272
+ blaxel/sandbox/client/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
273
+ blaxel/sandbox/client/api/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
+ blaxel/sandbox/client/api/filesystem/delete_filesystem_path.py,sha256=PVm-a_nacy6QQb6mh_HIDx-JkiFYeUOypHZq0AtE6dA,4782
275
+ blaxel/sandbox/client/api/filesystem/get_filesystem_path.py,sha256=Hp8pM8xvi5zAjO5xujAbKxALUBJHH-JdyvWIEJ8dHo0,5010
276
+ blaxel/sandbox/client/api/filesystem/put_filesystem_path.py,sha256=GIqwjevow7sRw5Po9iraYY1Yl5UXqgv2pjUw9nle97E,4759
277
+ blaxel/sandbox/client/api/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
+ blaxel/sandbox/client/api/network/delete_network_process_pid_monitor.py,sha256=nhQe7a4PqBhFQ6pZxSPilcvg-tt3jP0tmuX3Po8bd9g,4581
279
+ blaxel/sandbox/client/api/network/get_network_process_pid_ports.py,sha256=2lsDR78DMqJChOHe84JCy2iTHGIEDnzDArm4SMnt3JY,4455
280
+ blaxel/sandbox/client/api/network/post_network_process_pid_monitor.py,sha256=3sUYnFyMwpypQfLBZvIcFB9v8RrhNIMOKGb1uM15pzU,5235
281
+ blaxel/sandbox/client/api/process/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
282
+ blaxel/sandbox/client/api/process/delete_process_identifier.py,sha256=7ihlG9_R7p-sbw_4h93cnOyBGYhiWfFtpsjY6z9P7iQ,4179
283
+ blaxel/sandbox/client/api/process/delete_process_identifier_kill.py,sha256=1x_KMc7uJD_fap8uoTmZkWIDTgLJKmCTGcOP1Mr6X1E,4858
284
+ blaxel/sandbox/client/api/process/get_process.py,sha256=XWf_hNFZLkS14eWjBjir22QwdtV313_llrQGExJ7lZo,3588
285
+ blaxel/sandbox/client/api/process/get_process_identifier.py,sha256=OqmxuKKHDGX6rwS0Mavn6nnL0X_7AasPUdS5RS04URc,4159
286
+ blaxel/sandbox/client/api/process/get_process_identifier_logs.py,sha256=m34pQjMLpEUJsqkjEh0OafdNaMbDhR0NhzaJ1jWLJVk,4513
287
+ blaxel/sandbox/client/api/process/post_process.py,sha256=cemvWEtrZ24RBx3QHusE9Al_yrgQip9nBSkaQhSGUkI,4527
288
+ blaxel/sandbox/client/models/__init__.py,sha256=KiSEopbp_UpGTz_3kcRG_XDd7Vfcn3LbOAmj8Ex-PFs,1288
289
+ blaxel/sandbox/client/models/delete_network_process_pid_monitor_response_200.py,sha256=9cQgKDjG98sMridjXKgeR2oZzFKcQ0G9QIojhwYFosI,1376
290
+ blaxel/sandbox/client/models/directory.py,sha256=pHJ2lX4IjuMIdZSkb7plmzPsmALP3EwUymfH0Ra4YgA,3482
291
+ blaxel/sandbox/client/models/error_response.py,sha256=lI15zKBoD2X9yHzSiEaYGUn5TPTxWM7j1Tu5crtd23M,1581
292
+ blaxel/sandbox/client/models/file.py,sha256=-SwKgrzbXfPQfxhAp2S_P8On-vT5Ac4Q-ODKRdwdsts,2835
293
+ blaxel/sandbox/client/models/file_request.py,sha256=xOZSru-fae-En-_2YBgkHa_6iGbqbJsG3RLqBuajVY0,2227
294
+ blaxel/sandbox/client/models/file_with_content.py,sha256=CGRXhUrrYtLAxQIsJi01kFUVAt1Bkj2tFUalULLA77Q,3153
295
+ blaxel/sandbox/client/models/get_network_process_pid_ports_response_200.py,sha256=x4uv80kK0GVroWO98l5sE84a6uwZ8pnUKTpGg81ipWA,1351
296
+ blaxel/sandbox/client/models/get_process_identifier_logs_response_200.py,sha256=pEs9vxD29oxrojOgeyppXXmFVvem7beWzm5_i4TkgDc,1343
297
+ blaxel/sandbox/client/models/port_monitor_request.py,sha256=LK7sjAK1TF1ojgG4vGytaKLVtV6-SNXxfZ3sxew1cRE,1698
298
+ blaxel/sandbox/client/models/post_network_process_pid_monitor_response_200.py,sha256=Y8BvNGKU8SlzTGqhaQZk_WWIrmFpNU0LVcmLFjNvqhA,1366
299
+ blaxel/sandbox/client/models/process_kill_request.py,sha256=TqhuOmVPm_yKZj52YFv3yyu2UA8eVgXEio4sgCVAR-0,1614
300
+ blaxel/sandbox/client/models/process_request.py,sha256=FGWl2SnuHdBY-8t_YatpKwYCUfA3LMHt8RnU0hjPcLc,3598
301
+ blaxel/sandbox/client/models/process_response.py,sha256=WMfxuNTrL5wo5QT7HOR4_CTyf9XztO5cPvmtlHMdNd8,3624
302
+ blaxel/sandbox/client/models/success_response.py,sha256=JQbCUIdVJy_TJ3mp8IuvCGbKgCm_iZQMMrqn8uZkxCk,1874
303
+ blaxel/tools/__init__.py,sha256=4lzqDt0FNWcO8L0DkFzY1KTHLNtgEux66id4Psq7sXY,11520
263
304
  blaxel/tools/common.py,sha256=JGK052v_fvwWBFYnIArlBnFFViYyFrqdDn3gdVf53EU,1332
264
305
  blaxel/tools/crewai.py,sha256=rPrRGwkXejunJQ6In1IsYAxJPNbr6d9EckXrSIHQods,638
265
306
  blaxel/tools/googleadk.py,sha256=65qJysecgAMujxsyGxuCEVL0fWoR5I489DMiSA3ZaGs,2265
@@ -269,7 +310,7 @@ blaxel/tools/llamaindex.py,sha256=-gQ-C9V_h9a11J4ItsbWjXrCJOg0lRKsb98v9rVsNak,71
269
310
  blaxel/tools/openai.py,sha256=GuFXkj6bXEwldyVr89jEsRAi5ihZUVEVe327QuWiGNs,653
270
311
  blaxel/tools/pydantic.py,sha256=CvnNbAG_J4yBtA-XFI4lQrq3FYKjNd39hu841vZT004,1801
271
312
  blaxel/tools/types.py,sha256=YPCGJ4vZDhqR0X2H_TWtc5chQScsC32nGTQdRKJlO8Y,707
272
- blaxel-0.1.9rc36.dist-info/METADATA,sha256=SZtld07RmNMSYyFr-EiHMrmAmWk5jFINSNfGH-Hdy74,11606
273
- blaxel-0.1.9rc36.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
274
- blaxel-0.1.9rc36.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
275
- blaxel-0.1.9rc36.dist-info/RECORD,,
313
+ blaxel-0.1.10rc38.dist-info/METADATA,sha256=TAXdNIA59FvIxgNACgKP6H9JXvpOFT37sWICNAnhVSA,11607
314
+ blaxel-0.1.10rc38.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
315
+ blaxel-0.1.10rc38.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
316
+ blaxel-0.1.10rc38.dist-info/RECORD,,