meshagent-cli 0.41.6__tar.gz → 0.41.7__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.41.6 → meshagent_cli-0.41.7}/PKG-INFO +16 -16
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/cli.py +6 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/config.py +3 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/config_test.py +24 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/root_commands.py +5 -1
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/root_commands_test.py +46 -0
- meshagent_cli-0.41.7/meshagent/cli/version.py +1 -0
- meshagent_cli-0.41.7/meshagent/cli/version_check.py +106 -0
- meshagent_cli-0.41.7/meshagent/cli/version_check_test.py +58 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/PKG-INFO +16 -16
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/SOURCES.txt +2 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/requires.txt +15 -15
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/pyproject.toml +15 -15
- meshagent_cli-0.41.6/meshagent/cli/version.py +0 -1
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/LICENSE +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/README.md +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/__init__.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agent.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agent_cli_options_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agent_package_cli.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agent_package_cli_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agents.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/agents_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/api_keys.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/api_keys_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/ask.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/ask_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/async_typer.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/async_typer_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/auth.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/auth_async.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/auth_async_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/auth_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/call.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/chatbot.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/cli_mcp.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/cli_secrets.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/cli_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/common_options.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/containers.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/containers_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_project_templates/__init__.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_project_templates/python/backend-agent/server.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_project_templates/python/contact-form/server.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_project_templates/python/webserver/server.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/dataset.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/dataset_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/developer.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/developer_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/doctor.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/doctor_dockerfiles/__init__.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/doctor_templates/__init__.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/doctor_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/feeds.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/helper.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/helper_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/helpers.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/host.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/image.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/image_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/launch.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/launch_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/llm.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/llm_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/local_settings.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/local_settings_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/mailbot.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/mailbot_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/mailboxes.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/meeting_transcriber.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/memory.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/memory_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/meshagent_images.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/meshagent_images_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/messaging.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/multi.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/oauth2.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/oauth2_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/oci_archive.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/oci_archive_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/participant_token.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/port.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/port_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/preamble_rules.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/preamble_rules_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/process.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/process_live_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/process_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/projects.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/projects_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/queue.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/queue_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/registry.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/registry_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/room.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/room_connect.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/room_connect_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/room_services.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/rooms.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/rooms_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/routes.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/scheduled_tasks.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/scheduled_tasks_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/services.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/services_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/sessions.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/sessions_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/storage.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/storage_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/subscriptions.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/sync.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/sync_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/task_runner.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/task_runner_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tool_call_summary.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tool_call_summary_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tool_integrations.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tool_integrations_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/__init__.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/auth_switch.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/auth_switch_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/create.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/deploy_room.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/deploy_room_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/project_activate.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/project_activate_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/setup.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/setup_splash_frames.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/tui/setup_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/voicebot.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/webhook.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/webserver.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/webserver_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/worker.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/worker_test.py +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/dependency_links.txt +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/entry_points.txt +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent_cli.egg-info/top_level.txt +0 -0
- {meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.7
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -22,7 +22,7 @@ Requires-Dist: openpyxl~=3.1
|
|
|
22
22
|
Requires-Dist: xlsxwriter~=3.2
|
|
23
23
|
Requires-Dist: pathspec<2,>=1.0.3
|
|
24
24
|
Requires-Dist: zstandard~=0.25.0
|
|
25
|
-
Requires-Dist: meshagent-llm-proxy==0.41.
|
|
25
|
+
Requires-Dist: meshagent-llm-proxy==0.41.7
|
|
26
26
|
Requires-Dist: rich~=14.3.0
|
|
27
27
|
Requires-Dist: sounddevice~=0.5
|
|
28
28
|
Requires-Dist: textual<9.0,>=8.2.3
|
|
@@ -30,23 +30,23 @@ Requires-Dist: prompt-toolkit~=3.0.52
|
|
|
30
30
|
Requires-Dist: ascii-magic~=2.3
|
|
31
31
|
Requires-Dist: pillow~=11.3.0
|
|
32
32
|
Provides-Extra: all
|
|
33
|
-
Requires-Dist: meshagent-agents[all]==0.41.
|
|
34
|
-
Requires-Dist: meshagent-api[all]==0.41.
|
|
35
|
-
Requires-Dist: meshagent-commoncrawl==0.41.
|
|
36
|
-
Requires-Dist: meshagent-scrapy==0.41.
|
|
37
|
-
Requires-Dist: meshagent-computers==0.41.
|
|
38
|
-
Requires-Dist: meshagent-openai==0.41.
|
|
39
|
-
Requires-Dist: meshagent-anthropic==0.41.
|
|
40
|
-
Requires-Dist: meshagent-otel==0.41.
|
|
41
|
-
Requires-Dist: meshagent-mcp==0.41.
|
|
42
|
-
Requires-Dist: meshagent-tools==0.41.
|
|
33
|
+
Requires-Dist: meshagent-agents[all]==0.41.7; extra == "all"
|
|
34
|
+
Requires-Dist: meshagent-api[all]==0.41.7; extra == "all"
|
|
35
|
+
Requires-Dist: meshagent-commoncrawl==0.41.7; extra == "all"
|
|
36
|
+
Requires-Dist: meshagent-scrapy==0.41.7; extra == "all"
|
|
37
|
+
Requires-Dist: meshagent-computers==0.41.7; extra == "all"
|
|
38
|
+
Requires-Dist: meshagent-openai==0.41.7; extra == "all"
|
|
39
|
+
Requires-Dist: meshagent-anthropic==0.41.7; extra == "all"
|
|
40
|
+
Requires-Dist: meshagent-otel==0.41.7; extra == "all"
|
|
41
|
+
Requires-Dist: meshagent-mcp==0.41.7; extra == "all"
|
|
42
|
+
Requires-Dist: meshagent-tools==0.41.7; extra == "all"
|
|
43
43
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
44
44
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
45
45
|
Provides-Extra: mcp-service
|
|
46
|
-
Requires-Dist: meshagent-agents[all]==0.41.
|
|
47
|
-
Requires-Dist: meshagent-api==0.41.
|
|
48
|
-
Requires-Dist: meshagent-mcp==0.41.
|
|
49
|
-
Requires-Dist: meshagent-tools==0.41.
|
|
46
|
+
Requires-Dist: meshagent-agents[all]==0.41.7; extra == "mcp-service"
|
|
47
|
+
Requires-Dist: meshagent-api==0.41.7; extra == "mcp-service"
|
|
48
|
+
Requires-Dist: meshagent-mcp==0.41.7; extra == "mcp-service"
|
|
49
|
+
Requires-Dist: meshagent-tools==0.41.7; extra == "mcp-service"
|
|
50
50
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
51
51
|
Dynamic: license-file
|
|
52
52
|
|
|
@@ -2,12 +2,14 @@ from meshagent.cli import async_typer
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
|
|
5
|
+
import click
|
|
5
6
|
import os
|
|
6
7
|
import sys
|
|
7
8
|
import warnings
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
|
|
10
11
|
from meshagent.cli.local_settings import apply_active_profile_api_url_environment
|
|
12
|
+
from meshagent.cli.version_check import warn_if_cli_out_of_date
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
def _configure_warning_filters() -> None:
|
|
@@ -57,6 +59,10 @@ app = async_typer.LazyTyper(no_args_is_help=True, name="meshagent")
|
|
|
57
59
|
def _root_callback() -> None:
|
|
58
60
|
apply_active_profile_api_url_environment()
|
|
59
61
|
_configure_runtime()
|
|
62
|
+
ctx = click.get_current_context(silent=True)
|
|
63
|
+
if ctx is not None and ctx.invoked_subcommand == "version":
|
|
64
|
+
return
|
|
65
|
+
warn_if_cli_out_of_date()
|
|
60
66
|
|
|
61
67
|
|
|
62
68
|
app.add_lazy_command(
|
|
@@ -19,6 +19,8 @@ def _config_callback() -> None:
|
|
|
19
19
|
|
|
20
20
|
def _config_value(config: MeshagentDeploymentConfig, path: str) -> str | None:
|
|
21
21
|
match path:
|
|
22
|
+
case "version":
|
|
23
|
+
return config.version
|
|
22
24
|
case "domains.studio":
|
|
23
25
|
return config.domains.studio
|
|
24
26
|
case "domains.accounts":
|
|
@@ -36,6 +38,7 @@ def _config_value(config: MeshagentDeploymentConfig, path: str) -> str | None:
|
|
|
36
38
|
case _:
|
|
37
39
|
supported_paths = ", ".join(
|
|
38
40
|
[
|
|
41
|
+
"version",
|
|
39
42
|
"domains.studio",
|
|
40
43
|
"domains.accounts",
|
|
41
44
|
"domains.powerboards",
|
|
@@ -39,6 +39,30 @@ def test_config_get_domains_pages_prints_pages_domain(
|
|
|
39
39
|
assert fake_client.closed is True
|
|
40
40
|
|
|
41
41
|
|
|
42
|
+
def test_config_get_version_prints_server_version(
|
|
43
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
44
|
+
capsys: pytest.CaptureFixture[str],
|
|
45
|
+
) -> None:
|
|
46
|
+
fake_client = _FakeConfigClient(
|
|
47
|
+
MeshagentDeploymentConfig(
|
|
48
|
+
domains=MeshagentDomains(),
|
|
49
|
+
version="0.41.5",
|
|
50
|
+
)
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
async def _fake_get_client() -> _FakeConfigClient:
|
|
54
|
+
return fake_client
|
|
55
|
+
|
|
56
|
+
monkeypatch.setattr(config, "get_client", _fake_get_client)
|
|
57
|
+
|
|
58
|
+
cli.app(["config", "get", "version"])
|
|
59
|
+
|
|
60
|
+
captured = capsys.readouterr()
|
|
61
|
+
assert captured.out == "0.41.5\n"
|
|
62
|
+
assert captured.err == ""
|
|
63
|
+
assert fake_client.closed is True
|
|
64
|
+
|
|
65
|
+
|
|
42
66
|
def test_config_get_rejects_unknown_path(
|
|
43
67
|
monkeypatch: pytest.MonkeyPatch,
|
|
44
68
|
capsys: pytest.CaptureFixture[str],
|
|
@@ -4,7 +4,9 @@ import click
|
|
|
4
4
|
from rich import print
|
|
5
5
|
|
|
6
6
|
from meshagent.api.client import User
|
|
7
|
+
from meshagent.cli.async_typer import _run_coroutine_sync
|
|
7
8
|
from meshagent.cli.version import __version__
|
|
9
|
+
from meshagent.cli.version_check import get_server_version_best_effort
|
|
8
10
|
|
|
9
11
|
_SETUP_WELCOME_PROMPT = (
|
|
10
12
|
"welcome {user_name} to meshagent and let them know they can use "
|
|
@@ -58,7 +60,9 @@ def _current_meshagent_executable() -> str | None:
|
|
|
58
60
|
help="Print the version",
|
|
59
61
|
)
|
|
60
62
|
def version_command():
|
|
61
|
-
|
|
63
|
+
server_version = _run_coroutine_sync(get_server_version_best_effort())
|
|
64
|
+
print(f"client: {__version__}")
|
|
65
|
+
print(f"server: {server_version or 'unavailable'}")
|
|
62
66
|
|
|
63
67
|
|
|
64
68
|
@click.command("setup")
|
|
@@ -6,6 +6,52 @@ from meshagent.cli.local_settings import StoredUserProfile
|
|
|
6
6
|
from meshagent.cli.tui.setup import SetupClaudeConfiguration, SetupWizardResult
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
def test_version_command_prints_client_and_server_versions(
|
|
10
|
+
monkeypatch,
|
|
11
|
+
capsys,
|
|
12
|
+
) -> None:
|
|
13
|
+
async def _fake_get_server_version_best_effort() -> str | None:
|
|
14
|
+
return "0.42.0"
|
|
15
|
+
|
|
16
|
+
monkeypatch.setattr(
|
|
17
|
+
root_commands,
|
|
18
|
+
"get_server_version_best_effort",
|
|
19
|
+
_fake_get_server_version_best_effort,
|
|
20
|
+
)
|
|
21
|
+
monkeypatch.setattr(root_commands, "__version__", "0.41.5")
|
|
22
|
+
|
|
23
|
+
callback = root_commands.version_command.callback
|
|
24
|
+
assert callback is not None
|
|
25
|
+
callback()
|
|
26
|
+
|
|
27
|
+
captured = capsys.readouterr()
|
|
28
|
+
assert captured.out == "client: 0.41.5\nserver: 0.42.0\n"
|
|
29
|
+
assert captured.err == ""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_version_command_prints_unavailable_server_version(
|
|
33
|
+
monkeypatch,
|
|
34
|
+
capsys,
|
|
35
|
+
) -> None:
|
|
36
|
+
async def _fake_get_server_version_best_effort() -> str | None:
|
|
37
|
+
return None
|
|
38
|
+
|
|
39
|
+
monkeypatch.setattr(
|
|
40
|
+
root_commands,
|
|
41
|
+
"get_server_version_best_effort",
|
|
42
|
+
_fake_get_server_version_best_effort,
|
|
43
|
+
)
|
|
44
|
+
monkeypatch.setattr(root_commands, "__version__", "0.41.5")
|
|
45
|
+
|
|
46
|
+
callback = root_commands.version_command.callback
|
|
47
|
+
assert callback is not None
|
|
48
|
+
callback()
|
|
49
|
+
|
|
50
|
+
captured = capsys.readouterr()
|
|
51
|
+
assert captured.out == "client: 0.41.5\nserver: unavailable\n"
|
|
52
|
+
assert captured.err == ""
|
|
53
|
+
|
|
54
|
+
|
|
9
55
|
def test_setup_command_launches_ask_after_success(monkeypatch) -> None:
|
|
10
56
|
launched: list[dict[str, object]] = []
|
|
11
57
|
existing_codex_profile_requests: list[str] = []
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.41.7"
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from aiohttp import ClientTimeout
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.markup import escape
|
|
9
|
+
|
|
10
|
+
from meshagent.api.http import new_client_session
|
|
11
|
+
from meshagent.cli.async_typer import _run_coroutine_sync
|
|
12
|
+
from meshagent.cli.local_settings import resolve_api_url
|
|
13
|
+
from meshagent.cli.version import __version__ as MESHAGENT_CLI_VERSION
|
|
14
|
+
|
|
15
|
+
_VERSION_CHECK_TIMEOUT_SECONDS = 1.5
|
|
16
|
+
_version_check_done = False
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _version_key(value: str) -> tuple[int, int, int] | None:
|
|
20
|
+
parts = value.strip().split(".")
|
|
21
|
+
if len(parts) < 2:
|
|
22
|
+
return None
|
|
23
|
+
|
|
24
|
+
parsed: list[int] = []
|
|
25
|
+
for part in parts[:3]:
|
|
26
|
+
digits = []
|
|
27
|
+
for char in part:
|
|
28
|
+
if not char.isdigit():
|
|
29
|
+
break
|
|
30
|
+
digits.append(char)
|
|
31
|
+
if not digits:
|
|
32
|
+
return None
|
|
33
|
+
parsed.append(int("".join(digits)))
|
|
34
|
+
|
|
35
|
+
while len(parsed) < 3:
|
|
36
|
+
parsed.append(0)
|
|
37
|
+
return tuple(parsed)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _cli_is_behind_server(*, cli_version: str, server_version: str) -> bool:
|
|
41
|
+
cli_key = _version_key(cli_version)
|
|
42
|
+
server_key = _version_key(server_version)
|
|
43
|
+
if cli_key is None or server_key is None:
|
|
44
|
+
return False
|
|
45
|
+
return cli_key < server_key
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _server_version_from_config_payload(payload: Any) -> str | None:
|
|
49
|
+
if not isinstance(payload, dict):
|
|
50
|
+
return None
|
|
51
|
+
version = payload.get("version")
|
|
52
|
+
if not isinstance(version, str):
|
|
53
|
+
return None
|
|
54
|
+
normalized = version.strip()
|
|
55
|
+
if normalized == "":
|
|
56
|
+
return None
|
|
57
|
+
return normalized
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
async def _fetch_server_version() -> str | None:
|
|
61
|
+
timeout = ClientTimeout(total=_VERSION_CHECK_TIMEOUT_SECONDS)
|
|
62
|
+
async with new_client_session(timeout=timeout) as session:
|
|
63
|
+
async with session.get(f"{resolve_api_url()}/config") as response:
|
|
64
|
+
if response.status >= 400:
|
|
65
|
+
return None
|
|
66
|
+
return _server_version_from_config_payload(await response.json())
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def get_server_version_best_effort() -> str | None:
|
|
70
|
+
try:
|
|
71
|
+
return await _fetch_server_version()
|
|
72
|
+
except Exception:
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
async def _maybe_warn_if_cli_out_of_date() -> None:
|
|
77
|
+
server_version = await get_server_version_best_effort()
|
|
78
|
+
if server_version is None:
|
|
79
|
+
return
|
|
80
|
+
if not _cli_is_behind_server(
|
|
81
|
+
cli_version=MESHAGENT_CLI_VERSION,
|
|
82
|
+
server_version=server_version,
|
|
83
|
+
):
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
Console(stderr=True, width=200).print(
|
|
87
|
+
"[yellow]"
|
|
88
|
+
"Warning: this meshagent CLI is older than the server "
|
|
89
|
+
f"(CLI {escape(MESHAGENT_CLI_VERSION)}, server {escape(server_version)}). "
|
|
90
|
+
"Update meshagent to get the latest compatible behavior."
|
|
91
|
+
"[/yellow]"
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def warn_if_cli_out_of_date() -> None:
|
|
96
|
+
global _version_check_done
|
|
97
|
+
if _version_check_done:
|
|
98
|
+
return
|
|
99
|
+
_version_check_done = True
|
|
100
|
+
|
|
101
|
+
if os.getenv("MESHAGENT_DISABLE_VERSION_CHECK") == "1":
|
|
102
|
+
return
|
|
103
|
+
if os.getenv("PYTEST_CURRENT_TEST") is not None:
|
|
104
|
+
return
|
|
105
|
+
|
|
106
|
+
_run_coroutine_sync(_maybe_warn_if_cli_out_of_date())
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from meshagent.cli import version_check
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def test_cli_is_behind_server_compares_semver_prefixes() -> None:
|
|
7
|
+
assert version_check._cli_is_behind_server(
|
|
8
|
+
cli_version="0.41.5",
|
|
9
|
+
server_version="0.42.0",
|
|
10
|
+
)
|
|
11
|
+
assert not version_check._cli_is_behind_server(
|
|
12
|
+
cli_version="0.42.0",
|
|
13
|
+
server_version="0.41.5",
|
|
14
|
+
)
|
|
15
|
+
assert not version_check._cli_is_behind_server(
|
|
16
|
+
cli_version="0.42.0",
|
|
17
|
+
server_version="0.42.0",
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@pytest.mark.asyncio
|
|
22
|
+
async def test_maybe_warn_if_cli_out_of_date_prints_yellow_warning(
|
|
23
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
24
|
+
capsys: pytest.CaptureFixture[str],
|
|
25
|
+
) -> None:
|
|
26
|
+
async def _fake_fetch_server_version() -> str:
|
|
27
|
+
return "0.42.0"
|
|
28
|
+
|
|
29
|
+
monkeypatch.setattr(
|
|
30
|
+
version_check, "_fetch_server_version", _fake_fetch_server_version
|
|
31
|
+
)
|
|
32
|
+
monkeypatch.setattr(version_check, "MESHAGENT_CLI_VERSION", "0.41.5")
|
|
33
|
+
|
|
34
|
+
await version_check._maybe_warn_if_cli_out_of_date()
|
|
35
|
+
|
|
36
|
+
captured = capsys.readouterr()
|
|
37
|
+
assert captured.out == ""
|
|
38
|
+
assert "Warning: this meshagent CLI is older than the server" in captured.err
|
|
39
|
+
assert "CLI 0.41.5, server 0.42.0" in captured.err
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@pytest.mark.asyncio
|
|
43
|
+
async def test_maybe_warn_if_cli_out_of_date_ignores_fetch_errors(
|
|
44
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
45
|
+
capsys: pytest.CaptureFixture[str],
|
|
46
|
+
) -> None:
|
|
47
|
+
async def _fake_fetch_server_version() -> str:
|
|
48
|
+
raise RuntimeError("offline")
|
|
49
|
+
|
|
50
|
+
monkeypatch.setattr(
|
|
51
|
+
version_check, "_fetch_server_version", _fake_fetch_server_version
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
await version_check._maybe_warn_if_cli_out_of_date()
|
|
55
|
+
|
|
56
|
+
captured = capsys.readouterr()
|
|
57
|
+
assert captured.out == ""
|
|
58
|
+
assert captured.err == ""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.7
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -22,7 +22,7 @@ Requires-Dist: openpyxl~=3.1
|
|
|
22
22
|
Requires-Dist: xlsxwriter~=3.2
|
|
23
23
|
Requires-Dist: pathspec<2,>=1.0.3
|
|
24
24
|
Requires-Dist: zstandard~=0.25.0
|
|
25
|
-
Requires-Dist: meshagent-llm-proxy==0.41.
|
|
25
|
+
Requires-Dist: meshagent-llm-proxy==0.41.7
|
|
26
26
|
Requires-Dist: rich~=14.3.0
|
|
27
27
|
Requires-Dist: sounddevice~=0.5
|
|
28
28
|
Requires-Dist: textual<9.0,>=8.2.3
|
|
@@ -30,23 +30,23 @@ Requires-Dist: prompt-toolkit~=3.0.52
|
|
|
30
30
|
Requires-Dist: ascii-magic~=2.3
|
|
31
31
|
Requires-Dist: pillow~=11.3.0
|
|
32
32
|
Provides-Extra: all
|
|
33
|
-
Requires-Dist: meshagent-agents[all]==0.41.
|
|
34
|
-
Requires-Dist: meshagent-api[all]==0.41.
|
|
35
|
-
Requires-Dist: meshagent-commoncrawl==0.41.
|
|
36
|
-
Requires-Dist: meshagent-scrapy==0.41.
|
|
37
|
-
Requires-Dist: meshagent-computers==0.41.
|
|
38
|
-
Requires-Dist: meshagent-openai==0.41.
|
|
39
|
-
Requires-Dist: meshagent-anthropic==0.41.
|
|
40
|
-
Requires-Dist: meshagent-otel==0.41.
|
|
41
|
-
Requires-Dist: meshagent-mcp==0.41.
|
|
42
|
-
Requires-Dist: meshagent-tools==0.41.
|
|
33
|
+
Requires-Dist: meshagent-agents[all]==0.41.7; extra == "all"
|
|
34
|
+
Requires-Dist: meshagent-api[all]==0.41.7; extra == "all"
|
|
35
|
+
Requires-Dist: meshagent-commoncrawl==0.41.7; extra == "all"
|
|
36
|
+
Requires-Dist: meshagent-scrapy==0.41.7; extra == "all"
|
|
37
|
+
Requires-Dist: meshagent-computers==0.41.7; extra == "all"
|
|
38
|
+
Requires-Dist: meshagent-openai==0.41.7; extra == "all"
|
|
39
|
+
Requires-Dist: meshagent-anthropic==0.41.7; extra == "all"
|
|
40
|
+
Requires-Dist: meshagent-otel==0.41.7; extra == "all"
|
|
41
|
+
Requires-Dist: meshagent-mcp==0.41.7; extra == "all"
|
|
42
|
+
Requires-Dist: meshagent-tools==0.41.7; extra == "all"
|
|
43
43
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
44
44
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
45
45
|
Provides-Extra: mcp-service
|
|
46
|
-
Requires-Dist: meshagent-agents[all]==0.41.
|
|
47
|
-
Requires-Dist: meshagent-api==0.41.
|
|
48
|
-
Requires-Dist: meshagent-mcp==0.41.
|
|
49
|
-
Requires-Dist: meshagent-tools==0.41.
|
|
46
|
+
Requires-Dist: meshagent-agents[all]==0.41.7; extra == "mcp-service"
|
|
47
|
+
Requires-Dist: meshagent-api==0.41.7; extra == "mcp-service"
|
|
48
|
+
Requires-Dist: meshagent-mcp==0.41.7; extra == "mcp-service"
|
|
49
|
+
Requires-Dist: meshagent-tools==0.41.7; extra == "mcp-service"
|
|
50
50
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
51
51
|
Dynamic: license-file
|
|
52
52
|
|
|
@@ -106,6 +106,8 @@ meshagent/cli/tool_call_summary_test.py
|
|
|
106
106
|
meshagent/cli/tool_integrations.py
|
|
107
107
|
meshagent/cli/tool_integrations_test.py
|
|
108
108
|
meshagent/cli/version.py
|
|
109
|
+
meshagent/cli/version_check.py
|
|
110
|
+
meshagent/cli/version_check_test.py
|
|
109
111
|
meshagent/cli/voicebot.py
|
|
110
112
|
meshagent/cli/webhook.py
|
|
111
113
|
meshagent/cli/webserver.py
|
|
@@ -11,7 +11,7 @@ openpyxl~=3.1
|
|
|
11
11
|
xlsxwriter~=3.2
|
|
12
12
|
pathspec<2,>=1.0.3
|
|
13
13
|
zstandard~=0.25.0
|
|
14
|
-
meshagent-llm-proxy==0.41.
|
|
14
|
+
meshagent-llm-proxy==0.41.7
|
|
15
15
|
rich~=14.3.0
|
|
16
16
|
sounddevice~=0.5
|
|
17
17
|
textual<9.0,>=8.2.3
|
|
@@ -20,22 +20,22 @@ ascii-magic~=2.3
|
|
|
20
20
|
pillow~=11.3.0
|
|
21
21
|
|
|
22
22
|
[all]
|
|
23
|
-
meshagent-agents[all]==0.41.
|
|
24
|
-
meshagent-api[all]==0.41.
|
|
25
|
-
meshagent-commoncrawl==0.41.
|
|
26
|
-
meshagent-scrapy==0.41.
|
|
27
|
-
meshagent-computers==0.41.
|
|
28
|
-
meshagent-openai==0.41.
|
|
29
|
-
meshagent-anthropic==0.41.
|
|
30
|
-
meshagent-otel==0.41.
|
|
31
|
-
meshagent-mcp==0.41.
|
|
32
|
-
meshagent-tools==0.41.
|
|
23
|
+
meshagent-agents[all]==0.41.7
|
|
24
|
+
meshagent-api[all]==0.41.7
|
|
25
|
+
meshagent-commoncrawl==0.41.7
|
|
26
|
+
meshagent-scrapy==0.41.7
|
|
27
|
+
meshagent-computers==0.41.7
|
|
28
|
+
meshagent-openai==0.41.7
|
|
29
|
+
meshagent-anthropic==0.41.7
|
|
30
|
+
meshagent-otel==0.41.7
|
|
31
|
+
meshagent-mcp==0.41.7
|
|
32
|
+
meshagent-tools==0.41.7
|
|
33
33
|
supabase-auth~=2.28.0
|
|
34
34
|
prompt-toolkit~=3.0.52
|
|
35
35
|
|
|
36
36
|
[mcp-service]
|
|
37
|
-
meshagent-agents[all]==0.41.
|
|
38
|
-
meshagent-api==0.41.
|
|
39
|
-
meshagent-mcp==0.41.
|
|
40
|
-
meshagent-tools==0.41.
|
|
37
|
+
meshagent-agents[all]==0.41.7
|
|
38
|
+
meshagent-api==0.41.7
|
|
39
|
+
meshagent-mcp==0.41.7
|
|
40
|
+
meshagent-tools==0.41.7
|
|
41
41
|
supabase-auth~=2.28.0
|
|
@@ -22,7 +22,7 @@ dependencies = [
|
|
|
22
22
|
"xlsxwriter~=3.2",
|
|
23
23
|
"pathspec>=1.0.3,<2",
|
|
24
24
|
"zstandard~=0.25.0",
|
|
25
|
-
"meshagent-llm-proxy==0.41.
|
|
25
|
+
"meshagent-llm-proxy==0.41.7",
|
|
26
26
|
"rich~=14.3.0",
|
|
27
27
|
"sounddevice~=0.5",
|
|
28
28
|
"textual>=8.2.3,<9.0",
|
|
@@ -36,25 +36,25 @@ dynamic = ["version", "readme"]
|
|
|
36
36
|
[project.optional-dependencies]
|
|
37
37
|
|
|
38
38
|
all = [
|
|
39
|
-
"meshagent-agents[all]==0.41.
|
|
40
|
-
"meshagent-api[all]==0.41.
|
|
41
|
-
"meshagent-commoncrawl==0.41.
|
|
42
|
-
"meshagent-scrapy==0.41.
|
|
43
|
-
"meshagent-computers==0.41.
|
|
44
|
-
"meshagent-openai==0.41.
|
|
45
|
-
"meshagent-anthropic==0.41.
|
|
46
|
-
"meshagent-otel==0.41.
|
|
47
|
-
"meshagent-mcp==0.41.
|
|
48
|
-
"meshagent-tools==0.41.
|
|
39
|
+
"meshagent-agents[all]==0.41.7",
|
|
40
|
+
"meshagent-api[all]==0.41.7",
|
|
41
|
+
"meshagent-commoncrawl==0.41.7",
|
|
42
|
+
"meshagent-scrapy==0.41.7",
|
|
43
|
+
"meshagent-computers==0.41.7",
|
|
44
|
+
"meshagent-openai==0.41.7",
|
|
45
|
+
"meshagent-anthropic==0.41.7",
|
|
46
|
+
"meshagent-otel==0.41.7",
|
|
47
|
+
"meshagent-mcp==0.41.7",
|
|
48
|
+
"meshagent-tools==0.41.7",
|
|
49
49
|
"supabase-auth~=2.28.0",
|
|
50
50
|
"prompt-toolkit~=3.0.52"
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
mcp-service = [
|
|
54
|
-
"meshagent-agents[all]==0.41.
|
|
55
|
-
"meshagent-api==0.41.
|
|
56
|
-
"meshagent-mcp==0.41.
|
|
57
|
-
"meshagent-tools==0.41.
|
|
54
|
+
"meshagent-agents[all]==0.41.7",
|
|
55
|
+
"meshagent-api==0.41.7",
|
|
56
|
+
"meshagent-mcp==0.41.7",
|
|
57
|
+
"meshagent-tools==0.41.7",
|
|
58
58
|
"supabase-auth~=2.28.0"
|
|
59
59
|
]
|
|
60
60
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.41.6"
|
|
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
|
{meshagent_cli-0.41.6 → meshagent_cli-0.41.7}/meshagent/cli/create_project_templates/__init__.py
RENAMED
|
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
|
|
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
|