meshagent-cli 0.44.11__tar.gz → 0.44.12__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.
Files changed (150) hide show
  1. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/PKG-INFO +17 -17
  2. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agent.py +1 -0
  3. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/chatbot.py +2 -2
  4. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/cli_mcp.py +4 -4
  5. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_project_templates/python/backend-agent/server.py +2 -2
  6. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_project_templates/python/webserver/server.py +2 -2
  7. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_test.py +2 -2
  8. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/messaging.py +14 -2
  9. meshagent_cli-0.44.12/meshagent/cli/messaging_test.py +36 -0
  10. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/process.py +2 -2
  11. meshagent_cli-0.44.12/meshagent/cli/sessions.py +663 -0
  12. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/sessions_test.py +275 -0
  13. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/test.py +2 -2
  14. meshagent_cli-0.44.12/meshagent/cli/version.py +1 -0
  15. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/PKG-INFO +17 -17
  16. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/SOURCES.txt +1 -0
  17. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/requires.txt +16 -16
  18. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/pyproject.toml +16 -16
  19. meshagent_cli-0.44.11/meshagent/cli/sessions.py +0 -349
  20. meshagent_cli-0.44.11/meshagent/cli/version.py +0 -1
  21. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/LICENSE +0 -0
  22. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/README.md +0 -0
  23. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/__init__.py +0 -0
  24. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/_filedrop.py +0 -0
  25. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agent_cli_options_test.py +0 -0
  26. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agent_package_cli.py +0 -0
  27. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agent_package_cli_test.py +0 -0
  28. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agents.py +0 -0
  29. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/agents_test.py +0 -0
  30. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/api_keys.py +0 -0
  31. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/api_keys_test.py +0 -0
  32. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/ask.py +0 -0
  33. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/ask_test.py +0 -0
  34. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/async_typer.py +0 -0
  35. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/async_typer_test.py +0 -0
  36. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/auth.py +0 -0
  37. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/auth_async.py +0 -0
  38. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/auth_async_test.py +0 -0
  39. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/auth_test.py +0 -0
  40. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/call.py +0 -0
  41. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/cli.py +0 -0
  42. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/cli_secrets.py +0 -0
  43. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/cli_test.py +0 -0
  44. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/common_options.py +0 -0
  45. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/config.py +0 -0
  46. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/config_test.py +0 -0
  47. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/containers.py +0 -0
  48. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/containers_test.py +0 -0
  49. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create.py +0 -0
  50. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_project_templates/__init__.py +0 -0
  51. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_project_templates/python/contact-form/server.py +0 -0
  52. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/create_project_templates/python/task-queue-dashboard/server.py +0 -0
  53. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/dataset.py +0 -0
  54. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/dataset_test.py +0 -0
  55. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/developer.py +0 -0
  56. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/developer_test.py +0 -0
  57. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/doctor.py +0 -0
  58. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/doctor_dockerfiles/__init__.py +0 -0
  59. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/doctor_templates/__init__.py +0 -0
  60. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/doctor_test.py +0 -0
  61. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/feeds.py +0 -0
  62. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/helper.py +0 -0
  63. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/helper_test.py +0 -0
  64. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/helpers.py +0 -0
  65. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/host.py +0 -0
  66. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/image.py +0 -0
  67. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/image_test.py +0 -0
  68. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/launch.py +0 -0
  69. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/launch_test.py +0 -0
  70. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/llm.py +0 -0
  71. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/llm_test.py +0 -0
  72. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/local_settings.py +0 -0
  73. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/local_settings_test.py +0 -0
  74. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/mailbot.py +0 -0
  75. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/mailbot_test.py +0 -0
  76. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/mailboxes.py +0 -0
  77. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/meeting_transcriber.py +0 -0
  78. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/memory.py +0 -0
  79. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/memory_test.py +0 -0
  80. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/meshagent_images.py +0 -0
  81. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/meshagent_images_test.py +0 -0
  82. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/multi.py +0 -0
  83. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/oauth2.py +0 -0
  84. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/oauth2_test.py +0 -0
  85. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/oci_archive.py +0 -0
  86. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/oci_archive_test.py +0 -0
  87. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/participant_token.py +0 -0
  88. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/port.py +0 -0
  89. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/port_test.py +0 -0
  90. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/preamble_rules.py +0 -0
  91. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/preamble_rules_test.py +0 -0
  92. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/process_live_test.py +0 -0
  93. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/process_test.py +0 -0
  94. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/projects.py +0 -0
  95. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/projects_test.py +0 -0
  96. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/queue.py +0 -0
  97. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/queue_test.py +0 -0
  98. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/registry.py +0 -0
  99. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/registry_test.py +0 -0
  100. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/room.py +0 -0
  101. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/room_connect.py +0 -0
  102. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/room_connect_test.py +0 -0
  103. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/room_services.py +0 -0
  104. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/rooms.py +0 -0
  105. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/rooms_test.py +0 -0
  106. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/root_commands.py +0 -0
  107. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/root_commands_test.py +0 -0
  108. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/routes.py +0 -0
  109. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/scheduled_tasks.py +0 -0
  110. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/scheduled_tasks_test.py +0 -0
  111. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/services.py +0 -0
  112. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/services_test.py +0 -0
  113. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/storage.py +0 -0
  114. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/storage_test.py +0 -0
  115. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/subscriptions.py +0 -0
  116. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/sync.py +0 -0
  117. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/sync_test.py +0 -0
  118. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/task_runner.py +0 -0
  119. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/task_runner_test.py +0 -0
  120. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/testing.py +0 -0
  121. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/thread_inspect.py +0 -0
  122. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/thread_inspect_test.py +0 -0
  123. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/thread_sidebar.py +0 -0
  124. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tool_call_summary.py +0 -0
  125. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tool_call_summary_test.py +0 -0
  126. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tool_integrations.py +0 -0
  127. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tool_integrations_test.py +0 -0
  128. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/__init__.py +0 -0
  129. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/auth_switch.py +0 -0
  130. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/auth_switch_test.py +0 -0
  131. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/create.py +0 -0
  132. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/deploy_room.py +0 -0
  133. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/deploy_room_test.py +0 -0
  134. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/project_activate.py +0 -0
  135. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/project_activate_test.py +0 -0
  136. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/setup.py +0 -0
  137. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/setup_splash_frames.py +0 -0
  138. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/tui/setup_test.py +0 -0
  139. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/version_check.py +0 -0
  140. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/version_check_test.py +0 -0
  141. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/voicebot.py +0 -0
  142. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/webhook.py +0 -0
  143. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/webserver.py +0 -0
  144. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/webserver_test.py +0 -0
  145. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/worker.py +0 -0
  146. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent/cli/worker_test.py +0 -0
  147. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/dependency_links.txt +0 -0
  148. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/entry_points.txt +0 -0
  149. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/meshagent_cli.egg-info/top_level.txt +0 -0
  150. {meshagent_cli-0.44.11 → meshagent_cli-0.44.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshagent-cli
3
- Version: 0.44.11
3
+ Version: 0.44.12
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.44.11
26
- Requires-Dist: meshagent-codex==0.44.11
25
+ Requires-Dist: meshagent-llm-proxy==0.44.12
26
+ Requires-Dist: meshagent-codex==0.44.12
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.44.11; extra == "all"
36
- Requires-Dist: meshagent-api[all]==0.44.11; extra == "all"
37
- Requires-Dist: meshagent-commoncrawl==0.44.11; extra == "all"
38
- Requires-Dist: meshagent-scrapy==0.44.11; extra == "all"
39
- Requires-Dist: meshagent-computers==0.44.11; extra == "all"
40
- Requires-Dist: meshagent-openai==0.44.11; extra == "all"
41
- Requires-Dist: meshagent-anthropic==0.44.11; extra == "all"
42
- Requires-Dist: meshagent-otel==0.44.11; extra == "all"
43
- Requires-Dist: meshagent-mcp==0.44.11; extra == "all"
44
- Requires-Dist: meshagent-tools==0.44.11; extra == "all"
35
+ Requires-Dist: meshagent-agents[all]==0.44.12; extra == "all"
36
+ Requires-Dist: meshagent-api[all]==0.44.12; extra == "all"
37
+ Requires-Dist: meshagent-commoncrawl==0.44.12; extra == "all"
38
+ Requires-Dist: meshagent-scrapy==0.44.12; extra == "all"
39
+ Requires-Dist: meshagent-computers==0.44.12; extra == "all"
40
+ Requires-Dist: meshagent-openai==0.44.12; extra == "all"
41
+ Requires-Dist: meshagent-anthropic==0.44.12; extra == "all"
42
+ Requires-Dist: meshagent-otel==0.44.12; extra == "all"
43
+ Requires-Dist: meshagent-mcp==0.44.12; extra == "all"
44
+ Requires-Dist: meshagent-tools==0.44.12; 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.44.11; extra == "mcp-service"
49
- Requires-Dist: meshagent-api==0.44.11; extra == "mcp-service"
50
- Requires-Dist: meshagent-mcp==0.44.11; extra == "mcp-service"
51
- Requires-Dist: meshagent-tools==0.44.11; extra == "mcp-service"
48
+ Requires-Dist: meshagent-agents[all]==0.44.12; extra == "mcp-service"
49
+ Requires-Dist: meshagent-api==0.44.12; extra == "mcp-service"
50
+ Requires-Dist: meshagent-mcp==0.44.12; extra == "mcp-service"
51
+ Requires-Dist: meshagent-tools==0.44.12; extra == "mcp-service"
52
52
  Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
53
53
  Dynamic: license-file
54
54
 
@@ -157,6 +157,7 @@ async def list_toolkits_command(
157
157
  "name": tk.name,
158
158
  "title": tk.title,
159
159
  "description": tk.description,
160
+ "annotations": tk.annotations,
160
161
  "tools": [
161
162
  {
162
163
  "name": tool.name,
@@ -2019,7 +2019,7 @@ def build_process_agent(
2019
2019
  from meshagent.agents.messages import TurnStart, TurnSteer
2020
2020
  from meshagent.agents.process import AgentSupervisor, LLMAgentProcess
2021
2021
  from meshagent.tools import RoomToolContext, Toolkit
2022
- from meshagent.tools.hosting import _RemoteToolkitWrapper, _start_hosted_toolkit
2022
+ from meshagent.tools.hosting import _RemoteToolkitWrapper, start_hosted_toolkit
2023
2023
 
2024
2024
  requirements = []
2025
2025
  toolkits = []
@@ -2284,7 +2284,7 @@ def build_process_agent(
2284
2284
 
2285
2285
  self._exposed_toolkits = await self.get_exposed_toolkits()
2286
2286
  for toolkit in self._exposed_toolkits:
2287
- hosted_toolkit = await _start_hosted_toolkit(
2287
+ hosted_toolkit = await start_hosted_toolkit(
2288
2288
  room=room,
2289
2289
  toolkit=toolkit,
2290
2290
  )
@@ -13,7 +13,7 @@ from meshagent.cli import async_typer
13
13
  from meshagent.cli.helper import resolve_project_id, resolve_room, resolve_key
14
14
 
15
15
  from meshagent.tools import Toolkit
16
- from meshagent.tools.hosting import _start_hosted_toolkit
16
+ from meshagent.tools.hosting import start_hosted_toolkit
17
17
 
18
18
 
19
19
  from meshagent.api.services import ServiceHost
@@ -203,7 +203,7 @@ async def sse(
203
203
  description=toolkit.description,
204
204
  )
205
205
 
206
- hosted_toolkit = await _start_hosted_toolkit(
206
+ hosted_toolkit = await start_hosted_toolkit(
207
207
  room=client,
208
208
  toolkit=toolkit,
209
209
  )
@@ -320,7 +320,7 @@ async def streamable_http(
320
320
  description=toolkit.description,
321
321
  )
322
322
 
323
- hosted_toolkit = await _start_hosted_toolkit(
323
+ hosted_toolkit = await start_hosted_toolkit(
324
324
  room=client,
325
325
  toolkit=toolkit,
326
326
  )
@@ -422,7 +422,7 @@ async def stdio(
422
422
  description=toolkit.description,
423
423
  )
424
424
 
425
- hosted_toolkit = await _start_hosted_toolkit(
425
+ hosted_toolkit = await start_hosted_toolkit(
426
426
  room=client,
427
427
  toolkit=toolkit,
428
428
  )
@@ -9,7 +9,7 @@ import aiofiles
9
9
  import aiofiles.os
10
10
  from meshagent.api import RoomClient, WebSocketClientProtocol, websocket_room_url
11
11
  from meshagent.tools import FunctionTool, Toolkit, ToolContext
12
- from meshagent.tools.hosting import _start_hosted_toolkit
12
+ from meshagent.tools.hosting import start_hosted_toolkit
13
13
 
14
14
 
15
15
  PROOF_PATH = Path(__file__).with_name("agent-proof.json")
@@ -108,7 +108,7 @@ async def main() -> None:
108
108
 
109
109
  async def run_agent_toolkit_proof(room: RoomClient) -> None:
110
110
  probe = os.environ.get("MESHAGENT_CREATE_DEV_PROBE")
111
- hosted_toolkit = await _start_hosted_toolkit(
111
+ hosted_toolkit = await start_hosted_toolkit(
112
112
  room=room,
113
113
  toolkit=PythonAgentToolkit(),
114
114
  )
@@ -12,7 +12,7 @@ import aiofiles.os
12
12
  from aiohttp import web
13
13
  from meshagent.api import RoomClient, WebSocketClientProtocol, websocket_room_url
14
14
  from meshagent.tools import FunctionTool, Toolkit, ToolContext
15
- from meshagent.tools.hosting import _start_hosted_toolkit
15
+ from meshagent.tools.hosting import start_hosted_toolkit
16
16
 
17
17
 
18
18
  CONTENT_PATH = Path(__file__).with_name("dev-content.json")
@@ -189,7 +189,7 @@ async def run_dev_content_toolkit() -> None:
189
189
  token=token,
190
190
  )
191
191
  async with RoomClient(protocol_factory=protocol.create_factory()) as room:
192
- hosted_toolkit = await _start_hosted_toolkit(
192
+ hosted_toolkit = await start_hosted_toolkit(
193
193
  room=room,
194
194
  toolkit=PythonContentToolkit(),
195
195
  )
@@ -335,7 +335,7 @@ def test_init_creates_python_backend_agent_by_default_in_non_tty(tmp_path) -> No
335
335
  assert 'name="ping"' in server_py
336
336
  assert 'name="status"' in server_py
337
337
  assert 'name="echo"' in server_py
338
- assert "_start_hosted_toolkit" in server_py
338
+ assert "start_hosted_toolkit" in server_py
339
339
  assert "agent-proof.json" in server_py
340
340
  assert "ThreadingHTTPServer" not in server_py
341
341
  _assert_runtime_image_mount_deploy_yaml(
@@ -501,7 +501,7 @@ def test_init_creates_python_webserver_non_interactively(tmp_path) -> None:
501
501
  assert 'name="create"' in server_py
502
502
  assert 'name="update"' in server_py
503
503
  assert 'name="search"' in server_py
504
- assert "_start_hosted_toolkit" in server_py
504
+ assert "start_hosted_toolkit" in server_py
505
505
  assert "dev-content.json" in server_py
506
506
  assert "MESHAGENT_CREATE_DEV_PROBE" in server_py
507
507
  assert "room.agents.invoke_tool" in server_py
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  import typer
2
3
  from rich import print
3
4
  from typing import Annotated
@@ -19,6 +20,17 @@ from meshagent.cli.helper import (
19
20
  app = async_typer.AsyncTyper(help="Send and receive messages in a room")
20
21
 
21
22
 
23
+ async def wait_for_messaging_participants(client: RoomClient, *, timeout: float = 3.0):
24
+ deadline = asyncio.get_running_loop().time() + timeout
25
+ while True:
26
+ participants = client.messaging.get_participants()
27
+ if participants:
28
+ return participants
29
+ if asyncio.get_running_loop().time() >= deadline:
30
+ return participants
31
+ await asyncio.sleep(0.25)
32
+
33
+
22
34
  @app.async_command("list", help="List messaging-enabled participants")
23
35
  async def messaging_list_participants_command(
24
36
  *,
@@ -47,7 +59,7 @@ async def messaging_list_participants_command(
47
59
  # Must enable before we can see who else is enabled
48
60
  await client.messaging.enable()
49
61
 
50
- participants = client.messaging.get_participants()
62
+ participants = await wait_for_messaging_participants(client)
51
63
  output = []
52
64
  for p in participants:
53
65
  output.append({"id": p.id, "role": p.role, "attributes": p._attributes})
@@ -94,7 +106,7 @@ async def messaging_send_command(
94
106
 
95
107
  # Find the participant we want to message
96
108
  participant = None
97
- for p in client.messaging.get_participants():
109
+ for p in await wait_for_messaging_participants(client):
98
110
  if p.id == to_participant_id:
99
111
  participant = p
100
112
  break
@@ -0,0 +1,36 @@
1
+ import pytest
2
+
3
+ from meshagent.cli.messaging import wait_for_messaging_participants
4
+
5
+
6
+ class _FakeMessaging:
7
+ def __init__(self, snapshots):
8
+ self.snapshots = list(snapshots)
9
+
10
+ def get_participants(self):
11
+ if not self.snapshots:
12
+ return []
13
+ return self.snapshots.pop(0)
14
+
15
+
16
+ class _FakeClient:
17
+ def __init__(self, snapshots):
18
+ self.messaging = _FakeMessaging(snapshots)
19
+
20
+
21
+ @pytest.mark.asyncio
22
+ async def test_wait_for_messaging_participants_waits_for_discovery(monkeypatch):
23
+ sleep_calls = []
24
+
25
+ async def fake_sleep(delay):
26
+ sleep_calls.append(delay)
27
+
28
+ monkeypatch.setattr("meshagent.cli.messaging.asyncio.sleep", fake_sleep)
29
+
30
+ participant = object()
31
+ client = _FakeClient([[], [participant]])
32
+
33
+ result = await wait_for_messaging_participants(client, timeout=1)
34
+
35
+ assert result == [participant]
36
+ assert sleep_calls == [0.25]
@@ -5409,7 +5409,7 @@ def build_process_agent(
5409
5409
  )
5410
5410
  from meshagent.codex.supervisor import CodexBackend
5411
5411
  from meshagent.tools import RoomToolContext, Toolkit
5412
- from meshagent.tools.hosting import _RemoteToolkitWrapper, _start_hosted_toolkit
5412
+ from meshagent.tools.hosting import _RemoteToolkitWrapper, start_hosted_toolkit
5413
5413
 
5414
5414
  requirements = []
5415
5415
  toolkits = []
@@ -6136,7 +6136,7 @@ def build_process_agent(
6136
6136
  for toolkit in self._exposed_toolkits:
6137
6137
  if room is None:
6138
6138
  continue
6139
- hosted_toolkit = await _start_hosted_toolkit(
6139
+ hosted_toolkit = await start_hosted_toolkit(
6140
6140
  room=room,
6141
6141
  toolkit=toolkit,
6142
6142
  )