meshagent-cli 0.35.0__tar.gz → 0.35.3__tar.gz
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.
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/PKG-INFO +13 -13
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/image.py +18 -5
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/image_test.py +163 -0
- meshagent_cli-0.35.3/meshagent/cli/version.py +1 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent_cli.egg-info/PKG-INFO +13 -13
- meshagent_cli-0.35.3/meshagent_cli.egg-info/requires.txt +29 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/pyproject.toml +12 -12
- meshagent_cli-0.35.0/meshagent/cli/version.py +0 -1
- meshagent_cli-0.35.0/meshagent_cli.egg-info/requires.txt +0 -29
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/README.md +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/__init__.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/agent.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/api_keys.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/async_typer.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/auth.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/auth_async.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/call.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/chatbot.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/cli.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/cli_mcp.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/cli_secrets.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/cli_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/codex.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/common_options.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/containers.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/containers_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/database.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/developer.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/developer_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/helper.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/helper_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/helpers.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/host.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/mailbot.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/mailboxes.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/meeting_transcriber.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/memory.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/memory_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/messaging.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/multi.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/oauth2.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/oci_archive.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/oci_archive_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/participant_token.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/port.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/port_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/process.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/process_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/projects.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/queue.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/queue_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/room.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/room_services.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/rooms.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/routes.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/scheduled_tasks.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/scheduled_tasks_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/services.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/services_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/sessions.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/sessions_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/storage.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/storage_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/sync.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/sync_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/task_runner.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/tui/__init__.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/tui/setup.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/tui/setup_splash_frames.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/tui/setup_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/voicebot.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/webhook.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/webserver.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/webserver_test.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent/cli/worker.py +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent_cli.egg-info/SOURCES.txt +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent_cli.egg-info/dependency_links.txt +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent_cli.egg-info/entry_points.txt +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/meshagent_cli.egg-info/top_level.txt +0 -0
- {meshagent_cli-0.35.0 → meshagent_cli-0.35.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.35.
|
|
3
|
+
Version: 0.35.3
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -19,21 +19,21 @@ Requires-Dist: rich~=14.3.0
|
|
|
19
19
|
Requires-Dist: textual<2.0,>=0.50
|
|
20
20
|
Requires-Dist: prompt-toolkit~=3.0.52
|
|
21
21
|
Provides-Extra: all
|
|
22
|
-
Requires-Dist: meshagent-agents[all]~=0.35.
|
|
23
|
-
Requires-Dist: meshagent-api[all]~=0.35.
|
|
24
|
-
Requires-Dist: meshagent-computers~=0.35.
|
|
25
|
-
Requires-Dist: meshagent-openai~=0.35.
|
|
26
|
-
Requires-Dist: meshagent-anthropic~=0.35.
|
|
27
|
-
Requires-Dist: meshagent-codex~=0.35.
|
|
28
|
-
Requires-Dist: meshagent-mcp~=0.35.
|
|
29
|
-
Requires-Dist: meshagent-tools~=0.35.
|
|
22
|
+
Requires-Dist: meshagent-agents[all]~=0.35.3; extra == "all"
|
|
23
|
+
Requires-Dist: meshagent-api[all]~=0.35.3; extra == "all"
|
|
24
|
+
Requires-Dist: meshagent-computers~=0.35.3; extra == "all"
|
|
25
|
+
Requires-Dist: meshagent-openai~=0.35.3; extra == "all"
|
|
26
|
+
Requires-Dist: meshagent-anthropic~=0.35.3; extra == "all"
|
|
27
|
+
Requires-Dist: meshagent-codex~=0.35.3; extra == "all"
|
|
28
|
+
Requires-Dist: meshagent-mcp~=0.35.3; extra == "all"
|
|
29
|
+
Requires-Dist: meshagent-tools~=0.35.3; extra == "all"
|
|
30
30
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
31
31
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
32
32
|
Provides-Extra: mcp-service
|
|
33
|
-
Requires-Dist: meshagent-agents[all]~=0.35.
|
|
34
|
-
Requires-Dist: meshagent-api~=0.35.
|
|
35
|
-
Requires-Dist: meshagent-mcp~=0.35.
|
|
36
|
-
Requires-Dist: meshagent-tools~=0.35.
|
|
33
|
+
Requires-Dist: meshagent-agents[all]~=0.35.3; extra == "mcp-service"
|
|
34
|
+
Requires-Dist: meshagent-api~=0.35.3; extra == "mcp-service"
|
|
35
|
+
Requires-Dist: meshagent-mcp~=0.35.3; extra == "mcp-service"
|
|
36
|
+
Requires-Dist: meshagent-tools~=0.35.3; extra == "mcp-service"
|
|
37
37
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
38
38
|
|
|
39
39
|
# [Meshagent](https://www.meshagent.com)
|
|
@@ -124,6 +124,12 @@ class _RoomRouteTarget:
|
|
|
124
124
|
port: str
|
|
125
125
|
|
|
126
126
|
|
|
127
|
+
@dataclass(frozen=True)
|
|
128
|
+
class _RoomServiceUpsertResult:
|
|
129
|
+
service_id: str
|
|
130
|
+
created: bool
|
|
131
|
+
|
|
132
|
+
|
|
127
133
|
class _StreamingArchiveOutput:
|
|
128
134
|
def __init__(self, *, output_path: Path | None = None) -> None:
|
|
129
135
|
self._output_path = output_path
|
|
@@ -744,7 +750,7 @@ async def _upsert_room_service(
|
|
|
744
750
|
project_id: str,
|
|
745
751
|
room_name: str,
|
|
746
752
|
service_spec: ServiceSpec,
|
|
747
|
-
) ->
|
|
753
|
+
) -> _RoomServiceUpsertResult:
|
|
748
754
|
existing_service = await _find_room_service_by_name(
|
|
749
755
|
account_client=account_client,
|
|
750
756
|
project_id=project_id,
|
|
@@ -752,11 +758,12 @@ async def _upsert_room_service(
|
|
|
752
758
|
service_name=service_spec.metadata.name,
|
|
753
759
|
)
|
|
754
760
|
if existing_service is None:
|
|
755
|
-
|
|
761
|
+
service_id = await account_client.create_room_service(
|
|
756
762
|
project_id=project_id,
|
|
757
763
|
room_name=room_name,
|
|
758
764
|
service=service_spec,
|
|
759
765
|
)
|
|
766
|
+
return _RoomServiceUpsertResult(service_id=service_id, created=True)
|
|
760
767
|
|
|
761
768
|
if existing_service.id is None or existing_service.id == "":
|
|
762
769
|
raise typer.BadParameter(
|
|
@@ -769,7 +776,7 @@ async def _upsert_room_service(
|
|
|
769
776
|
service_id=existing_service.id,
|
|
770
777
|
service=service_spec,
|
|
771
778
|
)
|
|
772
|
-
return existing_service.id
|
|
779
|
+
return _RoomServiceUpsertResult(service_id=existing_service.id, created=False)
|
|
773
780
|
|
|
774
781
|
|
|
775
782
|
async def _upsert_domain_route(
|
|
@@ -1210,7 +1217,7 @@ async def build_image(
|
|
|
1210
1217
|
if domain is not None
|
|
1211
1218
|
else None
|
|
1212
1219
|
)
|
|
1213
|
-
|
|
1220
|
+
deploy_result = await _upsert_room_service(
|
|
1214
1221
|
account_client=account_client,
|
|
1215
1222
|
project_id=resolved_project_id,
|
|
1216
1223
|
room_name=resolved_room,
|
|
@@ -1218,8 +1225,14 @@ async def build_image(
|
|
|
1218
1225
|
)
|
|
1219
1226
|
print(
|
|
1220
1227
|
f"[green]Deployed service:[/] {deploy_plan.spec.metadata.name} "
|
|
1221
|
-
f"({service_id})"
|
|
1228
|
+
f"({deploy_result.service_id})"
|
|
1222
1229
|
)
|
|
1230
|
+
if not deploy_result.created:
|
|
1231
|
+
await client.services.restart(service_id=deploy_result.service_id)
|
|
1232
|
+
print(
|
|
1233
|
+
f"[green]Restarted service:[/] {deploy_plan.spec.metadata.name} "
|
|
1234
|
+
f"({deploy_result.service_id})"
|
|
1235
|
+
)
|
|
1223
1236
|
if domain is not None and route_target is not None:
|
|
1224
1237
|
await _upsert_domain_route(
|
|
1225
1238
|
account_client=account_client,
|
|
@@ -6,6 +6,7 @@ import pytest
|
|
|
6
6
|
import typer
|
|
7
7
|
|
|
8
8
|
from meshagent.cli import image
|
|
9
|
+
from meshagent.api.specs.service import ContainerSpec, ServiceMetadata, ServiceSpec
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
def test_resolve_room_archive_path_uses_output_name_for_directory_targets() -> None:
|
|
@@ -506,6 +507,10 @@ async def test_build_image_pack_uploads_archive_and_defaults_context_path(
|
|
|
506
507
|
def __init__(self) -> None:
|
|
507
508
|
self.containers = _FakeContainers()
|
|
508
509
|
self.storage = _FakeStorage()
|
|
510
|
+
self.services = SimpleNamespace(restart=self._restart)
|
|
511
|
+
|
|
512
|
+
async def _restart(self, *, service_id: str) -> None:
|
|
513
|
+
captured["restarted_service_id"] = service_id
|
|
509
514
|
|
|
510
515
|
async def __aexit__(self, exc_type, exc, tb) -> None:
|
|
511
516
|
del exc_type, exc, tb
|
|
@@ -1148,6 +1153,164 @@ async def test_build_image_deploy_creates_room_service_and_route_from_packed_doc
|
|
|
1148
1153
|
"8080",
|
|
1149
1154
|
{image.ANNOTATION_SERVICE_ID: "website-pack"},
|
|
1150
1155
|
)
|
|
1156
|
+
assert "restarted_service_id" not in captured
|
|
1157
|
+
assert captured["deleted_path"] == "/temp/build/packs/pack-123"
|
|
1158
|
+
assert captured["room_client_closed"] is True
|
|
1159
|
+
assert captured["account_client_closed"] is True
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
@pytest.mark.asyncio
|
|
1163
|
+
async def test_build_image_deploy_restarts_updated_room_service(
|
|
1164
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
1165
|
+
tmp_path: Path,
|
|
1166
|
+
) -> None:
|
|
1167
|
+
captured: dict[str, object] = {}
|
|
1168
|
+
source_dir = tmp_path / "website"
|
|
1169
|
+
source_dir.mkdir()
|
|
1170
|
+
(source_dir / "Dockerfile").write_text(
|
|
1171
|
+
"FROM scratch\nEXPOSE 8080\n",
|
|
1172
|
+
encoding="utf-8",
|
|
1173
|
+
)
|
|
1174
|
+
existing_service = ServiceSpec(
|
|
1175
|
+
version="v1",
|
|
1176
|
+
kind="Service",
|
|
1177
|
+
id="service-1",
|
|
1178
|
+
metadata=ServiceMetadata(
|
|
1179
|
+
name="website-pack",
|
|
1180
|
+
annotations={image.ANNOTATION_SERVICE_ID: "website-pack"},
|
|
1181
|
+
),
|
|
1182
|
+
container=ContainerSpec(image="room.meshagent.com/website-pack:old"),
|
|
1183
|
+
)
|
|
1184
|
+
|
|
1185
|
+
class _FakeContainers:
|
|
1186
|
+
async def build(self, **kwargs) -> str:
|
|
1187
|
+
captured["build_kwargs"] = kwargs
|
|
1188
|
+
return "build-1"
|
|
1189
|
+
|
|
1190
|
+
class _FakeStorage:
|
|
1191
|
+
async def delete(self, path: str) -> None:
|
|
1192
|
+
captured["deleted_path"] = path
|
|
1193
|
+
|
|
1194
|
+
class _FakeRoomClient:
|
|
1195
|
+
def __init__(self) -> None:
|
|
1196
|
+
self.containers = _FakeContainers()
|
|
1197
|
+
self.storage = _FakeStorage()
|
|
1198
|
+
self.services = SimpleNamespace(restart=self._restart)
|
|
1199
|
+
|
|
1200
|
+
async def _restart(self, *, service_id: str) -> None:
|
|
1201
|
+
captured["restarted_service_id"] = service_id
|
|
1202
|
+
|
|
1203
|
+
async def __aexit__(self, exc_type, exc, tb) -> None:
|
|
1204
|
+
del exc_type, exc, tb
|
|
1205
|
+
captured["room_client_closed"] = True
|
|
1206
|
+
|
|
1207
|
+
class _FakeAccountClient:
|
|
1208
|
+
async def list_room_services(self, *, project_id: str, room_name: str):
|
|
1209
|
+
captured.setdefault("list_room_services", []).append(
|
|
1210
|
+
(project_id, room_name)
|
|
1211
|
+
)
|
|
1212
|
+
return [existing_service]
|
|
1213
|
+
|
|
1214
|
+
async def update_room_service(
|
|
1215
|
+
self,
|
|
1216
|
+
*,
|
|
1217
|
+
project_id: str,
|
|
1218
|
+
room_name: str,
|
|
1219
|
+
service_id: str,
|
|
1220
|
+
service,
|
|
1221
|
+
) -> None:
|
|
1222
|
+
captured["updated_service"] = (
|
|
1223
|
+
project_id,
|
|
1224
|
+
room_name,
|
|
1225
|
+
service_id,
|
|
1226
|
+
service,
|
|
1227
|
+
)
|
|
1228
|
+
|
|
1229
|
+
async def close(self) -> None:
|
|
1230
|
+
captured["account_client_closed"] = True
|
|
1231
|
+
|
|
1232
|
+
async def _fake_with_client(*, project_id, room):
|
|
1233
|
+
captured["project_id"] = project_id
|
|
1234
|
+
captured["room"] = room
|
|
1235
|
+
return _FakeAccountClient(), _FakeRoomClient()
|
|
1236
|
+
|
|
1237
|
+
async def _fake_stream_build_job_logs_and_wait_for_exit(
|
|
1238
|
+
*,
|
|
1239
|
+
client,
|
|
1240
|
+
build_id: str,
|
|
1241
|
+
) -> int:
|
|
1242
|
+
captured["wait_client"] = client
|
|
1243
|
+
captured["build_id"] = build_id
|
|
1244
|
+
return 0
|
|
1245
|
+
|
|
1246
|
+
async def _fake_upload_oci_archive_to_room(**kwargs) -> SimpleNamespace:
|
|
1247
|
+
captured["upload_kwargs"] = kwargs
|
|
1248
|
+
return SimpleNamespace(
|
|
1249
|
+
packed_archive=SimpleNamespace(
|
|
1250
|
+
output_path=Path("/tmp/ignored.tar"),
|
|
1251
|
+
ref_name="room.meshagent.com/temp/build/packs/pack-123:latest",
|
|
1252
|
+
),
|
|
1253
|
+
remote_path="/temp/build/packs/pack-123",
|
|
1254
|
+
)
|
|
1255
|
+
|
|
1256
|
+
monkeypatch.setattr(image, "_with_client", _fake_with_client)
|
|
1257
|
+
monkeypatch.setattr(image, "resolve_room", lambda room: room)
|
|
1258
|
+
|
|
1259
|
+
async def _fake_resolve_project_id(*, project_id):
|
|
1260
|
+
del project_id
|
|
1261
|
+
return "project-1"
|
|
1262
|
+
|
|
1263
|
+
monkeypatch.setattr(image, "resolve_project_id", _fake_resolve_project_id)
|
|
1264
|
+
monkeypatch.setattr(
|
|
1265
|
+
image,
|
|
1266
|
+
"_upload_oci_archive_to_room",
|
|
1267
|
+
_fake_upload_oci_archive_to_room,
|
|
1268
|
+
)
|
|
1269
|
+
monkeypatch.setattr(image, "_parse_creds", lambda values: [])
|
|
1270
|
+
monkeypatch.setattr(
|
|
1271
|
+
image,
|
|
1272
|
+
"_stream_build_job_logs_and_wait_for_exit",
|
|
1273
|
+
_fake_stream_build_job_logs_and_wait_for_exit,
|
|
1274
|
+
)
|
|
1275
|
+
monkeypatch.setattr(
|
|
1276
|
+
image,
|
|
1277
|
+
"_deploy_ports_are_public",
|
|
1278
|
+
lambda *, private: True,
|
|
1279
|
+
)
|
|
1280
|
+
monkeypatch.setattr(
|
|
1281
|
+
image.uuid,
|
|
1282
|
+
"uuid4",
|
|
1283
|
+
lambda: SimpleNamespace(hex="pack-123"),
|
|
1284
|
+
)
|
|
1285
|
+
monkeypatch.setattr(image, "print", lambda *args, **kwargs: None)
|
|
1286
|
+
|
|
1287
|
+
await image.build_image(
|
|
1288
|
+
project_id="project-1",
|
|
1289
|
+
room="room-1",
|
|
1290
|
+
tag="room.meshagent.com/website-pack",
|
|
1291
|
+
context_path=None,
|
|
1292
|
+
dockerfile_path=None,
|
|
1293
|
+
pack=str(source_dir),
|
|
1294
|
+
arch="amd64",
|
|
1295
|
+
pack_room_path=None,
|
|
1296
|
+
mount_room_path=[],
|
|
1297
|
+
mount_project_path=[],
|
|
1298
|
+
mount_image=[],
|
|
1299
|
+
deploy=True,
|
|
1300
|
+
domain=None,
|
|
1301
|
+
private=False,
|
|
1302
|
+
cred=[],
|
|
1303
|
+
)
|
|
1304
|
+
|
|
1305
|
+
updated_service = captured["updated_service"]
|
|
1306
|
+
assert isinstance(updated_service, tuple)
|
|
1307
|
+
assert updated_service[0] == "project-1"
|
|
1308
|
+
assert updated_service[1] == "room-1"
|
|
1309
|
+
assert updated_service[2] == "service-1"
|
|
1310
|
+
updated_spec = updated_service[3]
|
|
1311
|
+
assert updated_spec.container is not None
|
|
1312
|
+
assert updated_spec.container.image == "room.meshagent.com/website-pack"
|
|
1313
|
+
assert captured["restarted_service_id"] == "service-1"
|
|
1151
1314
|
assert captured["deleted_path"] == "/temp/build/packs/pack-123"
|
|
1152
1315
|
assert captured["room_client_closed"] is True
|
|
1153
1316
|
assert captured["account_client_closed"] is True
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.35.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.35.
|
|
3
|
+
Version: 0.35.3
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -19,21 +19,21 @@ Requires-Dist: rich~=14.3.0
|
|
|
19
19
|
Requires-Dist: textual<2.0,>=0.50
|
|
20
20
|
Requires-Dist: prompt-toolkit~=3.0.52
|
|
21
21
|
Provides-Extra: all
|
|
22
|
-
Requires-Dist: meshagent-agents[all]~=0.35.
|
|
23
|
-
Requires-Dist: meshagent-api[all]~=0.35.
|
|
24
|
-
Requires-Dist: meshagent-computers~=0.35.
|
|
25
|
-
Requires-Dist: meshagent-openai~=0.35.
|
|
26
|
-
Requires-Dist: meshagent-anthropic~=0.35.
|
|
27
|
-
Requires-Dist: meshagent-codex~=0.35.
|
|
28
|
-
Requires-Dist: meshagent-mcp~=0.35.
|
|
29
|
-
Requires-Dist: meshagent-tools~=0.35.
|
|
22
|
+
Requires-Dist: meshagent-agents[all]~=0.35.3; extra == "all"
|
|
23
|
+
Requires-Dist: meshagent-api[all]~=0.35.3; extra == "all"
|
|
24
|
+
Requires-Dist: meshagent-computers~=0.35.3; extra == "all"
|
|
25
|
+
Requires-Dist: meshagent-openai~=0.35.3; extra == "all"
|
|
26
|
+
Requires-Dist: meshagent-anthropic~=0.35.3; extra == "all"
|
|
27
|
+
Requires-Dist: meshagent-codex~=0.35.3; extra == "all"
|
|
28
|
+
Requires-Dist: meshagent-mcp~=0.35.3; extra == "all"
|
|
29
|
+
Requires-Dist: meshagent-tools~=0.35.3; extra == "all"
|
|
30
30
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
31
31
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
32
32
|
Provides-Extra: mcp-service
|
|
33
|
-
Requires-Dist: meshagent-agents[all]~=0.35.
|
|
34
|
-
Requires-Dist: meshagent-api~=0.35.
|
|
35
|
-
Requires-Dist: meshagent-mcp~=0.35.
|
|
36
|
-
Requires-Dist: meshagent-tools~=0.35.
|
|
33
|
+
Requires-Dist: meshagent-agents[all]~=0.35.3; extra == "mcp-service"
|
|
34
|
+
Requires-Dist: meshagent-api~=0.35.3; extra == "mcp-service"
|
|
35
|
+
Requires-Dist: meshagent-mcp~=0.35.3; extra == "mcp-service"
|
|
36
|
+
Requires-Dist: meshagent-tools~=0.35.3; extra == "mcp-service"
|
|
37
37
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
38
38
|
|
|
39
39
|
# [Meshagent](https://www.meshagent.com)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
typer~=0.21
|
|
2
|
+
fastmcp~=2.8
|
|
3
|
+
opentelemetry-distro~=0.59b0
|
|
4
|
+
opentelemetry-exporter-otlp-proto-http~=1.33
|
|
5
|
+
art~=6.5
|
|
6
|
+
pydantic-yaml~=1.5
|
|
7
|
+
pathspec~=0.12.1
|
|
8
|
+
rich~=14.3.0
|
|
9
|
+
textual<2.0,>=0.50
|
|
10
|
+
prompt-toolkit~=3.0.52
|
|
11
|
+
|
|
12
|
+
[all]
|
|
13
|
+
meshagent-agents[all]~=0.35.3
|
|
14
|
+
meshagent-api[all]~=0.35.3
|
|
15
|
+
meshagent-computers~=0.35.3
|
|
16
|
+
meshagent-openai~=0.35.3
|
|
17
|
+
meshagent-anthropic~=0.35.3
|
|
18
|
+
meshagent-codex~=0.35.3
|
|
19
|
+
meshagent-mcp~=0.35.3
|
|
20
|
+
meshagent-tools~=0.35.3
|
|
21
|
+
supabase-auth~=2.28.0
|
|
22
|
+
prompt-toolkit~=3.0.52
|
|
23
|
+
|
|
24
|
+
[mcp-service]
|
|
25
|
+
meshagent-agents[all]~=0.35.3
|
|
26
|
+
meshagent-api~=0.35.3
|
|
27
|
+
meshagent-mcp~=0.35.3
|
|
28
|
+
meshagent-tools~=0.35.3
|
|
29
|
+
supabase-auth~=2.28.0
|
|
@@ -26,23 +26,23 @@ dynamic = ["version", "readme"]
|
|
|
26
26
|
[project.optional-dependencies]
|
|
27
27
|
|
|
28
28
|
all = [
|
|
29
|
-
"meshagent-agents[all]~=0.35.
|
|
30
|
-
"meshagent-api[all]~=0.35.
|
|
31
|
-
"meshagent-computers~=0.35.
|
|
32
|
-
"meshagent-openai~=0.35.
|
|
33
|
-
"meshagent-anthropic~=0.35.
|
|
34
|
-
"meshagent-codex~=0.35.
|
|
35
|
-
"meshagent-mcp~=0.35.
|
|
36
|
-
"meshagent-tools~=0.35.
|
|
29
|
+
"meshagent-agents[all]~=0.35.3",
|
|
30
|
+
"meshagent-api[all]~=0.35.3",
|
|
31
|
+
"meshagent-computers~=0.35.3",
|
|
32
|
+
"meshagent-openai~=0.35.3",
|
|
33
|
+
"meshagent-anthropic~=0.35.3",
|
|
34
|
+
"meshagent-codex~=0.35.3",
|
|
35
|
+
"meshagent-mcp~=0.35.3",
|
|
36
|
+
"meshagent-tools~=0.35.3",
|
|
37
37
|
"supabase-auth~=2.28.0",
|
|
38
38
|
"prompt-toolkit~=3.0.52"
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
mcp-service = [
|
|
42
|
-
"meshagent-agents[all]~=0.35.
|
|
43
|
-
"meshagent-api~=0.35.
|
|
44
|
-
"meshagent-mcp~=0.35.
|
|
45
|
-
"meshagent-tools~=0.35.
|
|
42
|
+
"meshagent-agents[all]~=0.35.3",
|
|
43
|
+
"meshagent-api~=0.35.3",
|
|
44
|
+
"meshagent-mcp~=0.35.3",
|
|
45
|
+
"meshagent-tools~=0.35.3",
|
|
46
46
|
"supabase-auth~=2.28.0"
|
|
47
47
|
]
|
|
48
48
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.35.0"
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
typer~=0.21
|
|
2
|
-
fastmcp~=2.8
|
|
3
|
-
opentelemetry-distro~=0.59b0
|
|
4
|
-
opentelemetry-exporter-otlp-proto-http~=1.33
|
|
5
|
-
art~=6.5
|
|
6
|
-
pydantic-yaml~=1.5
|
|
7
|
-
pathspec~=0.12.1
|
|
8
|
-
rich~=14.3.0
|
|
9
|
-
textual<2.0,>=0.50
|
|
10
|
-
prompt-toolkit~=3.0.52
|
|
11
|
-
|
|
12
|
-
[all]
|
|
13
|
-
meshagent-agents[all]~=0.35.0
|
|
14
|
-
meshagent-api[all]~=0.35.0
|
|
15
|
-
meshagent-computers~=0.35.0
|
|
16
|
-
meshagent-openai~=0.35.0
|
|
17
|
-
meshagent-anthropic~=0.35.0
|
|
18
|
-
meshagent-codex~=0.35.0
|
|
19
|
-
meshagent-mcp~=0.35.0
|
|
20
|
-
meshagent-tools~=0.35.0
|
|
21
|
-
supabase-auth~=2.28.0
|
|
22
|
-
prompt-toolkit~=3.0.52
|
|
23
|
-
|
|
24
|
-
[mcp-service]
|
|
25
|
-
meshagent-agents[all]~=0.35.0
|
|
26
|
-
meshagent-api~=0.35.0
|
|
27
|
-
meshagent-mcp~=0.35.0
|
|
28
|
-
meshagent-tools~=0.35.0
|
|
29
|
-
supabase-auth~=2.28.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|