meshagent-cli 0.43.1__tar.gz → 0.43.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.43.1 → meshagent_cli-0.43.3}/PKG-INFO +17 -17
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/ask.py +74 -28
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/ask_test.py +20 -0
- meshagent_cli-0.43.3/meshagent/cli/version.py +1 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/PKG-INFO +17 -17
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/requires.txt +16 -16
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/pyproject.toml +16 -16
- meshagent_cli-0.43.1/meshagent/cli/version.py +0 -1
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/LICENSE +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/README.md +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/__init__.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/_filedrop.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agent.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agent_cli_options_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agent_package_cli.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agent_package_cli_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agents.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/agents_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/api_keys.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/api_keys_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/async_typer.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/async_typer_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/auth.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/auth_async.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/auth_async_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/auth_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/call.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/chatbot.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/cli.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/cli_mcp.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/cli_secrets.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/cli_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/common_options.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/config.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/config_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/containers.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/containers_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create_project_templates/__init__.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create_project_templates/python/backend-agent/server.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create_project_templates/python/contact-form/server.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create_project_templates/python/webserver/server.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/create_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/dataset.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/dataset_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/developer.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/developer_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/doctor.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/doctor_dockerfiles/__init__.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/doctor_templates/__init__.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/doctor_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/feeds.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/helper.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/helper_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/helpers.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/host.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/image.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/image_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/launch.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/launch_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/llm.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/llm_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/local_settings.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/local_settings_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/mailbot.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/mailbot_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/mailboxes.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/meeting_transcriber.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/memory.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/memory_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/meshagent_images.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/meshagent_images_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/messaging.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/multi.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/oauth2.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/oauth2_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/oci_archive.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/oci_archive_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/participant_token.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/port.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/port_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/preamble_rules.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/preamble_rules_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/process.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/process_live_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/process_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/projects.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/projects_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/queue.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/queue_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/registry.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/registry_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/room.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/room_connect.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/room_connect_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/room_services.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/rooms.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/rooms_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/root_commands.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/root_commands_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/routes.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/scheduled_tasks.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/scheduled_tasks_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/services.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/services_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/sessions.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/sessions_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/storage.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/storage_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/subscriptions.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/sync.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/sync_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/task_runner.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/task_runner_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/thread_inspect.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/thread_inspect_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/thread_sidebar.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tool_call_summary.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tool_call_summary_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tool_integrations.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tool_integrations_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/__init__.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/auth_switch.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/auth_switch_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/create.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/deploy_room.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/deploy_room_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/project_activate.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/project_activate_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/setup.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/setup_splash_frames.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/tui/setup_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/version_check.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/version_check_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/voicebot.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/webhook.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/webserver.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/webserver_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/worker.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent/cli/worker_test.py +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/SOURCES.txt +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/dependency_links.txt +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/entry_points.txt +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/meshagent_cli.egg-info/top_level.txt +0 -0
- {meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.43.
|
|
3
|
+
Version: 0.43.3
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -22,8 +22,8 @@ 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.43.
|
|
26
|
-
Requires-Dist: meshagent-codex==0.43.
|
|
25
|
+
Requires-Dist: meshagent-llm-proxy==0.43.3
|
|
26
|
+
Requires-Dist: meshagent-codex==0.43.3
|
|
27
27
|
Requires-Dist: rich~=14.3.0
|
|
28
28
|
Requires-Dist: sounddevice~=0.5
|
|
29
29
|
Requires-Dist: textual<9.0,>=8.2.3
|
|
@@ -32,23 +32,23 @@ Requires-Dist: prompt-toolkit~=3.0.52
|
|
|
32
32
|
Requires-Dist: ascii-magic~=2.3
|
|
33
33
|
Requires-Dist: pillow~=11.3.0
|
|
34
34
|
Provides-Extra: all
|
|
35
|
-
Requires-Dist: meshagent-agents[all]==0.43.
|
|
36
|
-
Requires-Dist: meshagent-api[all]==0.43.
|
|
37
|
-
Requires-Dist: meshagent-commoncrawl==0.43.
|
|
38
|
-
Requires-Dist: meshagent-scrapy==0.43.
|
|
39
|
-
Requires-Dist: meshagent-computers==0.43.
|
|
40
|
-
Requires-Dist: meshagent-openai==0.43.
|
|
41
|
-
Requires-Dist: meshagent-anthropic==0.43.
|
|
42
|
-
Requires-Dist: meshagent-otel==0.43.
|
|
43
|
-
Requires-Dist: meshagent-mcp==0.43.
|
|
44
|
-
Requires-Dist: meshagent-tools==0.43.
|
|
35
|
+
Requires-Dist: meshagent-agents[all]==0.43.3; extra == "all"
|
|
36
|
+
Requires-Dist: meshagent-api[all]==0.43.3; extra == "all"
|
|
37
|
+
Requires-Dist: meshagent-commoncrawl==0.43.3; extra == "all"
|
|
38
|
+
Requires-Dist: meshagent-scrapy==0.43.3; extra == "all"
|
|
39
|
+
Requires-Dist: meshagent-computers==0.43.3; extra == "all"
|
|
40
|
+
Requires-Dist: meshagent-openai==0.43.3; extra == "all"
|
|
41
|
+
Requires-Dist: meshagent-anthropic==0.43.3; extra == "all"
|
|
42
|
+
Requires-Dist: meshagent-otel==0.43.3; extra == "all"
|
|
43
|
+
Requires-Dist: meshagent-mcp==0.43.3; extra == "all"
|
|
44
|
+
Requires-Dist: meshagent-tools==0.43.3; extra == "all"
|
|
45
45
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
46
46
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
47
47
|
Provides-Extra: mcp-service
|
|
48
|
-
Requires-Dist: meshagent-agents[all]==0.43.
|
|
49
|
-
Requires-Dist: meshagent-api==0.43.
|
|
50
|
-
Requires-Dist: meshagent-mcp==0.43.
|
|
51
|
-
Requires-Dist: meshagent-tools==0.43.
|
|
48
|
+
Requires-Dist: meshagent-agents[all]==0.43.3; extra == "mcp-service"
|
|
49
|
+
Requires-Dist: meshagent-api==0.43.3; extra == "mcp-service"
|
|
50
|
+
Requires-Dist: meshagent-mcp==0.43.3; extra == "mcp-service"
|
|
51
|
+
Requires-Dist: meshagent-tools==0.43.3; extra == "mcp-service"
|
|
52
52
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
53
53
|
Dynamic: license-file
|
|
54
54
|
|
|
@@ -435,7 +435,17 @@ class _AskConversationMessage:
|
|
|
435
435
|
role: str
|
|
436
436
|
text: str
|
|
437
437
|
kind: Literal["text", "image"] = "text"
|
|
438
|
-
|
|
438
|
+
attachment_references: tuple["_AskAttachmentReference", ...] = ()
|
|
439
|
+
|
|
440
|
+
@property
|
|
441
|
+
def attachment_uris(self) -> tuple[str, ...]:
|
|
442
|
+
return tuple(reference.uri for reference in self.attachment_references)
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
@dataclass(frozen=True, slots=True)
|
|
446
|
+
class _AskAttachmentReference:
|
|
447
|
+
uri: str
|
|
448
|
+
name: str | None = None
|
|
439
449
|
|
|
440
450
|
|
|
441
451
|
@dataclass(frozen=True, slots=True)
|
|
@@ -914,7 +924,16 @@ def _agent_message_content_attachment_uris(
|
|
|
914
924
|
content: list[AgentTextContent | AgentFileContent],
|
|
915
925
|
) -> tuple[str, ...]:
|
|
916
926
|
return tuple(
|
|
917
|
-
|
|
927
|
+
attachment.uri
|
|
928
|
+
for attachment in _agent_message_content_attachment_references(content)
|
|
929
|
+
)
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
def _agent_message_content_attachment_references(
|
|
933
|
+
content: list[AgentTextContent | AgentFileContent],
|
|
934
|
+
) -> tuple[_AskAttachmentReference, ...]:
|
|
935
|
+
return tuple(
|
|
936
|
+
_AskAttachmentReference(uri=item.url.strip(), name=item.name)
|
|
918
937
|
for item in content
|
|
919
938
|
if isinstance(item, AgentFileContent) and item.url.strip() != ""
|
|
920
939
|
)
|
|
@@ -1356,8 +1375,10 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1356
1375
|
) -> _AskConversationMessage | None:
|
|
1357
1376
|
if isinstance(message, (StartThread, TurnStart, TurnSteer)):
|
|
1358
1377
|
text = _agent_message_content_text(message.content)
|
|
1359
|
-
|
|
1360
|
-
|
|
1378
|
+
attachment_references = _agent_message_content_attachment_references(
|
|
1379
|
+
message.content
|
|
1380
|
+
)
|
|
1381
|
+
if text == "" and len(attachment_references) == 0:
|
|
1361
1382
|
return None
|
|
1362
1383
|
return _AskConversationMessage(
|
|
1363
1384
|
message_id=message.message_id,
|
|
@@ -1367,12 +1388,14 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1367
1388
|
default="you",
|
|
1368
1389
|
),
|
|
1369
1390
|
text=text,
|
|
1370
|
-
|
|
1391
|
+
attachment_references=attachment_references,
|
|
1371
1392
|
)
|
|
1372
1393
|
if isinstance(message, (TurnStartAccepted, TurnSteerAccepted)):
|
|
1373
1394
|
text = _agent_message_content_text(message.content)
|
|
1374
|
-
|
|
1375
|
-
|
|
1395
|
+
attachment_references = _agent_message_content_attachment_references(
|
|
1396
|
+
message.content
|
|
1397
|
+
)
|
|
1398
|
+
if text == "" and len(attachment_references) == 0:
|
|
1376
1399
|
return None
|
|
1377
1400
|
return _AskConversationMessage(
|
|
1378
1401
|
message_id=message.source_message_id,
|
|
@@ -1382,7 +1405,7 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1382
1405
|
default="user",
|
|
1383
1406
|
),
|
|
1384
1407
|
text=text,
|
|
1385
|
-
|
|
1408
|
+
attachment_references=attachment_references,
|
|
1386
1409
|
)
|
|
1387
1410
|
if isinstance(message, TurnEnded):
|
|
1388
1411
|
if message.error is None:
|
|
@@ -1424,7 +1447,9 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1424
1447
|
),
|
|
1425
1448
|
text="" if can_render_inline else _attachment_display_text(message.url),
|
|
1426
1449
|
kind="image" if can_render_inline else "text",
|
|
1427
|
-
|
|
1450
|
+
attachment_references=(
|
|
1451
|
+
(_AskAttachmentReference(uri=message.url),) if can_render_inline else ()
|
|
1452
|
+
),
|
|
1428
1453
|
)
|
|
1429
1454
|
if isinstance(message, AgentImageGenerationPartial):
|
|
1430
1455
|
if message.image is None:
|
|
@@ -1436,7 +1461,7 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1436
1461
|
role="assistant",
|
|
1437
1462
|
text="",
|
|
1438
1463
|
kind="image",
|
|
1439
|
-
|
|
1464
|
+
attachment_references=(_AskAttachmentReference(uri=message.image.uri),),
|
|
1440
1465
|
)
|
|
1441
1466
|
if isinstance(message, AgentImageGenerationCompleted):
|
|
1442
1467
|
image_uris: list[str] = []
|
|
@@ -1450,7 +1475,9 @@ def _ask_conversation_message_from_agent_message(
|
|
|
1450
1475
|
role="assistant",
|
|
1451
1476
|
text="",
|
|
1452
1477
|
kind="image",
|
|
1453
|
-
|
|
1478
|
+
attachment_references=tuple(
|
|
1479
|
+
_AskAttachmentReference(uri=uri) for uri in image_uris
|
|
1480
|
+
),
|
|
1454
1481
|
)
|
|
1455
1482
|
return None
|
|
1456
1483
|
|
|
@@ -4476,12 +4503,19 @@ async def _run_ask_tui(
|
|
|
4476
4503
|
self,
|
|
4477
4504
|
*,
|
|
4478
4505
|
role: str,
|
|
4479
|
-
uri: str
|
|
4506
|
+
uri: str
|
|
4507
|
+
| _AskAttachmentReference
|
|
4508
|
+
| Sequence[str | _AskAttachmentReference]
|
|
4509
|
+
| None,
|
|
4480
4510
|
text: str = "",
|
|
4481
4511
|
fallback_mime_type: str | None = None,
|
|
4482
4512
|
message_id: str | None = None,
|
|
4483
4513
|
) -> None:
|
|
4484
|
-
|
|
4514
|
+
attachment_references = (
|
|
4515
|
+
[uri]
|
|
4516
|
+
if isinstance(uri, (str, _AskAttachmentReference)) or uri is None
|
|
4517
|
+
else list(uri)
|
|
4518
|
+
)
|
|
4485
4519
|
inline_renderables: list[Any] = []
|
|
4486
4520
|
attachment_parts: list[str] = []
|
|
4487
4521
|
image_dataset_client = (
|
|
@@ -4493,7 +4527,13 @@ async def _run_ask_tui(
|
|
|
4493
4527
|
else None
|
|
4494
4528
|
)
|
|
4495
4529
|
)
|
|
4496
|
-
for
|
|
4530
|
+
for attachment_reference in attachment_references:
|
|
4531
|
+
if isinstance(attachment_reference, _AskAttachmentReference):
|
|
4532
|
+
item_uri = attachment_reference.uri
|
|
4533
|
+
item_name = attachment_reference.name
|
|
4534
|
+
else:
|
|
4535
|
+
item_uri = attachment_reference
|
|
4536
|
+
item_name = None
|
|
4497
4537
|
attachment_record = await _attachment_record_from_uri(
|
|
4498
4538
|
item_uri,
|
|
4499
4539
|
image_dataset_client=image_dataset_client,
|
|
@@ -4518,14 +4558,16 @@ async def _run_ask_tui(
|
|
|
4518
4558
|
pdf_preview = await asyncio.to_thread(
|
|
4519
4559
|
_pdf_preview_from_record,
|
|
4520
4560
|
attachment_record,
|
|
4521
|
-
name=_attachment_display_name(item_uri),
|
|
4561
|
+
name=_attachment_display_name(item_uri, name=item_name),
|
|
4522
4562
|
max_rows=max(1, self.size.height // 2),
|
|
4523
4563
|
)
|
|
4524
4564
|
if pdf_preview is not None:
|
|
4525
4565
|
inline_renderables.append(pdf_preview)
|
|
4526
4566
|
continue
|
|
4527
4567
|
if isinstance(item_uri, str) and item_uri.strip() != "":
|
|
4528
|
-
attachment_parts.append(
|
|
4568
|
+
attachment_parts.append(
|
|
4569
|
+
_attachment_display_text(item_uri, name=item_name)
|
|
4570
|
+
)
|
|
4529
4571
|
if len(inline_renderables) > 0:
|
|
4530
4572
|
inline_renderables.extend(attachment_parts)
|
|
4531
4573
|
entry = _AskFeedEntry(
|
|
@@ -4570,7 +4612,9 @@ async def _run_ask_tui(
|
|
|
4570
4612
|
self,
|
|
4571
4613
|
*,
|
|
4572
4614
|
message: _AskConversationMessage,
|
|
4573
|
-
uri: str
|
|
4615
|
+
uri: str
|
|
4616
|
+
| _AskAttachmentReference
|
|
4617
|
+
| Sequence[str | _AskAttachmentReference],
|
|
4574
4618
|
) -> None:
|
|
4575
4619
|
try:
|
|
4576
4620
|
await self._append_image_or_attachment_entry(
|
|
@@ -4924,17 +4968,19 @@ async def _run_ask_tui(
|
|
|
4924
4968
|
kind=message.kind,
|
|
4925
4969
|
message_id=message.message_id,
|
|
4926
4970
|
)
|
|
4927
|
-
|
|
4928
|
-
|
|
4929
|
-
for
|
|
4930
|
-
if _attachment_uri_may_render_inline(uri)
|
|
4971
|
+
renderable_attachment_references = tuple(
|
|
4972
|
+
attachment_reference
|
|
4973
|
+
for attachment_reference in message.attachment_references
|
|
4974
|
+
if _attachment_uri_may_render_inline(attachment_reference.uri)
|
|
4931
4975
|
)
|
|
4932
4976
|
dataset_image_uri = _dataset_image_attachment_uri(message.text)
|
|
4933
4977
|
if (
|
|
4934
|
-
len(
|
|
4978
|
+
len(renderable_attachment_references) == 0
|
|
4935
4979
|
and dataset_image_uri is not None
|
|
4936
4980
|
):
|
|
4937
|
-
|
|
4981
|
+
renderable_attachment_references = (
|
|
4982
|
+
_AskAttachmentReference(uri=dataset_image_uri),
|
|
4983
|
+
)
|
|
4938
4984
|
existing_entry = next(
|
|
4939
4985
|
(
|
|
4940
4986
|
existing
|
|
@@ -4946,13 +4992,13 @@ async def _run_ask_tui(
|
|
|
4946
4992
|
already_rendered_attachment = (
|
|
4947
4993
|
existing_entry is not None
|
|
4948
4994
|
and existing_entry.kind == "image"
|
|
4949
|
-
and len(
|
|
4995
|
+
and len(renderable_attachment_references) > 0
|
|
4950
4996
|
)
|
|
4951
4997
|
if already_rendered_attachment:
|
|
4952
4998
|
self._rendered_session_message_ids.add(message.message_id)
|
|
4953
4999
|
continue
|
|
4954
5000
|
if (
|
|
4955
|
-
len(
|
|
5001
|
+
len(renderable_attachment_references) > 0
|
|
4956
5002
|
and message.message_id
|
|
4957
5003
|
not in self._pending_session_image_message_ids
|
|
4958
5004
|
):
|
|
@@ -4960,9 +5006,9 @@ async def _run_ask_tui(
|
|
|
4960
5006
|
task = asyncio.create_task(
|
|
4961
5007
|
self._hydrate_session_image_entry(
|
|
4962
5008
|
message=message,
|
|
4963
|
-
uri=
|
|
4964
|
-
if len(
|
|
4965
|
-
else
|
|
5009
|
+
uri=renderable_attachment_references
|
|
5010
|
+
if len(renderable_attachment_references) > 1
|
|
5011
|
+
else renderable_attachment_references[0],
|
|
4966
5012
|
)
|
|
4967
5013
|
)
|
|
4968
5014
|
task.add_done_callback(_consume_task_exception)
|
|
@@ -1481,6 +1481,26 @@ def test_agent_message_content_text_renders_non_image_attachment_as_filename() -
|
|
|
1481
1481
|
assert ask_module._agent_message_content_text(content) == "[report.pdf]"
|
|
1482
1482
|
|
|
1483
1483
|
|
|
1484
|
+
def test_conversation_message_preserves_pdf_attachment_name_for_preview() -> None:
|
|
1485
|
+
pdf_uri = _pdf_data_uri()
|
|
1486
|
+
message = StartThread(
|
|
1487
|
+
type=AGENT_MESSAGE_THREAD_START,
|
|
1488
|
+
content=[
|
|
1489
|
+
AgentFileContent(type="file", url=pdf_uri, name="optimus.pdf"),
|
|
1490
|
+
],
|
|
1491
|
+
)
|
|
1492
|
+
|
|
1493
|
+
rendered = ask_module._ask_conversation_message_from_agent_message(
|
|
1494
|
+
message,
|
|
1495
|
+
local_participant_name=None,
|
|
1496
|
+
)
|
|
1497
|
+
|
|
1498
|
+
assert rendered is not None
|
|
1499
|
+
assert rendered.text == "[optimus.pdf]"
|
|
1500
|
+
assert rendered.attachment_uris == (pdf_uri,)
|
|
1501
|
+
assert rendered.attachment_references[0].name == "optimus.pdf"
|
|
1502
|
+
|
|
1503
|
+
|
|
1484
1504
|
def test_agent_message_content_text_omits_image_attachment_ascii() -> None:
|
|
1485
1505
|
content = [
|
|
1486
1506
|
AgentFileContent(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.43.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshagent-cli
|
|
3
|
-
Version: 0.43.
|
|
3
|
+
Version: 0.43.3
|
|
4
4
|
Summary: CLI for Meshagent
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Documentation, https://docs.meshagent.com
|
|
@@ -22,8 +22,8 @@ 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.43.
|
|
26
|
-
Requires-Dist: meshagent-codex==0.43.
|
|
25
|
+
Requires-Dist: meshagent-llm-proxy==0.43.3
|
|
26
|
+
Requires-Dist: meshagent-codex==0.43.3
|
|
27
27
|
Requires-Dist: rich~=14.3.0
|
|
28
28
|
Requires-Dist: sounddevice~=0.5
|
|
29
29
|
Requires-Dist: textual<9.0,>=8.2.3
|
|
@@ -32,23 +32,23 @@ Requires-Dist: prompt-toolkit~=3.0.52
|
|
|
32
32
|
Requires-Dist: ascii-magic~=2.3
|
|
33
33
|
Requires-Dist: pillow~=11.3.0
|
|
34
34
|
Provides-Extra: all
|
|
35
|
-
Requires-Dist: meshagent-agents[all]==0.43.
|
|
36
|
-
Requires-Dist: meshagent-api[all]==0.43.
|
|
37
|
-
Requires-Dist: meshagent-commoncrawl==0.43.
|
|
38
|
-
Requires-Dist: meshagent-scrapy==0.43.
|
|
39
|
-
Requires-Dist: meshagent-computers==0.43.
|
|
40
|
-
Requires-Dist: meshagent-openai==0.43.
|
|
41
|
-
Requires-Dist: meshagent-anthropic==0.43.
|
|
42
|
-
Requires-Dist: meshagent-otel==0.43.
|
|
43
|
-
Requires-Dist: meshagent-mcp==0.43.
|
|
44
|
-
Requires-Dist: meshagent-tools==0.43.
|
|
35
|
+
Requires-Dist: meshagent-agents[all]==0.43.3; extra == "all"
|
|
36
|
+
Requires-Dist: meshagent-api[all]==0.43.3; extra == "all"
|
|
37
|
+
Requires-Dist: meshagent-commoncrawl==0.43.3; extra == "all"
|
|
38
|
+
Requires-Dist: meshagent-scrapy==0.43.3; extra == "all"
|
|
39
|
+
Requires-Dist: meshagent-computers==0.43.3; extra == "all"
|
|
40
|
+
Requires-Dist: meshagent-openai==0.43.3; extra == "all"
|
|
41
|
+
Requires-Dist: meshagent-anthropic==0.43.3; extra == "all"
|
|
42
|
+
Requires-Dist: meshagent-otel==0.43.3; extra == "all"
|
|
43
|
+
Requires-Dist: meshagent-mcp==0.43.3; extra == "all"
|
|
44
|
+
Requires-Dist: meshagent-tools==0.43.3; extra == "all"
|
|
45
45
|
Requires-Dist: supabase-auth~=2.28.0; extra == "all"
|
|
46
46
|
Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
|
|
47
47
|
Provides-Extra: mcp-service
|
|
48
|
-
Requires-Dist: meshagent-agents[all]==0.43.
|
|
49
|
-
Requires-Dist: meshagent-api==0.43.
|
|
50
|
-
Requires-Dist: meshagent-mcp==0.43.
|
|
51
|
-
Requires-Dist: meshagent-tools==0.43.
|
|
48
|
+
Requires-Dist: meshagent-agents[all]==0.43.3; extra == "mcp-service"
|
|
49
|
+
Requires-Dist: meshagent-api==0.43.3; extra == "mcp-service"
|
|
50
|
+
Requires-Dist: meshagent-mcp==0.43.3; extra == "mcp-service"
|
|
51
|
+
Requires-Dist: meshagent-tools==0.43.3; extra == "mcp-service"
|
|
52
52
|
Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
|
|
53
53
|
Dynamic: license-file
|
|
54
54
|
|
|
@@ -11,8 +11,8 @@ 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.43.
|
|
15
|
-
meshagent-codex==0.43.
|
|
14
|
+
meshagent-llm-proxy==0.43.3
|
|
15
|
+
meshagent-codex==0.43.3
|
|
16
16
|
rich~=14.3.0
|
|
17
17
|
sounddevice~=0.5
|
|
18
18
|
textual<9.0,>=8.2.3
|
|
@@ -22,22 +22,22 @@ ascii-magic~=2.3
|
|
|
22
22
|
pillow~=11.3.0
|
|
23
23
|
|
|
24
24
|
[all]
|
|
25
|
-
meshagent-agents[all]==0.43.
|
|
26
|
-
meshagent-api[all]==0.43.
|
|
27
|
-
meshagent-commoncrawl==0.43.
|
|
28
|
-
meshagent-scrapy==0.43.
|
|
29
|
-
meshagent-computers==0.43.
|
|
30
|
-
meshagent-openai==0.43.
|
|
31
|
-
meshagent-anthropic==0.43.
|
|
32
|
-
meshagent-otel==0.43.
|
|
33
|
-
meshagent-mcp==0.43.
|
|
34
|
-
meshagent-tools==0.43.
|
|
25
|
+
meshagent-agents[all]==0.43.3
|
|
26
|
+
meshagent-api[all]==0.43.3
|
|
27
|
+
meshagent-commoncrawl==0.43.3
|
|
28
|
+
meshagent-scrapy==0.43.3
|
|
29
|
+
meshagent-computers==0.43.3
|
|
30
|
+
meshagent-openai==0.43.3
|
|
31
|
+
meshagent-anthropic==0.43.3
|
|
32
|
+
meshagent-otel==0.43.3
|
|
33
|
+
meshagent-mcp==0.43.3
|
|
34
|
+
meshagent-tools==0.43.3
|
|
35
35
|
supabase-auth~=2.28.0
|
|
36
36
|
prompt-toolkit~=3.0.52
|
|
37
37
|
|
|
38
38
|
[mcp-service]
|
|
39
|
-
meshagent-agents[all]==0.43.
|
|
40
|
-
meshagent-api==0.43.
|
|
41
|
-
meshagent-mcp==0.43.
|
|
42
|
-
meshagent-tools==0.43.
|
|
39
|
+
meshagent-agents[all]==0.43.3
|
|
40
|
+
meshagent-api==0.43.3
|
|
41
|
+
meshagent-mcp==0.43.3
|
|
42
|
+
meshagent-tools==0.43.3
|
|
43
43
|
supabase-auth~=2.28.0
|
|
@@ -22,8 +22,8 @@ dependencies = [
|
|
|
22
22
|
"xlsxwriter~=3.2",
|
|
23
23
|
"pathspec>=1.0.3,<2",
|
|
24
24
|
"zstandard~=0.25.0",
|
|
25
|
-
"meshagent-llm-proxy==0.43.
|
|
26
|
-
"meshagent-codex==0.43.
|
|
25
|
+
"meshagent-llm-proxy==0.43.3",
|
|
26
|
+
"meshagent-codex==0.43.3",
|
|
27
27
|
"rich~=14.3.0",
|
|
28
28
|
"sounddevice~=0.5",
|
|
29
29
|
"textual>=8.2.3,<9.0",
|
|
@@ -38,25 +38,25 @@ dynamic = ["version", "readme"]
|
|
|
38
38
|
[project.optional-dependencies]
|
|
39
39
|
|
|
40
40
|
all = [
|
|
41
|
-
"meshagent-agents[all]==0.43.
|
|
42
|
-
"meshagent-api[all]==0.43.
|
|
43
|
-
"meshagent-commoncrawl==0.43.
|
|
44
|
-
"meshagent-scrapy==0.43.
|
|
45
|
-
"meshagent-computers==0.43.
|
|
46
|
-
"meshagent-openai==0.43.
|
|
47
|
-
"meshagent-anthropic==0.43.
|
|
48
|
-
"meshagent-otel==0.43.
|
|
49
|
-
"meshagent-mcp==0.43.
|
|
50
|
-
"meshagent-tools==0.43.
|
|
41
|
+
"meshagent-agents[all]==0.43.3",
|
|
42
|
+
"meshagent-api[all]==0.43.3",
|
|
43
|
+
"meshagent-commoncrawl==0.43.3",
|
|
44
|
+
"meshagent-scrapy==0.43.3",
|
|
45
|
+
"meshagent-computers==0.43.3",
|
|
46
|
+
"meshagent-openai==0.43.3",
|
|
47
|
+
"meshagent-anthropic==0.43.3",
|
|
48
|
+
"meshagent-otel==0.43.3",
|
|
49
|
+
"meshagent-mcp==0.43.3",
|
|
50
|
+
"meshagent-tools==0.43.3",
|
|
51
51
|
"supabase-auth~=2.28.0",
|
|
52
52
|
"prompt-toolkit~=3.0.52"
|
|
53
53
|
]
|
|
54
54
|
|
|
55
55
|
mcp-service = [
|
|
56
|
-
"meshagent-agents[all]==0.43.
|
|
57
|
-
"meshagent-api==0.43.
|
|
58
|
-
"meshagent-mcp==0.43.
|
|
59
|
-
"meshagent-tools==0.43.
|
|
56
|
+
"meshagent-agents[all]==0.43.3",
|
|
57
|
+
"meshagent-api==0.43.3",
|
|
58
|
+
"meshagent-mcp==0.43.3",
|
|
59
|
+
"meshagent-tools==0.43.3",
|
|
60
60
|
"supabase-auth~=2.28.0"
|
|
61
61
|
]
|
|
62
62
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.43.1"
|
|
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
|
{meshagent_cli-0.43.1 → meshagent_cli-0.43.3}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|