moru 0.1.0__py3-none-any.whl → 0.2.0__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 (72) hide show
  1. moru/__init__.py +8 -0
  2. moru/api/__init__.py +4 -0
  3. moru/api/client/__init__.py +1 -1
  4. moru/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py +4 -0
  5. moru/api/client/api/sandboxes/get_sandboxes.py +4 -0
  6. moru/api/client/api/sandboxes/get_sandboxes_metrics.py +5 -1
  7. moru/api/client/api/sandboxes/get_sandboxes_sandbox_id.py +4 -0
  8. moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py +67 -23
  9. moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py +5 -0
  10. moru/api/client/api/sandboxes/get_v2_sandbox_runs.py +218 -0
  11. moru/api/client/api/sandboxes/get_v2_sandboxes.py +5 -2
  12. moru/api/client/api/sandboxes/post_sandboxes.py +4 -0
  13. moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_connect.py +6 -0
  14. moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py +5 -0
  15. moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py +3 -0
  16. moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py +5 -0
  17. moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py +4 -0
  18. moru/api/client/api/templates/delete_templates_template_id.py +3 -0
  19. moru/api/client/api/templates/get_templates.py +3 -0
  20. moru/api/client/api/templates/get_templates_template_id.py +3 -0
  21. moru/api/client/api/templates/get_templates_template_id_builds_build_id_logs.py +276 -0
  22. moru/api/client/api/templates/get_templates_template_id_builds_build_id_status.py +23 -4
  23. moru/api/client/api/templates/get_templates_template_id_files_hash.py +5 -0
  24. moru/api/client/api/templates/patch_templates_template_id.py +4 -0
  25. moru/api/client/api/templates/post_templates.py +4 -0
  26. moru/api/client/api/templates/post_templates_template_id.py +3 -0
  27. moru/api/client/api/templates/post_templates_template_id_builds_build_id.py +3 -0
  28. moru/api/client/api/templates/post_v2_templates.py +4 -0
  29. moru/api/client/api/templates/post_v3_templates.py +4 -0
  30. moru/api/client/api/templates/post_v_2_templates_template_id_builds_build_id.py +3 -0
  31. moru/api/client/models/__init__.py +30 -0
  32. moru/api/client/models/admin_sandbox_kill_result.py +67 -0
  33. moru/api/client/models/build_log_entry.py +1 -1
  34. moru/api/client/models/create_volume_request.py +59 -0
  35. moru/api/client/models/file_info.py +105 -0
  36. moru/api/client/models/file_info_type.py +9 -0
  37. moru/api/client/models/file_list_response.py +84 -0
  38. moru/api/client/models/logs_direction.py +9 -0
  39. moru/api/client/models/logs_source.py +9 -0
  40. moru/api/client/models/machine_info.py +83 -0
  41. moru/api/client/models/new_sandbox.py +19 -0
  42. moru/api/client/models/node.py +10 -0
  43. moru/api/client/models/node_detail.py +10 -0
  44. moru/api/client/models/sandbox_log_entry.py +9 -9
  45. moru/api/client/models/sandbox_log_event_type.py +11 -0
  46. moru/api/client/models/sandbox_run.py +130 -0
  47. moru/api/client/models/sandbox_run_end_reason.py +11 -0
  48. moru/api/client/models/sandbox_run_status.py +10 -0
  49. moru/api/client/models/template_build_logs_response.py +73 -0
  50. moru/api/client/models/upload_response.py +67 -0
  51. moru/api/client/models/volume.py +105 -0
  52. moru/sandbox/mcp.py +835 -6
  53. moru/sandbox_async/commands/command.py +5 -1
  54. moru/sandbox_async/filesystem/filesystem.py +5 -1
  55. moru/sandbox_async/main.py +21 -0
  56. moru/sandbox_async/sandbox_api.py +17 -11
  57. moru/sandbox_sync/filesystem/filesystem.py +5 -1
  58. moru/sandbox_sync/main.py +21 -0
  59. moru/sandbox_sync/sandbox_api.py +17 -11
  60. moru/volume/__init__.py +11 -0
  61. moru/volume/types.py +83 -0
  62. moru/volume/volume_api.py +330 -0
  63. moru/volume_async/__init__.py +5 -0
  64. moru/volume_async/main.py +327 -0
  65. moru/volume_async/volume_api.py +290 -0
  66. moru/volume_sync/__init__.py +5 -0
  67. moru/volume_sync/main.py +325 -0
  68. moru-0.2.0.dist-info/METADATA +122 -0
  69. {moru-0.1.0.dist-info → moru-0.2.0.dist-info}/RECORD +71 -46
  70. {moru-0.1.0.dist-info → moru-0.2.0.dist-info}/WHEEL +1 -1
  71. moru-0.1.0.dist-info/METADATA +0 -63
  72. {moru-0.1.0.dist-info/licenses → moru-0.2.0.dist-info}/LICENSE +0 -0
@@ -0,0 +1,325 @@
1
+ """Synchronous Volume class for persistent storage operations."""
2
+
3
+ from typing import BinaryIO, List, Optional, Union
4
+
5
+ from typing_extensions import Self, Unpack
6
+
7
+ from moru.connection_config import ApiParams, ConnectionConfig
8
+ from moru.volume.types import FileInfo, VolumeInfo
9
+ from moru.volume.volume_api import VolumeApi
10
+
11
+
12
+ class Volume:
13
+ """
14
+ Moru volume is persistent storage for sandboxes.
15
+
16
+ Volumes provide crash-durable file storage that persists across sandbox
17
+ lifecycle. Data is accessible even when no sandbox is running.
18
+
19
+ Use `Volume.create()` to create a new volume (idempotent).
20
+
21
+ Example:
22
+ ```python
23
+ from moru import Volume, Sandbox
24
+
25
+ # Create a volume (idempotent - returns existing if name matches)
26
+ vol = Volume.create(name="my-workspace")
27
+
28
+ # Attach to sandbox
29
+ sbx = Sandbox.create(
30
+ template="base",
31
+ volume_id=vol.volume_id,
32
+ volume_mount_path="/workspace",
33
+ )
34
+
35
+ # Work with files
36
+ files = vol.list_files("/")
37
+ vol.upload("/data/input.csv", b"col1,col2\\n1,2\\n")
38
+ content = vol.download("/output/result.csv")
39
+
40
+ # Delete volume
41
+ vol.delete()
42
+ ```
43
+ """
44
+
45
+ def __init__(
46
+ self,
47
+ volume_id: str,
48
+ name: str,
49
+ total_size_bytes: int = 0,
50
+ total_file_count: int = 0,
51
+ connection_config: Optional[ConnectionConfig] = None,
52
+ **opts: Unpack[ApiParams],
53
+ ):
54
+ """
55
+ Initialize a Volume instance.
56
+
57
+ :param volume_id: Unique volume identifier
58
+ :param name: Volume name
59
+ :param total_size_bytes: Total size of files in volume
60
+ :param total_file_count: Total number of files in volume
61
+ :param connection_config: Connection configuration
62
+ """
63
+ self._volume_id = volume_id
64
+ self._name = name
65
+ self._total_size_bytes = total_size_bytes
66
+ self._total_file_count = total_file_count
67
+ self._connection_config = connection_config or ConnectionConfig(**opts)
68
+
69
+ @property
70
+ def volume_id(self) -> str:
71
+ """Unique volume identifier."""
72
+ return self._volume_id
73
+
74
+ @property
75
+ def name(self) -> str:
76
+ """Volume name."""
77
+ return self._name
78
+
79
+ @property
80
+ def total_size_bytes(self) -> int:
81
+ """Total size of files in volume (bytes)."""
82
+ return self._total_size_bytes
83
+
84
+ @property
85
+ def total_file_count(self) -> int:
86
+ """Total number of files in volume."""
87
+ return self._total_file_count
88
+
89
+ @classmethod
90
+ def create(
91
+ cls,
92
+ name: str,
93
+ **opts: Unpack[ApiParams],
94
+ ) -> Self:
95
+ """
96
+ Create a new volume (idempotent).
97
+
98
+ If a volume with the same name already exists for this team,
99
+ the existing volume is returned.
100
+
101
+ :param name: Volume name (unique per team, slug format: lowercase, hyphens)
102
+
103
+ :return: Volume instance
104
+
105
+ Example:
106
+ ```python
107
+ vol = Volume.create(name="my-workspace")
108
+ print(f"Volume: {vol.volume_id}")
109
+ ```
110
+ """
111
+ info = VolumeApi._create_volume(name=name, **opts)
112
+
113
+ return cls(
114
+ volume_id=info.volume_id,
115
+ name=info.name,
116
+ total_size_bytes=info.total_size_bytes,
117
+ total_file_count=info.total_file_count,
118
+ **opts,
119
+ )
120
+
121
+ @classmethod
122
+ def get(
123
+ cls,
124
+ volume_id_or_name: str,
125
+ **opts: Unpack[ApiParams],
126
+ ) -> Self:
127
+ """
128
+ Get a volume by ID or name.
129
+
130
+ :param volume_id_or_name: Volume ID (vol_xxx) or name
131
+
132
+ :return: Volume instance
133
+
134
+ Example:
135
+ ```python
136
+ vol = Volume.get("vol_abc123")
137
+ # or
138
+ vol = Volume.get("my-workspace")
139
+ ```
140
+ """
141
+ info = VolumeApi._get_volume(volume_id_or_name=volume_id_or_name, **opts)
142
+
143
+ return cls(
144
+ volume_id=info.volume_id,
145
+ name=info.name,
146
+ total_size_bytes=info.total_size_bytes,
147
+ total_file_count=info.total_file_count,
148
+ **opts,
149
+ )
150
+
151
+ @staticmethod
152
+ def list(**opts: Unpack[ApiParams]) -> List[VolumeInfo]:
153
+ """
154
+ List all volumes.
155
+
156
+ :return: List of volume info objects
157
+
158
+ Example:
159
+ ```python
160
+ volumes = Volume.list()
161
+ for vol in volumes:
162
+ print(f"{vol.name}: {vol.total_size_bytes} bytes")
163
+ ```
164
+ """
165
+ volumes, _ = VolumeApi._list_volumes(**opts)
166
+ return volumes
167
+
168
+ def delete(self, **opts: Unpack[ApiParams]) -> bool:
169
+ """
170
+ Delete the volume.
171
+
172
+ :return: True if deleted, False if not found
173
+
174
+ Example:
175
+ ```python
176
+ vol = Volume.create(name="temp-workspace")
177
+ vol.delete()
178
+ ```
179
+ """
180
+ return VolumeApi._delete_volume(
181
+ volume_id_or_name=self._volume_id,
182
+ **self._connection_config.get_api_params(**opts),
183
+ )
184
+
185
+ def get_info(self, **opts: Unpack[ApiParams]) -> VolumeInfo:
186
+ """
187
+ Get updated volume information.
188
+
189
+ :return: Volume info with current size and file count
190
+
191
+ Example:
192
+ ```python
193
+ vol = Volume.get("my-workspace")
194
+ info = vol.get_info()
195
+ print(f"Size: {info.total_size_bytes} bytes, Files: {info.total_file_count}")
196
+ ```
197
+ """
198
+ info = VolumeApi._get_volume(
199
+ volume_id_or_name=self._volume_id,
200
+ **self._connection_config.get_api_params(**opts),
201
+ )
202
+
203
+ # Update cached values
204
+ self._total_size_bytes = info.total_size_bytes
205
+ self._total_file_count = info.total_file_count
206
+
207
+ return info
208
+
209
+ def list_files(
210
+ self,
211
+ path: str = "/",
212
+ **opts: Unpack[ApiParams],
213
+ ) -> List[FileInfo]:
214
+ """
215
+ List files and directories at a path.
216
+
217
+ Works even while volume is attached to a sandbox.
218
+
219
+ :param path: Directory path to list (default: "/")
220
+
221
+ :return: List of file info objects
222
+
223
+ Example:
224
+ ```python
225
+ files = vol.list_files("/src")
226
+ for f in files:
227
+ print(f"{f.name} ({f.type})")
228
+ ```
229
+ """
230
+ files, _ = VolumeApi._list_files(
231
+ volume_id=self._volume_id,
232
+ path=path,
233
+ **self._connection_config.get_api_params(**opts),
234
+ )
235
+ return files
236
+
237
+ def upload(
238
+ self,
239
+ path: str,
240
+ content: Union[bytes, BinaryIO],
241
+ **opts: Unpack[ApiParams],
242
+ ) -> None:
243
+ """
244
+ Upload file content to the volume.
245
+
246
+ Creates parent directories as needed. Works even while volume
247
+ is attached to a sandbox - changes are visible immediately.
248
+
249
+ :param path: Destination path in volume
250
+ :param content: File content as bytes or file-like object
251
+
252
+ Example:
253
+ ```python
254
+ vol.upload("/data/input.csv", b"col1,col2\\n1,2\\n")
255
+
256
+ # Or with a file
257
+ with open("local_file.txt", "rb") as f:
258
+ vol.upload("/remote/file.txt", f.read())
259
+ ```
260
+ """
261
+ if hasattr(content, "read"):
262
+ content = content.read()
263
+
264
+ VolumeApi._upload_file(
265
+ volume_id=self._volume_id,
266
+ path=path,
267
+ content=content,
268
+ **self._connection_config.get_api_params(**opts),
269
+ )
270
+
271
+ def download(
272
+ self,
273
+ path: str,
274
+ **opts: Unpack[ApiParams],
275
+ ) -> bytes:
276
+ """
277
+ Download file content from the volume.
278
+
279
+ Works even while volume is attached to a sandbox.
280
+
281
+ :param path: File path in volume
282
+
283
+ :return: File content as bytes
284
+
285
+ Example:
286
+ ```python
287
+ content = vol.download("/output/result.csv")
288
+ print(content.decode("utf-8"))
289
+ ```
290
+ """
291
+ return VolumeApi._download_file(
292
+ volume_id=self._volume_id,
293
+ path=path,
294
+ **self._connection_config.get_api_params(**opts),
295
+ )
296
+
297
+ def delete_file(
298
+ self,
299
+ path: str,
300
+ recursive: bool = False,
301
+ **opts: Unpack[ApiParams],
302
+ ) -> bool:
303
+ """
304
+ Delete file or directory from the volume.
305
+
306
+ :param path: Path to delete
307
+ :param recursive: Delete directory recursively
308
+
309
+ :return: True if deleted
310
+
311
+ Example:
312
+ ```python
313
+ vol.delete_file("/temp/cache.txt")
314
+ vol.delete_file("/temp/", recursive=True)
315
+ ```
316
+ """
317
+ return VolumeApi._delete_file(
318
+ volume_id=self._volume_id,
319
+ path=path,
320
+ recursive=recursive,
321
+ **self._connection_config.get_api_params(**opts),
322
+ )
323
+
324
+ def __repr__(self) -> str:
325
+ return f"Volume(volume_id={self._volume_id!r}, name={self._name!r})"
@@ -0,0 +1,122 @@
1
+ Metadata-Version: 2.3
2
+ Name: moru
3
+ Version: 0.2.0
4
+ Summary: Moru SDK that gives agents cloud environments
5
+ License: MIT
6
+ Author: Moru AI
7
+ Author-email: hello@moru.ai
8
+ Requires-Python: >=3.9,<4.0
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Dist: attrs (>=23.2.0)
17
+ Requires-Dist: dockerfile-parse (>=2.0.1,<3.0.0)
18
+ Requires-Dist: httpcore (>=1.0.5,<2.0.0)
19
+ Requires-Dist: httpx (>=0.27.0,<1.0.0)
20
+ Requires-Dist: packaging (>=24.1)
21
+ Requires-Dist: protobuf (>=4.21.0)
22
+ Requires-Dist: python-dateutil (>=2.8.2)
23
+ Requires-Dist: rich (>=14.0.0)
24
+ Requires-Dist: typing-extensions (>=4.1.0)
25
+ Requires-Dist: wcmatch (>=10.1,<11.0)
26
+ Project-URL: Bug Tracker, https://github.com/moru-ai/moru/issues
27
+ Project-URL: Homepage, https://github.com/moru-ai/moru
28
+ Project-URL: Repository, https://github.com/moru-ai/moru/tree/main/packages/python-sdk
29
+ Description-Content-Type: text/markdown
30
+
31
+ # Moru Python SDK
32
+
33
+ Moru SDK for Python provides cloud sandbox environments for AI agents.
34
+
35
+ ## Quick Start
36
+
37
+ ### 1. Create an Account
38
+
39
+ Sign up for a free account at [moru.io/dashboard](https://moru.io/dashboard).
40
+
41
+ ### 2. Get Your API Key
42
+
43
+ 1. Go to the [API Keys tab](https://moru.io/dashboard?tab=keys) in your dashboard
44
+ 2. Click **Create API Key**
45
+ 3. Copy your new API key
46
+
47
+ ### 3. Install the SDK
48
+
49
+ ```bash
50
+ pip install moru
51
+ ```
52
+
53
+ ### 4. Set Your API Key
54
+
55
+ ```bash
56
+ export MORU_API_KEY=your_api_key
57
+ ```
58
+
59
+ ### 5. Create a Sandbox and Run Commands
60
+
61
+ ```python
62
+ from moru import Sandbox
63
+
64
+ # Create a sandbox using the 'base' template (default)
65
+ sandbox = Sandbox.create()
66
+ print(f"Sandbox created: {sandbox.sandbox_id}")
67
+
68
+ # Run a command
69
+ result = sandbox.commands.run("echo 'Hello from Moru!'")
70
+ print(f"Output: {result.stdout}")
71
+ print(f"Exit code: {result.exit_code}")
72
+
73
+ # Write and read files
74
+ sandbox.files.write("/tmp/hello.txt", "Hello from Moru!")
75
+ content = sandbox.files.read("/tmp/hello.txt")
76
+ print(f"File content: {content}")
77
+
78
+ # Clean up
79
+ sandbox.kill()
80
+ ```
81
+
82
+ ### Using Async
83
+
84
+ For async applications, use `AsyncSandbox`:
85
+
86
+ ```python
87
+ import asyncio
88
+ from moru import AsyncSandbox
89
+
90
+ async def main():
91
+ sandbox = await AsyncSandbox.create()
92
+
93
+ result = await sandbox.commands.run("python3 --version")
94
+ print(result.stdout)
95
+
96
+ await sandbox.kill()
97
+
98
+ asyncio.run(main())
99
+ ```
100
+
101
+ ### Using a Custom Template
102
+
103
+ Create templates via the [dashboard](https://moru.io/dashboard) or CLI.
104
+
105
+ ```python
106
+ # Use a custom template
107
+ sandbox = Sandbox.create("my-template")
108
+
109
+ result = sandbox.commands.run("echo 'Running in custom template'")
110
+ print(result.stdout)
111
+
112
+ sandbox.kill()
113
+ ```
114
+
115
+ ## Documentation
116
+
117
+ For full documentation, visit [docs.moru.io](https://docs.moru.io).
118
+
119
+ ## Acknowledgement
120
+
121
+ This project is a fork of [E2B](https://github.com/e2b-dev/E2B).
122
+
@@ -1,46 +1,53 @@
1
- moru/__init__.py,sha256=OTepvrwEO-_wqXdxox-BB0_PEcbK0gCaq8iuCvMTJe8,4044
2
- moru/api/__init__.py,sha256=Kex7ww-Wsd9n13YP4V0szE31tDsg4nwAMs3KOetkvU8,5292
3
- moru/api/client/__init__.py,sha256=b28MpwoIgPULais3BheaYT1RIUdlNVBhXD1vrn4oE6A,151
1
+ moru/__init__.py,sha256=M04RpUahWlL92pX9kRthQxINs28T3pBiCMf57cfBlRE,4276
2
+ moru/api/__init__.py,sha256=iR0xKRJoBWZQkoHCbD-h44yicfHBTyiyJK8ke5BJrj0,5393
3
+ moru/api/client/__init__.py,sha256=Ou1lhGx3SMUxhJ0Ali14DnZfO3YvBOAVdzEYPl2ua2w,159
4
4
  moru/api/client/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
5
5
  moru/api/client/api/sandboxes/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
6
- moru/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py,sha256=exBkD4FP0t730uuuKvNPWwm9PMOE68BDeaKmt98gPlg,3945
7
- moru/api/client/api/sandboxes/get_sandboxes.py,sha256=cte-9oyXExgevw28JmoYcFF_GiCeCr0vkCf47LGtLxA,4745
8
- moru/api/client/api/sandboxes/get_sandboxes_metrics.py,sha256=KCF1aSbx_1PL2xAhfFqBYIueLYyzCiRomjSgXOU9HBA,4613
9
- moru/api/client/api/sandboxes/get_sandboxes_sandbox_id.py,sha256=M4a8lrM0NgaIF4G6rMw2LcoLs2FK6b4Dfc15JoroSkc,4133
10
- moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py,sha256=EQmwi1HGcadWZOCSQ3UrtrT3quNHnJkPnanvd-gW0sM,5217
11
- moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py,sha256=jE5r70f4aVA7raa9nRw3syGmXWjmKMdLD7-NrVLjdl0,5909
12
- moru/api/client/api/sandboxes/get_v2_sandboxes.py,sha256=vSR1tqr1cawaQqPBmX8hj79R46fluIIOKQwPlAGMNns,6705
13
- moru/api/client/api/sandboxes/post_sandboxes.py,sha256=XygFg6q9nF5aNZUOEMn-W1cL0O0rNmtCRY9vXrLSiag,4269
14
- moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_connect.py,sha256=V8hxnasDuLaAwk-V5g0iT-RcpCtep2qv-JP2pdG0Vik,5148
15
- moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py,sha256=dD0M7vx5MV-tCw4o2by1csKnIDVmO2YxaPkKDxNpEJc,4082
16
- moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py,sha256=euCZrWCPDvSGFq7_0qLgXSF6Ff95jobfQMdgnpLQG80,4753
17
- moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py,sha256=rGHH24aBNYrMHkvDoQkC15yvS6Ku8TjznauD7vcUtzg,4728
18
- moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py,sha256=PDthaR57kLmY6Nz1FrpcDqPWZm_F-KaR338-bQagrk0,5674
6
+ moru/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py,sha256=Vpdw4cPW0UluR5rbScPe_K-Hcfn0ebtNJLk860u5xJA,3949
7
+ moru/api/client/api/sandboxes/get_sandboxes.py,sha256=r1zAM3amxOKCd9f20MhMS_9L_IyZMoQsobx7KOzBr5o,4749
8
+ moru/api/client/api/sandboxes/get_sandboxes_metrics.py,sha256=-weJP1ADfnTIvQmznlJKc2ssnmDZfw2gfWthTNklt_M,4585
9
+ moru/api/client/api/sandboxes/get_sandboxes_sandbox_id.py,sha256=pnZD5pmppTbOhEWsUCdveDFXRahfoOFufqoW9d8NJi0,4137
10
+ moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py,sha256=XhDS-0nTJms_9WqyXgZQ-rikbMmkO-LCcXxtmtpsqzw,7205
11
+ moru/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py,sha256=OK5r22LZN2LO-m84l7FU1uXpJKEaUUnCcb7hiHUEgG4,5914
12
+ moru/api/client/api/sandboxes/get_v2_sandbox_runs.py,sha256=Lrfr-E_wZsNzdxR89kVOyjLlyzvWDTHm6DxyZ9O0g1s,6284
13
+ moru/api/client/api/sandboxes/get_v2_sandboxes.py,sha256=P8ypKNwB_vrgspDWbeYsU3YVoNYqCjsh8c2knA-UE0k,6631
14
+ moru/api/client/api/sandboxes/post_sandboxes.py,sha256=QZoB1SxDnY1Kwdn2pXfSrcfM3cbk6xpAbIDqRiAsGGI,4273
15
+ moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_connect.py,sha256=8av-s-HcHmEgUN4z7JefvWxDjaqTXdOQLhMrgmEjFlI,5154
16
+ moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py,sha256=VIX4RxcTX-VaUiB_rxY3a2JbkAD14gcruSnGhzNmfH0,4087
17
+ moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py,sha256=B2CmkM6POWmxV7rI8T6gMLUDVdhtbGdDv6XykPBelk0,4756
18
+ moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py,sha256=LayX3Tx-Z54mbVmTQdIZXqgizADR1_-Carc4kqx3vYw,4733
19
+ moru/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py,sha256=2U1My_vsoGneGty5kHqSCaM1sFbU3gZ-S7-tGKkxAik,5678
19
20
  moru/api/client/api/templates/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
20
- moru/api/client/api/templates/delete_templates_template_id.py,sha256=kuk9ZCyk1LNb1khjW-PcwP7YrMXYpzO0rnAWgXXH-YQ,3854
21
- moru/api/client/api/templates/get_templates.py,sha256=ZN3PG1_HsJnLmJZ00ZzFk9XGf9mTM6JxLNlT95F3A0w,4598
22
- moru/api/client/api/templates/get_templates_template_id.py,sha256=yzbvqTmLXw4ky4yGBL5Uqax-oC3q1RHzsKJHP2vGob8,5342
23
- moru/api/client/api/templates/get_templates_template_id_builds_build_id_status.py,sha256=Iv1g0rxGp1HJc0Zthq-s0xkdnEzBw795M1gB4I_o-EI,6039
24
- moru/api/client/api/templates/get_templates_template_id_files_hash.py,sha256=7ntCFSxZER4f2KURZwttJAw0i-hCEueZKdHu9GZCCi8,4914
25
- moru/api/client/api/templates/patch_templates_template_id.py,sha256=RMCVX8WXVMuwgGqmpeqAedVZ8SVjuLR7uL0MgK87Igk,4593
26
- moru/api/client/api/templates/post_templates.py,sha256=-Z4ZlPCDXSy-AJLglk6IHc0MJsPMVm8xVbHaboaHeKw,4420
27
- moru/api/client/api/templates/post_templates_template_id.py,sha256=YiGS01zYOHgVXdRD5hhSEHzXfuTRzJUdL35hjR_ZG44,4660
28
- moru/api/client/api/templates/post_templates_template_id_builds_build_id.py,sha256=xCkIlP3CV0ZHsfsIp4qi4yNBqPlc4rjG0M_vxgdpwTo,4165
29
- moru/api/client/api/templates/post_v2_templates.py,sha256=hJczq9aJpaPo4i_ubo5bQzL-h5AYuY21YOsLJAFLFuA,4446
30
- moru/api/client/api/templates/post_v3_templates.py,sha256=3AgCaMwzVHaXjCsBm5z7FhTdOpW9-NaEAnyBIoAY58Y,4591
31
- moru/api/client/api/templates/post_v_2_templates_template_id_builds_build_id.py,sha256=Uqrs2EpcoYBKe9lz_369BOxt6J0S-Np5hHct_p4T3NA,4785
21
+ moru/api/client/api/templates/delete_templates_template_id.py,sha256=Ljejd58GzX8fvveR-MlZjM8njqzCMCdFGMK9FYXZDqM,3857
22
+ moru/api/client/api/templates/get_templates.py,sha256=qGLya9pXJg6XDQaqyOou0hh8njpql8tK6v0Kqg9UjcM,4601
23
+ moru/api/client/api/templates/get_templates_template_id.py,sha256=RZsJRmOH7p2Yj5QUSpy9Ps4s4egSDcWTKsg3Qmj2gss,5345
24
+ moru/api/client/api/templates/get_templates_template_id_builds_build_id_logs.py,sha256=IWBU26Wy7CC27IiJKtGyAdMjM1Zif6xV3nstyfVJeXA,8383
25
+ moru/api/client/api/templates/get_templates_template_id_builds_build_id_status.py,sha256=hCDyW8Gu4HcABaOwvMiADlwvRr7PNlI5vxwxBdJWioc,6556
26
+ moru/api/client/api/templates/get_templates_template_id_files_hash.py,sha256=YlLcOlJoQq2ftKl1GlAsUDUFSKSWGI9fgzCn5zpErI8,4919
27
+ moru/api/client/api/templates/patch_templates_template_id.py,sha256=H3xFgjUsPz40uNnWMkdOxWJG8FF5_bKmT6Mr-VwaKms,4597
28
+ moru/api/client/api/templates/post_templates.py,sha256=4lpMFU8BurPiZ6SbafHFLUnm7iTv4VfSWT3MjYFVfWM,4424
29
+ moru/api/client/api/templates/post_templates_template_id.py,sha256=kzt8gTZ-8VN7_pOjdHMSImbT1cdNigaT1JXxKw8ZhD0,4663
30
+ moru/api/client/api/templates/post_templates_template_id_builds_build_id.py,sha256=rVAzFd6hUONuY4H9J1Hp0Sm56toju2a8Gm4pEkCiayI,4168
31
+ moru/api/client/api/templates/post_v2_templates.py,sha256=0qi4O5FdA074jDi9G8SR0JMNmkaiu7nMp_5qy105Mq0,4450
32
+ moru/api/client/api/templates/post_v3_templates.py,sha256=KWqhEWn3HtM2fmebVdK3H2Rl1KoILkzzoo0nhZMWC5A,4595
33
+ moru/api/client/api/templates/post_v_2_templates_template_id_builds_build_id.py,sha256=0oh2IbFnwjWvN6_rWaufvIEin4J3dIqOGl3fL376SO4,4788
32
34
  moru/api/client/client.py,sha256=O6MiIbTg_Z-szhiNi8RhaBwI7chi3y9xvPfnYiGXMb4,12581
33
35
  moru/api/client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
34
- moru/api/client/models/__init__.py,sha256=UoFfw_fpf5ZA_Z6Q1vr4zc9vLINWJmu_YSjSY22ETzU,4099
36
+ moru/api/client/models/__init__.py,sha256=-z52LAHDkQpgIgSXd-ULiUB4VjT-zlmPM1KSVUvU1BE,5130
37
+ moru/api/client/models/admin_sandbox_kill_result.py,sha256=VJ09DaP9OHATS3cvUvTTVHCdIBRM2IgyiWUSfTTA2hg,1877
35
38
  moru/api/client/models/aws_registry.py,sha256=YKwQXCuutv3XwgEJWbBTyX6KmLi866-ASsHpu-n0H2w,2486
36
39
  moru/api/client/models/aws_registry_type.py,sha256=8gBrOkfd2OaBDPRRJDmF6t2luvz01A0QExzfHRsgUg8,136
37
- moru/api/client/models/build_log_entry.py,sha256=JKbGEBu5YMNL8o62xuX7YhrOi8T8EBV-e_gotu8jOj8,2379
40
+ moru/api/client/models/build_log_entry.py,sha256=0h-bSi3bT5PTtm-BIiOW85bpg7qwP4UBLVldMpZzFS0,2383
38
41
  moru/api/client/models/build_status_reason.py,sha256=rGwEYbmIFjSG3QPpPm-iX1rDVDPC3Jkn33dDljbLyWM,2878
39
42
  moru/api/client/models/connect_sandbox.py,sha256=095nNrudNKwrD1fjsTTNeaf-4D_jJ2NsvIEQhYAVBHY,1561
43
+ moru/api/client/models/create_volume_request.py,sha256=MM0sU8kmNXkaYCAZqTKbeccV_PmzVaXFhaEYCG3lFIw,1523
40
44
  moru/api/client/models/created_access_token.py,sha256=VjU_tuW67zrtc3V1po-MVtPo8J1dtRkwy-6uTe2AEf0,2639
41
45
  moru/api/client/models/created_team_api_key.py,sha256=QO2jAIR8u1Xxn26jnftkDNYCI1mEqDMt-ZUIQS1y1NU,5040
42
46
  moru/api/client/models/disk_metrics.py,sha256=2bZEe84P2wBqQb9_RR-xR743ZDKCzjbzXmjmTDsXwI8,2442
43
47
  moru/api/client/models/error.py,sha256=xGvyYQQHv0ZrxvhrVvFlXPaosmt24ivIh3U4gItpBKY,1594
48
+ moru/api/client/models/file_info.py,sha256=uHTJLNci1HfIKOEBb5zPytbd1hoeVbrpVurQaP441uo,2873
49
+ moru/api/client/models/file_info_type.py,sha256=2Y86g5qVD723iLNHylvmXssE9lKj78plRqrnmXXTFmY,163
50
+ moru/api/client/models/file_list_response.py,sha256=patbBYSOlc2Zs80Dzqc3Egfa3maDq9UhU9UYOgnbOMw,2270
44
51
  moru/api/client/models/gcp_registry.py,sha256=jU0_iH1H0JBGHyl0IVuQl44yQ18qyTqYaPNd8S_yZyg,1923
45
52
  moru/api/client/models/gcp_registry_type.py,sha256=QcMwg9qUyr6e7VRinI0iRa9lhYvryj7vZEeTK0yEZVM,136
46
53
  moru/api/client/models/general_registry.py,sha256=J_-i7kLmsPy018YFhBKDH5YAToey4MnCIivPUKSpTc8,2052
@@ -48,13 +55,16 @@ moru/api/client/models/general_registry_type.py,sha256=VwyEKt25wUh0y8Qj4Wpeolus-
48
55
  moru/api/client/models/identifier_masking_details.py,sha256=97xSg4Nr3D5xbjGDuZ16doEMOlck0EtyjMxtHQR9TKk,2496
49
56
  moru/api/client/models/listed_sandbox.py,sha256=zyuxeHjkrar1GTnKVCvgRXV4Zvdfq8FcZGOXnxHQ5a8,4382
50
57
  moru/api/client/models/log_level.py,sha256=uv6u1nkqfzdxTjJAxLZdWuH5goVI_g-ULLhh6TU5dw8,189
58
+ moru/api/client/models/logs_direction.py,sha256=c2QsexQz8bqzMvQ01vmseed-mcnzjQ4C0Y8QTrFuCmE,168
59
+ moru/api/client/models/logs_source.py,sha256=OJ_SgUZo3YIXn_KIET0vzcTdtmb5eiHdtMn1YdetFNk,173
60
+ moru/api/client/models/machine_info.py,sha256=_qukINhbGU-TBwUDq5aC5OTZXCatgq2aNlheJjEEj6g,2287
51
61
  moru/api/client/models/max_team_metric.py,sha256=HQuDBFHMIsTJbWTl0kOX4ADIfWb1E97J-PB0NNoRJCw,2187
52
62
  moru/api/client/models/mcp_type_0.py,sha256=U_8DsmxiUkD4s4_ODbE6sAlURThIqS6v1rUpt3CE1FE,1220
53
63
  moru/api/client/models/new_access_token.py,sha256=sjlQ7dEj4ByCgwud750SbxwyjggAKB1s-o_N7dRCo7s,1480
54
- moru/api/client/models/new_sandbox.py,sha256=a9puqtwleHhMr_z8h_WE58eXtE6QNPNl4Huar44I_oU,5603
64
+ moru/api/client/models/new_sandbox.py,sha256=ITrj86gFfGVL3l-1jUnHdfdOx7brOFUsDEZlI1sO_HE,6464
55
65
  moru/api/client/models/new_team_api_key.py,sha256=neYLvvvzyPcpXYV5gDHVkv_ovjKdIBKUTX04cD5QKGA,1473
56
- moru/api/client/models/node.py,sha256=P6x2a_6Nj58YlqiLjU1xqJ8nF0VGcvqdN-w-CwMpHVg,4352
57
- moru/api/client/models/node_detail.py,sha256=KXosKYhqOyVwgBPSlb2xVnlECIlONZzD0UiiIKf_wko,4782
66
+ moru/api/client/models/node.py,sha256=hEbN097bx1LIIwyr0KDS7lELhgpttetVjD9KiysrpzQ,4728
67
+ moru/api/client/models/node_detail.py,sha256=RzhmTIQnrrNsi-OILEIVMVmrs4giEXALMcsRZl1Cnek,5158
58
68
  moru/api/client/models/node_metrics.py,sha256=EveG1M2dLWteatFWvFQMa9aKzz8urRlOOZ7QD_8Xd0o,3642
59
69
  moru/api/client/models/node_status.py,sha256=bZkWsNgKncRmFxatPdKlJTu9H4GTBbgQ2XF9JNvW16I,219
60
70
  moru/api/client/models/node_status_change.py,sha256=g59HSBpip8R7egNghe7QxYZ_MH-bgijGac36S5-WdYg,2236
@@ -64,11 +74,15 @@ moru/api/client/models/resumed_sandbox.py,sha256=spSSP0TXWz8QmDoJprqIRToktgd8pvm
64
74
  moru/api/client/models/sandbox.py,sha256=z5OUJActzzFq2us2ttM-BQU-pJ9esi0qBjKtrqNhjE0,4600
65
75
  moru/api/client/models/sandbox_detail.py,sha256=L3QNx7SlJyrqpWtchieKmXRh5MrOJfP2CF2CCibJpiI,5494
66
76
  moru/api/client/models/sandbox_log.py,sha256=tXw35j3poz7DMJrLeoxr4oYdbcYJV5ep3E0bVdQsS2o,1806
67
- moru/api/client/models/sandbox_log_entry.py,sha256=rbwY2MBahRLhcCP081XczQI3AksuLMbflNh9pOeCfjA,2502
77
+ moru/api/client/models/sandbox_log_entry.py,sha256=hNSx9__xDPw2v50s1XJzOlw6PPiTYC32H4_Qwk8XBfg,2612
68
78
  moru/api/client/models/sandbox_log_entry_fields.py,sha256=SYwtEgNOKPtmf9BqIiRS44bEgcbbbHMq2qdCShpj8QI,1256
79
+ moru/api/client/models/sandbox_log_event_type.py,sha256=bBq8rv0PSk6g7O1XUk-4qsj8qQ2FenEXRizzTo66ct0,236
69
80
  moru/api/client/models/sandbox_logs.py,sha256=3UC3ngilUpl7Wye7rl5Md9DR1loa_7chGTBx9tRb6LY,2658
70
81
  moru/api/client/models/sandbox_metric.py,sha256=j90tDplFtQwdzHKpBVk5044T4uVrLwVTGBvAAkVaGdI,3280
71
82
  moru/api/client/models/sandbox_network_config.py,sha256=iBSiOsOpPBkdHvIfwlVSxRRjgdffkMP_p7hDNFEhKco,3290
83
+ moru/api/client/models/sandbox_run.py,sha256=prItgPUZb7bTWcerGmfsqxoILe4SFB7tx1pWVbObTN4,4006
84
+ moru/api/client/models/sandbox_run_end_reason.py,sha256=LHsNhojfDuVlCkecJY8AhwiXAzOeJfNksBYj7nR23Xs,216
85
+ moru/api/client/models/sandbox_run_status.py,sha256=IIjsCRnBPuJvvUGYVrrx7gL6T9NHGAxZ7XR1eachMbE,191
72
86
  moru/api/client/models/sandbox_state.py,sha256=iztDupSF2SrYQGV2UTcnZRH_U3GxSmHYKHMMUksO_7M,163
73
87
  moru/api/client/models/sandboxes_with_metrics.py,sha256=CuOZ1ismyjPLrxPcKaDqLKZL5Iun0njN70Qqhubc1Ps,1535
74
88
  moru/api/client/models/team.py,sha256=rGLOfphzsP7VA9SLmQn8vnUfxB9KILfMwNfh4hVy3IE,2042
@@ -79,6 +93,7 @@ moru/api/client/models/template.py,sha256=HcA4xZqCf-YyNhALo3ysvM9_V0dRc8fXsBjo2D
79
93
  moru/api/client/models/template_build.py,sha256=5GpCKpvI6vi86r7wV2Ylv3qQxJEL3wBbrXCRx7lTFQo,4323
80
94
  moru/api/client/models/template_build_file_upload.py,sha256=iqgQEKVJxWD8ezd_w44NoYmFCVDyTSUcH474KRCaXDY,1879
81
95
  moru/api/client/models/template_build_info.py,sha256=IXZM16g5tWbwqtGMnzUj3IRkd3H9HmsYwpNCEEp_AkQ,3798
96
+ moru/api/client/models/template_build_logs_response.py,sha256=beU1eM2sOXO6SgHC8AnTY7LzsBQxi2MXYBAt6QUjyr4,1995
82
97
  moru/api/client/models/template_build_request.py,sha256=iMy655tp09fTr8gNgu8uHwQm4IA_8IUx4xWQxZQnzjI,3433
83
98
  moru/api/client/models/template_build_request_v2.py,sha256=KoETYShWCXHBo6Mt4WF_WHHJnHxd66cbAQ0JMum8Ino,2459
84
99
  moru/api/client/models/template_build_request_v3.py,sha256=jfEfMfOtUyGRPOId16RJgocDd1uBcb32-mtCBHUF7mE,2459
@@ -90,6 +105,8 @@ moru/api/client/models/template_step.py,sha256=qmCseK5OJXN2Ffirl0A0J4neqyfDqA-a-
90
105
  moru/api/client/models/template_update_request.py,sha256=KMlSyGf7hX75GqXxEP-OiExnABql4MKdLBfHPd02gFo,1663
91
106
  moru/api/client/models/template_with_builds.py,sha256=D_euGW7ByyN8BKHUNN_SEgF6YbZl5ZsCbWDRhwz3J_0,4606
92
107
  moru/api/client/models/update_team_api_key.py,sha256=UEHHUJxwHWTOd-AuDE-Z26E4lX2Ck9SPq8MO-Trc9Uc,1493
108
+ moru/api/client/models/upload_response.py,sha256=3t1cG1N5PzcHjelSK8L5MnUoE8Wy9M4KUi75dx3qr-Q,1648
109
+ moru/api/client/models/volume.py,sha256=-mIL3CZsusR-poUyzGqp4fk0tPBLYYUkGa0qUPoyHe8,3068
93
110
  moru/api/client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
94
111
  moru/api/client/types.py,sha256=AX4orxQZQJat3vZrgjJ-TYb2sNBL8kNo9yqYDT-n8y8,1391
95
112
  moru/api/client_async/__init__.py,sha256=AZ3Ju_yzZLdWwZ98AR2__PGr5t-uClxOJ4Y22HII7Sk,1337
@@ -111,28 +128,28 @@ moru/sandbox/commands/main.py,sha256=t8hk44wZX27OqRrYHo_FhvhzfOvIVK-6NO4HpfiOhpo
111
128
  moru/sandbox/filesystem/filesystem.py,sha256=Yk2DBMkTDkVz_c6XVwHNLhTRPVECo2tHeDl6cTtNOJE,1880
112
129
  moru/sandbox/filesystem/watch_handle.py,sha256=8oUe5mx0xIvv40LzBDYCYeDOirya-2pbut7FDaM86aQ,1387
113
130
  moru/sandbox/main.py,sha256=6t_MR9IIO6XTmk38vu3vqwmSz5DmfM0MjDklDAl3w4o,6267
114
- moru/sandbox/mcp.py,sha256=CRwNOla9Raz2j5Q5g4d65sE6hZ3Adj8RCZ0USold25s,23142
131
+ moru/sandbox/mcp.py,sha256=z_nZuDtYOkvPtFrNSrBVC3sUHNcsRhbOTQoeF819itQ,59982
115
132
  moru/sandbox/network.py,sha256=tmOG2Ya1MyYk58_BnV546xsQVQHfqnHgsa-H5HB6XZE,133
116
133
  moru/sandbox/sandbox_api.py,sha256=vfqzl-rCF51YQFTtHUioOwiI05bEC4LUq7Wrffeipgg,5923
117
134
  moru/sandbox/signature.py,sha256=QIMpJHE_UD00iQiwsGAdO8gJpqoP2MP1zHV8bbGWKDc,1203
118
135
  moru/sandbox/utils.py,sha256=grMOJpeyk9YeS6dE7qCwBaJUaqgvrE4aKkGc9nVVfhI,1300
119
- moru/sandbox_async/commands/command.py,sha256=b60rBXH6Akg_ioQqDp8fOye3ngfFu1lkLMA_QFlCrZ4,12485
136
+ moru/sandbox_async/commands/command.py,sha256=bQm5qJeGeNzI78Gr45pwSd00BTm2176nq2ILjOr4AMM,12502
120
137
  moru/sandbox_async/commands/command_handle.py,sha256=5M05YMdMrNxboOpOSqy9htlGQOq9jCNkU78zBWzg5t4,5771
121
138
  moru/sandbox_async/commands/pty.py,sha256=yIi-e_iWg0XWBXnze9UXyZTtQ8PNNEuV8cbXSopDKwA,7982
122
- moru/sandbox_async/filesystem/filesystem.py,sha256=gKZzuQVB6g4U1Y6JPHcb1OgSBSeMw9b08yOhgc2pbig,18707
139
+ moru/sandbox_async/filesystem/filesystem.py,sha256=6rMACkZCcb1Gp3jju2QYWVaOFvlQlirQ_JdTWiUCR9A,18724
123
140
  moru/sandbox_async/filesystem/watch_handle.py,sha256=EWe7Rd5r3LkCtF8jAKSNO400FxBnGqiXfVMYWEyXlgc,1969
124
- moru/sandbox_async/main.py,sha256=EhRJX32q2VT9ORXCKZF9NbemwSC1ycgRJI2Ltm5Nn_o,23583
141
+ moru/sandbox_async/main.py,sha256=gpvtsMWJSkExC6rI2X_gCQJyZD89TL8WzCEBGG9wiqw,24729
125
142
  moru/sandbox_async/paginator.py,sha256=eW5hKXItevPPEuuAuItSao2zvLBOOQjeMaoJ3NlnbUI,2296
126
- moru/sandbox_async/sandbox_api.py,sha256=a9g5KeSjbht64PAKrXtJ1PgITQuNPO7tvSXc7CwoeoE,9995
143
+ moru/sandbox_async/sandbox_api.py,sha256=lMFocI9rzqRLYpwUMI8TQeXYVYqi1wsTMJxTp7MIGQA,10180
127
144
  moru/sandbox_async/utils.py,sha256=mplhnoDat1PswDksAlnz2Zp4zzUGSIdr_76kiFYZQK8,159
128
145
  moru/sandbox_sync/commands/command.py,sha256=dI1GrzzdUBB4wnzFegPh3oWfzVSRltNRtzcld_M1f4g,11626
129
146
  moru/sandbox_sync/commands/command_handle.py,sha256=d1HDROr_hw3I9JW2yaCJcKOyDnSI2V1JHvTKHWwgG3k,4633
130
147
  moru/sandbox_sync/commands/pty.py,sha256=IZUpyR0-XaEDcEn2MLxb-WtF9DFa3eK0bzdLKkeqLac,7590
131
- moru/sandbox_sync/filesystem/filesystem.py,sha256=MMdW-zMCXWPmJRQuri5jWn51xLhQihg9u1F4R_vG7iI,17852
148
+ moru/sandbox_sync/filesystem/filesystem.py,sha256=b-GqJRAYDYt9XMR0nFvEvfJ4GiO_f0Lr0vovr2YM9ts,17869
132
149
  moru/sandbox_sync/filesystem/watch_handle.py,sha256=R5KnqUFQjb_nfQ29B0jfG4Imm-YjK09tYrRUU36n5hM,2059
133
- moru/sandbox_sync/main.py,sha256=K6cg4lt8nqgWByBerPhjS9drPi_EPs_XKSxDQfczUtQ,22948
150
+ moru/sandbox_sync/main.py,sha256=cWwehBoaaj4p0u46LX-nYnQm7lTURpIolY5SVV9Wgnk,24094
134
151
  moru/sandbox_sync/paginator.py,sha256=FqWhMm7ykqmDYITc8cz7muUH-AUsi3cydBiJYWqsaZo,2264
135
- moru/sandbox_sync/sandbox_api.py,sha256=f2-m8mIMmHR9qAWOlACiJOGLOn9DTt6NvUFkNoI1LUo,9171
152
+ moru/sandbox_sync/sandbox_api.py,sha256=5qWqtMlkKkRs0gb-Mp9Y252FvPhKWabPrW3nUD5vLwY,9356
136
153
  moru/template/consts.py,sha256=opZ2iHQxt1gpR67PlbJvpxYfHlzsAB8q7XD0a98cu5o,756
137
154
  moru/template/dockerfile_parser.py,sha256=SzOeZdyk5bI0f9PDTP4ST4ZTBUOoBwsC0vUvY2PoilM,8996
138
155
  moru/template/logger.py,sha256=_L8HSaoAcWaBHcqbJ-7gUkAf_ccqSi2ZtQfGGL6rwQg,6088
@@ -144,9 +161,17 @@ moru/template_async/build_api.py,sha256=98OrYIGcuDroT5bihx8RejAm0ge0ADg_YX1ms6ax
144
161
  moru/template_async/main.py,sha256=T9AKqw7ekdagDj8WKBAmAEvkqpj8kOMwdVENagyoLZE,11943
145
162
  moru/template_sync/build_api.py,sha256=4SM9WDlX5HyVlA2NdJAquM1c8ax_9cc_wKr1MGwu9p4,5951
146
163
  moru/template_sync/main.py,sha256=NSFhKjhv_n5vV4Ra2bc1zBDxcBFRumBlUnV_lPfBZCI,11901
164
+ moru/volume/__init__.py,sha256=3U6dN2gUwQq5OftGWfAwitj4gh-g8mITGuBfretLPM4,211
165
+ moru/volume/types.py,sha256=IUhNHXLCQXlcFX868VyxY6QQUTQXTr_3CsQMUZI6l-8,2135
166
+ moru/volume/volume_api.py,sha256=7uAVZYrx4xwsAd3kjXJqpwxysydfCTUI-h3h_0norgE,9604
167
+ moru/volume_async/__init__.py,sha256=BoA5sMz6Oq1ShuDvkGBaJcP5chJqL1B8O8qv3arFk7g,92
168
+ moru/volume_async/main.py,sha256=y6J6mfFrR-kyqvmphssl_5qKu9YBSpp97cbQ3BtaDlo,9118
169
+ moru/volume_async/volume_api.py,sha256=inI-TTB9LVz3ZQQNTehFAyu8wUAdpKTv7PadOVAMDJw,8459
170
+ moru/volume_sync/__init__.py,sha256=9hQQZhkWrGpsQ6pjzS7-nt2T-cnSwZGvPyX2zLb3jvI,81
171
+ moru/volume_sync/main.py,sha256=zHwG5PdXuygcsisxhDoyelq5sBpH1uJSpViomM2AxKQ,8718
147
172
  moru_connect/__init__.py,sha256=ToGN4_2p-tV3QVUKcfHNg6U1qbbERaUjym8SJN3VCls,81
148
173
  moru_connect/client.py,sha256=u1kYyb1wuE0-rdGw-ymCftxGH_o-8mb1w3Q8NFVSJ8E,13030
149
- moru-0.1.0.dist-info/METADATA,sha256=SBdbX-AIBCbXizCg-HCm6bnq4NBBO4uCtAWpEcw_8Nw,1691
150
- moru-0.1.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
151
- moru-0.1.0.dist-info/licenses/LICENSE,sha256=ONtx_RW5j6C0mPjF7nBaSVcOMREIXCd_uJteoQfsTcs,1074
152
- moru-0.1.0.dist-info/RECORD,,
174
+ moru-0.2.0.dist-info/LICENSE,sha256=ONtx_RW5j6C0mPjF7nBaSVcOMREIXCd_uJteoQfsTcs,1074
175
+ moru-0.2.0.dist-info/METADATA,sha256=PEwwsIgp2uX-Jzn2LNDoebnbG7j72h8gfGC4OWIfAwQ,2997
176
+ moru-0.2.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
177
+ moru-0.2.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.1.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any