meshagent-cli 0.52.3__tar.gz → 0.53.0__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 (184) hide show
  1. meshagent_cli-0.53.0/PKG-INFO +84 -0
  2. meshagent_cli-0.53.0/README.md +30 -0
  3. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/ask.py +1 -1
  4. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/chatbot.py +5 -5
  5. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/cli.py +5 -0
  6. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/cli_test.py +3 -0
  7. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/iam.py +1 -0
  8. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/iam_test.py +6 -3
  9. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/mailbot.py +4 -4
  10. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/process.py +9 -9
  11. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/process_test.py +3 -3
  12. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/root_commands_test.py +4 -4
  13. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/task_runner.py +5 -5
  14. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tool_integrations.py +1 -1
  15. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tool_integrations_test.py +19 -19
  16. meshagent_cli-0.53.0/meshagent/cli/users.py +228 -0
  17. meshagent_cli-0.53.0/meshagent/cli/users_test.py +321 -0
  18. meshagent_cli-0.53.0/meshagent/cli/version.py +1 -0
  19. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/worker.py +4 -4
  20. meshagent_cli-0.53.0/meshagent_cli.egg-info/PKG-INFO +84 -0
  21. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent_cli.egg-info/SOURCES.txt +2 -0
  22. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent_cli.egg-info/requires.txt +16 -16
  23. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/pyproject.toml +16 -16
  24. meshagent_cli-0.52.3/PKG-INFO +0 -69
  25. meshagent_cli-0.52.3/README.md +0 -15
  26. meshagent_cli-0.52.3/meshagent/cli/version.py +0 -1
  27. meshagent_cli-0.52.3/meshagent_cli.egg-info/PKG-INFO +0 -69
  28. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/LICENSE +0 -0
  29. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/__init__.py +0 -0
  30. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/_filedrop.py +0 -0
  31. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agent.py +0 -0
  32. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agent_cli_options_test.py +0 -0
  33. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agent_package_cli.py +0 -0
  34. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agent_package_cli_test.py +0 -0
  35. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agents.py +0 -0
  36. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/agents_test.py +0 -0
  37. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/ask_test.py +0 -0
  38. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/async_typer.py +0 -0
  39. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/async_typer_test.py +0 -0
  40. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/auth.py +0 -0
  41. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/auth_async.py +0 -0
  42. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/auth_async_test.py +0 -0
  43. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/auth_test.py +0 -0
  44. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/call.py +0 -0
  45. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/cli_mcp.py +0 -0
  46. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/common_options.py +0 -0
  47. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/config.py +0 -0
  48. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/config_test.py +0 -0
  49. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/containers.py +0 -0
  50. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/containers_test.py +0 -0
  51. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create.py +0 -0
  52. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/__init__.py +0 -0
  53. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/backend-agent/server.py +0 -0
  54. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/contact-form/server.py +0 -0
  55. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/slack-channel/channel.py +0 -0
  56. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/slack-channel/scripts/configure-slack.py +0 -0
  57. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/slack-channel/scripts/setup-slack-dev-route.py +0 -0
  58. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/slack-channel/server.py +0 -0
  59. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/task-queue-dashboard/server.py +0 -0
  60. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/telegram-channel/channel.py +0 -0
  61. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/telegram-channel/scripts/configure-telegram.py +0 -0
  62. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/telegram-channel/scripts/create-bot-token.py +0 -0
  63. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/telegram-channel/server.py +0 -0
  64. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/twilio-channel/channel.py +0 -0
  65. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/twilio-channel/server.py +0 -0
  66. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/webserver/server.py +0 -0
  67. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/whatsapp-channel/channel.py +0 -0
  68. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_project_templates/python/whatsapp-channel/server.py +0 -0
  69. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/create_test.py +0 -0
  70. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/custom_domains.py +0 -0
  71. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/custom_domains_test.py +0 -0
  72. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/dataset.py +0 -0
  73. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/dataset_test.py +0 -0
  74. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/developer.py +0 -0
  75. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/developer_test.py +0 -0
  76. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/doctor.py +0 -0
  77. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/doctor_dockerfiles/__init__.py +0 -0
  78. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/doctor_templates/__init__.py +0 -0
  79. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/doctor_test.py +0 -0
  80. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/feeds.py +0 -0
  81. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/feeds_test.py +0 -0
  82. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/helper.py +0 -0
  83. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/helper_test.py +0 -0
  84. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/helpers.py +0 -0
  85. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/host.py +0 -0
  86. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/image.py +0 -0
  87. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/image_test.py +0 -0
  88. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/launch.py +0 -0
  89. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/launch_test.py +0 -0
  90. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/llm.py +0 -0
  91. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/llm_test.py +0 -0
  92. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/local_settings.py +0 -0
  93. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/local_settings_test.py +0 -0
  94. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/mailbot_test.py +0 -0
  95. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/mailboxes.py +0 -0
  96. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/mailboxes_test.py +0 -0
  97. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/meeting_transcriber.py +0 -0
  98. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/memory.py +0 -0
  99. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/memory_test.py +0 -0
  100. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/meshagent_images.py +0 -0
  101. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/meshagent_images_test.py +0 -0
  102. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/messaging.py +0 -0
  103. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/messaging_test.py +0 -0
  104. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/mounts.py +0 -0
  105. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/multi.py +0 -0
  106. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/oauth_clients.py +0 -0
  107. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/oauth_clients_test.py +0 -0
  108. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/oci_archive.py +0 -0
  109. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/oci_archive_test.py +0 -0
  110. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/participant_token.py +0 -0
  111. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/port.py +0 -0
  112. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/port_test.py +0 -0
  113. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/preamble_rules.py +0 -0
  114. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/preamble_rules_test.py +0 -0
  115. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/process_live_test.py +0 -0
  116. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/projects.py +0 -0
  117. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/projects_test.py +0 -0
  118. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/queue.py +0 -0
  119. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/queue_test.py +0 -0
  120. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/registry.py +0 -0
  121. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/registry_test.py +0 -0
  122. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/room.py +0 -0
  123. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/room_connect.py +0 -0
  124. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/room_connect_test.py +0 -0
  125. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/room_services.py +0 -0
  126. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/room_services_test.py +0 -0
  127. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/rooms.py +0 -0
  128. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/rooms_test.py +0 -0
  129. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/root_commands.py +0 -0
  130. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/routes.py +0 -0
  131. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/routes_test.py +0 -0
  132. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sample_channel_http_test.py +0 -0
  133. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sample_channel_live_e2e_test.py +0 -0
  134. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/scheduled_tasks.py +0 -0
  135. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/scheduled_tasks_test.py +0 -0
  136. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/secrets.py +0 -0
  137. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/secrets_test.py +0 -0
  138. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/service_accounts.py +0 -0
  139. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/service_accounts_test.py +0 -0
  140. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/services.py +0 -0
  141. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/services_test.py +0 -0
  142. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sessions.py +0 -0
  143. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sessions_test.py +0 -0
  144. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sqlite.py +0 -0
  145. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sqlite_recovery.py +0 -0
  146. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sqlite_recovery_test.py +0 -0
  147. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sqlite_test.py +0 -0
  148. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sqlite_transfer_test.py +0 -0
  149. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/storage.py +0 -0
  150. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/storage_test.py +0 -0
  151. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/subscriptions.py +0 -0
  152. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sync.py +0 -0
  153. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/sync_test.py +0 -0
  154. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/task_runner_test.py +0 -0
  155. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/test.py +0 -0
  156. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/testing.py +0 -0
  157. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/thread_inspect.py +0 -0
  158. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/thread_inspect_test.py +0 -0
  159. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/thread_sidebar.py +0 -0
  160. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tool_call_summary.py +0 -0
  161. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tool_call_summary_test.py +0 -0
  162. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/__init__.py +0 -0
  163. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/auth_switch.py +0 -0
  164. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/auth_switch_test.py +0 -0
  165. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/create.py +0 -0
  166. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/deploy_room.py +0 -0
  167. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/deploy_room_test.py +0 -0
  168. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/project_activate.py +0 -0
  169. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/project_activate_test.py +0 -0
  170. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/setup.py +0 -0
  171. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/setup_splash_frames.py +0 -0
  172. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/tui/setup_test.py +0 -0
  173. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/version_check.py +0 -0
  174. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/version_check_test.py +0 -0
  175. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/voicebot.py +0 -0
  176. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/volumes.py +0 -0
  177. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/volumes_test.py +0 -0
  178. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/webserver.py +0 -0
  179. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/webserver_test.py +0 -0
  180. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent/cli/worker_test.py +0 -0
  181. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent_cli.egg-info/dependency_links.txt +0 -0
  182. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent_cli.egg-info/entry_points.txt +0 -0
  183. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/meshagent_cli.egg-info/top_level.txt +0 -0
  184. {meshagent_cli-0.52.3 → meshagent_cli-0.53.0}/setup.cfg +0 -0
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.4
2
+ Name: meshagent-cli
3
+ Version: 0.53.0
4
+ Summary: CLI for Meshagent
5
+ License-Expression: Apache-2.0
6
+ Project-URL: Documentation, https://docs.meshagent.com
7
+ Project-URL: Website, https://www.meshagent.com
8
+ Project-URL: Source, https://www.meshagent.com
9
+ Requires-Python: >=3.13
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: typer~=0.26.6
13
+ Requires-Dist: aiofiles~=24.1
14
+ Requires-Dist: fastmcp~=2.8
15
+ Requires-Dist: opentelemetry-distro~=0.59b0
16
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http~=1.33
17
+ Requires-Dist: art~=6.5
18
+ Requires-Dist: pyyaml~=6.0.2
19
+ Requires-Dist: pydantic-yaml~=1.5
20
+ Requires-Dist: pyarrow~=22.0.0
21
+ Requires-Dist: openpyxl~=3.1
22
+ Requires-Dist: xlsxwriter~=3.2
23
+ Requires-Dist: pathspec<2,>=1.0.3
24
+ Requires-Dist: zstandard~=0.25.0
25
+ Requires-Dist: meshagent-llm-proxy==0.53.0
26
+ Requires-Dist: meshagent-codex==0.53.0
27
+ Requires-Dist: rich~=14.3.0
28
+ Requires-Dist: sounddevice~=0.5
29
+ Requires-Dist: textual<9.0,>=8.2.3
30
+ Requires-Dist: textual-image[textual]~=0.12.0
31
+ Requires-Dist: prompt-toolkit~=3.0.52
32
+ Requires-Dist: ascii-magic~=2.3
33
+ Requires-Dist: pillow~=11.3.0
34
+ Provides-Extra: all
35
+ Requires-Dist: meshagent-agents[all]==0.53.0; extra == "all"
36
+ Requires-Dist: meshagent-api[all]==0.53.0; extra == "all"
37
+ Requires-Dist: meshagent-commoncrawl==0.53.0; extra == "all"
38
+ Requires-Dist: meshagent-scrapy==0.53.0; extra == "all"
39
+ Requires-Dist: meshagent-computers==0.53.0; extra == "all"
40
+ Requires-Dist: meshagent-openai==0.53.0; extra == "all"
41
+ Requires-Dist: meshagent-anthropic==0.53.0; extra == "all"
42
+ Requires-Dist: meshagent-otel==0.53.0; extra == "all"
43
+ Requires-Dist: meshagent-mcp==0.53.0; extra == "all"
44
+ Requires-Dist: meshagent-tools==0.53.0; extra == "all"
45
+ Requires-Dist: supabase-auth~=2.28.0; extra == "all"
46
+ Requires-Dist: prompt-toolkit~=3.0.52; extra == "all"
47
+ Provides-Extra: mcp-service
48
+ Requires-Dist: meshagent-agents[all]==0.53.0; extra == "mcp-service"
49
+ Requires-Dist: meshagent-api==0.53.0; extra == "mcp-service"
50
+ Requires-Dist: meshagent-mcp==0.53.0; extra == "mcp-service"
51
+ Requires-Dist: meshagent-tools==0.53.0; extra == "mcp-service"
52
+ Requires-Dist: supabase-auth~=2.28.0; extra == "mcp-service"
53
+ Dynamic: license-file
54
+
55
+ # [Meshagent](https://www.meshagent.com)
56
+
57
+ ## MeshAgent CLI
58
+
59
+ The ``meshagent.cli`` package installs everything you need to streamline room and agent management from your terminal. The CLI assembles submodules for authentication, projects, API keys, participant tokens, messaging, storage, agents, and more.
60
+ Check out the [CLI Quickstart](https://docs.meshagent.com/cli/getting_started) for more details.
61
+
62
+ ## User management
63
+
64
+ The Python and Rust CLIs support the same user commands:
65
+
66
+ ```bash
67
+ meshagent user list --project-id "$PROJECT_ID" --filter alice --count 100 -o json
68
+ meshagent user get "$USER_ID" -o json
69
+ meshagent user update me --metadata '{"timezone":"America/Los_Angeles"}'
70
+ meshagent user update "$USER_ID" --project-id "$PROJECT_ID" --annotations '{"team":"support"}'
71
+ ```
72
+
73
+ `list` follows pages up to `--count` and returns a continuation token in JSON output; pass it to `--continuation-token` to resume with the same project and filter. `get` and `update` default to your own profile (`me`). Updates preserve omitted fields. Supplied metadata and annotation objects replace their maps, and `{}` clears a map. Annotation values must be strings.
74
+
75
+ Editing another user or supplying annotations requires a project containing that user and the `user_profile_editor` role (inherited by project admins and owners), along with the required token scopes. See [IAM roles and permissions](https://docs.meshagent.com/project_admin/iam_roles_and_permissions#user-profile-permissions) for details.
76
+
77
+ ---
78
+ ### Learn more about MeshAgent on our website or check out the docs for additional examples!
79
+
80
+ **Website**: [www.meshagent.com](https://www.meshagent.com/)
81
+
82
+ **Documentation**: [docs.meshagent.com](https://docs.meshagent.com/)
83
+
84
+ ---
@@ -0,0 +1,30 @@
1
+ # [Meshagent](https://www.meshagent.com)
2
+
3
+ ## MeshAgent CLI
4
+
5
+ The ``meshagent.cli`` package installs everything you need to streamline room and agent management from your terminal. The CLI assembles submodules for authentication, projects, API keys, participant tokens, messaging, storage, agents, and more.
6
+ Check out the [CLI Quickstart](https://docs.meshagent.com/cli/getting_started) for more details.
7
+
8
+ ## User management
9
+
10
+ The Python and Rust CLIs support the same user commands:
11
+
12
+ ```bash
13
+ meshagent user list --project-id "$PROJECT_ID" --filter alice --count 100 -o json
14
+ meshagent user get "$USER_ID" -o json
15
+ meshagent user update me --metadata '{"timezone":"America/Los_Angeles"}'
16
+ meshagent user update "$USER_ID" --project-id "$PROJECT_ID" --annotations '{"team":"support"}'
17
+ ```
18
+
19
+ `list` follows pages up to `--count` and returns a continuation token in JSON output; pass it to `--continuation-token` to resume with the same project and filter. `get` and `update` default to your own profile (`me`). Updates preserve omitted fields. Supplied metadata and annotation objects replace their maps, and `{}` clears a map. Annotation values must be strings.
20
+
21
+ Editing another user or supplying annotations requires a project containing that user and the `user_profile_editor` role (inherited by project admins and owners), along with the required token scopes. See [IAM roles and permissions](https://docs.meshagent.com/project_admin/iam_roles_and_permissions#user-profile-permissions) for details.
22
+
23
+ ---
24
+ ### Learn more about MeshAgent on our website or check out the docs for additional examples!
25
+
26
+ **Website**: [www.meshagent.com](https://www.meshagent.com/)
27
+
28
+ **Documentation**: [docs.meshagent.com](https://docs.meshagent.com/)
29
+
30
+ ---
@@ -152,7 +152,7 @@ from meshagent.tools.storage import StorageToolLocalMount, StorageToolkit
152
152
 
153
153
  _MESHAGENT_PROJECT_ID_HEADER = "Meshagent-Project-Id"
154
154
  _MESHAGENT_TOKEN_ENV = "MESHAGENT_TOKEN"
155
- _DEFAULT_ASK_MODEL = "gpt-5.6-sol"
155
+ _DEFAULT_ASK_MODEL = "gpt-6.1-sol"
156
156
  _ASK_ACTIVE_STATUS_STATES = {"queued", "in_progress", "running", "pending"}
157
157
  _ASK_TERMINAL_STATUS_STATES = {
158
158
  "completed",
@@ -2861,7 +2861,7 @@ async def join(
2861
2861
  ] = [],
2862
2862
  model: Annotated[
2863
2863
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
2864
- ] = "gpt-5.6-sol",
2864
+ ] = "gpt-6.1-sol",
2865
2865
  image_generation: Annotated[
2866
2866
  Optional[str], typer.Option(..., help="Name of an image gen model")
2867
2867
  ] = None,
@@ -3270,7 +3270,7 @@ async def service(
3270
3270
  ] = [],
3271
3271
  model: Annotated[
3272
3272
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
3273
- ] = "gpt-5.6-sol",
3273
+ ] = "gpt-6.1-sol",
3274
3274
  image_generation: Annotated[
3275
3275
  Optional[str], typer.Option(..., help="Name of an image gen model")
3276
3276
  ] = None,
@@ -3641,7 +3641,7 @@ async def spec(
3641
3641
  ] = [],
3642
3642
  model: Annotated[
3643
3643
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
3644
- ] = "gpt-5.6-sol",
3644
+ ] = "gpt-6.1-sol",
3645
3645
  image_generation: Annotated[
3646
3646
  Optional[str], typer.Option(..., help="Name of an image gen model")
3647
3647
  ] = None,
@@ -4015,7 +4015,7 @@ async def deploy(
4015
4015
  ] = [],
4016
4016
  model: Annotated[
4017
4017
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
4018
- ] = "gpt-5.6-sol",
4018
+ ] = "gpt-6.1-sol",
4019
4019
  image_generation: Annotated[
4020
4020
  Optional[str], typer.Option(..., help="Name of an image gen model")
4021
4021
  ] = None,
@@ -6074,7 +6074,7 @@ async def run(
6074
6074
  ] = [],
6075
6075
  model: Annotated[
6076
6076
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
6077
- ] = "gpt-5.6-sol",
6077
+ ] = "gpt-6.1-sol",
6078
6078
  image_generation: Annotated[
6079
6079
  Optional[str], typer.Option(..., help="Name of an image gen model")
6080
6080
  ] = None,
@@ -108,6 +108,11 @@ app.add_lazy_command(
108
108
  module="meshagent.cli.iam",
109
109
  help="Manage IAM policies for project resources",
110
110
  )
111
+ app.add_lazy_command(
112
+ name="user",
113
+ module="meshagent.cli.users",
114
+ help="List project users and manage user profiles",
115
+ )
111
116
  app.add_lazy_command(
112
117
  name="config",
113
118
  module="meshagent.cli.config",
@@ -53,6 +53,7 @@ def test_root_help_lists_create_and_doctor_but_hides_legacy_command_namespaces()
53
53
  assert "│ create" in result.output
54
54
  assert "│ doctor" in result.output
55
55
  assert "│ iam" in result.output
56
+ assert "│ user" in result.output
56
57
  assert "│ service-account" in result.output
57
58
  assert "│ custom-domain" in result.output
58
59
  assert "│ init" not in result.output
@@ -78,6 +79,8 @@ def test_root_registers_create_and_doctor_as_visible_commands() -> None:
78
79
  assert registrations["create"].hidden is False
79
80
  assert registrations["iam"].module == "meshagent.cli.iam"
80
81
  assert registrations["iam"].hidden is False
82
+ assert registrations["user"].module == "meshagent.cli.users"
83
+ assert registrations["user"].hidden is False
81
84
  assert registrations["service-account"].module == "meshagent.cli.service_accounts"
82
85
  assert registrations["service-account"].hidden is False
83
86
  assert registrations["custom-domain"].module == "meshagent.cli.custom_domains"
@@ -90,6 +90,7 @@ def _parse_roles(values: list[str]) -> list[AccessRole]:
90
90
  "usage_reporter",
91
91
  "billing_manager",
92
92
  "group_manager",
93
+ "user_profile_editor",
93
94
  "viewer",
94
95
  "operator",
95
96
  "reader",
@@ -15,7 +15,10 @@ def test_iam_help_exposes_policy_grant_and_revoke_commands() -> None:
15
15
 
16
16
 
17
17
  @pytest.mark.asyncio
18
- async def test_iam_grant_calls_generic_policy_api(monkeypatch: pytest.MonkeyPatch):
18
+ @pytest.mark.parametrize("roles", [["developer", "list"], ["user_profile_editor"]])
19
+ async def test_iam_grant_calls_generic_policy_api(
20
+ monkeypatch: pytest.MonkeyPatch, roles
21
+ ):
19
22
  calls: list[dict[str, object]] = []
20
23
 
21
24
  class _FakeClient:
@@ -41,7 +44,7 @@ async def test_iam_grant_calls_generic_policy_api(monkeypatch: pytest.MonkeyPatc
41
44
  resource_id="resolved-project",
42
45
  subject_type="service_account",
43
46
  subject_id="service-account-1",
44
- role=["developer", "list"],
47
+ role=roles,
45
48
  invite_redirect_url=None,
46
49
  )
47
50
 
@@ -50,7 +53,7 @@ async def test_iam_grant_calls_generic_policy_api(monkeypatch: pytest.MonkeyPatc
50
53
  assert call["project_id"] == "resolved-project"
51
54
  assert call["resource_type"] == "project"
52
55
  assert call["resource_id"] == "resolved-project"
53
- assert call["roles"] == ["developer", "list"]
56
+ assert call["roles"] == roles
54
57
  assert call["subject"] == AccessSubject(
55
58
  type="service_account",
56
59
  id="service-account-1",
@@ -661,7 +661,7 @@ async def join(
661
661
  ] = [],
662
662
  model: Annotated[
663
663
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
664
- ] = "gpt-5.6-sol",
664
+ ] = "gpt-6.1-sol",
665
665
  require_shell: Annotated[
666
666
  Optional[bool],
667
667
  typer.Option("--shell", help="Enable function shell tool calling"),
@@ -978,7 +978,7 @@ async def service(
978
978
  ] = [],
979
979
  model: Annotated[
980
980
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
981
- ] = "gpt-5.6-sol",
981
+ ] = "gpt-6.1-sol",
982
982
  require_shell: Annotated[
983
983
  Optional[bool],
984
984
  typer.Option("--shell", help="Enable function shell tool calling"),
@@ -1272,7 +1272,7 @@ async def spec(
1272
1272
  ] = [],
1273
1273
  model: Annotated[
1274
1274
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
1275
- ] = "gpt-5.6-sol",
1275
+ ] = "gpt-6.1-sol",
1276
1276
  require_shell: Annotated[
1277
1277
  Optional[bool],
1278
1278
  typer.Option("--shell", help="Enable function shell tool calling"),
@@ -1577,7 +1577,7 @@ async def deploy(
1577
1577
  ] = [],
1578
1578
  model: Annotated[
1579
1579
  str, typer.Option(..., help="Name of the LLM model to use for the chatbot")
1580
- ] = "gpt-5.6-sol",
1580
+ ] = "gpt-6.1-sol",
1581
1581
  require_shell: Annotated[
1582
1582
  Optional[bool],
1583
1583
  typer.Option("--shell", help="Enable function shell tool calling"),
@@ -753,7 +753,7 @@ async def _list_codex_threads(
753
753
  await client.initialize()
754
754
  repository = CodexThreadStorageRepository(
755
755
  client=client,
756
- default_model=lambda: "gpt-5.6-sol",
756
+ default_model=lambda: "gpt-6.1-sol",
757
757
  )
758
758
  return await repository.list_threads(limit=limit, offset=offset)
759
759
  finally:
@@ -3466,7 +3466,7 @@ def _normalize_model_options(model: str | list[str]) -> list[str]:
3466
3466
 
3467
3467
  normalized = [item.strip() for item in models if item.strip() != ""]
3468
3468
  if len(normalized) == 0:
3469
- return ["gpt-5.6-sol"]
3469
+ return ["gpt-6.1-sol"]
3470
3470
  return normalized
3471
3471
 
3472
3472
 
@@ -3644,12 +3644,12 @@ def _process_models_for_backend_option(
3644
3644
  if backend_name == "llm":
3645
3645
  models.extend(
3646
3646
  [
3647
- "llm/openai/gpt-5.2",
3647
+ "llm/openai/gpt-6.1-sol",
3648
3648
  "llm/anthropic/claude-3-5-sonnet-latest",
3649
3649
  ]
3650
3650
  )
3651
3651
  elif backend_name == "codex":
3652
- models.append("codex/gpt-5.6-sol")
3652
+ models.append("codex/gpt-6.1-sol")
3653
3653
  elif backend_name == "chat":
3654
3654
  models.append("chat/none")
3655
3655
  else:
@@ -7126,7 +7126,7 @@ async def join(
7126
7126
  "--model",
7127
7127
  help="Name of an LLM model to make available. Can be repeated.",
7128
7128
  ),
7129
- ] = ["gpt-5.6-sol"],
7129
+ ] = ["gpt-6.1-sol"],
7130
7130
  backend: Annotated[
7131
7131
  list[str],
7132
7132
  typer.Option(
@@ -7634,7 +7634,7 @@ async def service(
7634
7634
  "--model",
7635
7635
  help="Name of an LLM model to make available. Can be repeated.",
7636
7636
  ),
7637
- ] = ["gpt-5.6-sol"],
7637
+ ] = ["gpt-6.1-sol"],
7638
7638
  backend: Annotated[
7639
7639
  list[str],
7640
7640
  typer.Option(
@@ -8085,7 +8085,7 @@ async def spec(
8085
8085
  "--model",
8086
8086
  help="Name of an LLM model to make available. Can be repeated.",
8087
8087
  ),
8088
- ] = ["gpt-5.6-sol"],
8088
+ ] = ["gpt-6.1-sol"],
8089
8089
  backend: Annotated[
8090
8090
  list[str],
8091
8091
  typer.Option(
@@ -8525,7 +8525,7 @@ async def deploy(
8525
8525
  "--model",
8526
8526
  help="Name of an LLM model to make available. Can be repeated.",
8527
8527
  ),
8528
- ] = ["gpt-5.6-sol"],
8528
+ ] = ["gpt-6.1-sol"],
8529
8529
  backend: Annotated[
8530
8530
  list[str],
8531
8531
  typer.Option(
@@ -11032,7 +11032,7 @@ async def run(
11032
11032
  "--model",
11033
11033
  help="Name of an LLM model to make available. Can be repeated.",
11034
11034
  ),
11035
- ] = ["gpt-5.6-sol"],
11035
+ ] = ["gpt-6.1-sol"],
11036
11036
  backend: Annotated[
11037
11037
  list[str],
11038
11038
  typer.Option(
@@ -1201,9 +1201,9 @@ def test_process_backend_options_expand_to_unfiltered_backend_defaults() -> None
1201
1201
  backend=selected_backends,
1202
1202
  ) == [
1203
1203
  "chat/none",
1204
- "llm/openai/gpt-5.2",
1204
+ "llm/openai/gpt-6.1-sol",
1205
1205
  "llm/anthropic/claude-3-5-sonnet-latest",
1206
- "codex/gpt-5.6-sol",
1206
+ "codex/gpt-6.1-sol",
1207
1207
  ]
1208
1208
  assert process._normalize_process_model_specs(["chat/none"])[0].backend == "chat"
1209
1209
 
@@ -2522,7 +2522,7 @@ async def test_process_run_starts_room_agent_and_uses_ask_tui(
2522
2522
  assert captured["process_tui_kwargs"] == {
2523
2523
  "bot": process_agent,
2524
2524
  "room": room_client,
2525
- "model": ["gpt-5.6-sol"],
2525
+ "model": ["gpt-6.1-sol"],
2526
2526
  "thread_path": None,
2527
2527
  "thread_storage": "dataset",
2528
2528
  "agent_name": "helper",
@@ -99,7 +99,7 @@ def test_setup_command_launches_ask_after_success(monkeypatch) -> None:
99
99
  async def close(self) -> None:
100
100
  return None
101
101
 
102
- async def _fake_ask(*, project_id, message, model="gpt-5.6-sol") -> None:
102
+ async def _fake_ask(*, project_id, message, model="gpt-6.1-sol") -> None:
103
103
  launched.append(
104
104
  {
105
105
  "project_id": project_id,
@@ -172,7 +172,7 @@ def test_setup_command_launches_ask_after_success(monkeypatch) -> None:
172
172
  {
173
173
  "project_id": None,
174
174
  "message": root_commands._setup_welcome_prompt(user_name="Jesse Ezell"),
175
- "model": "gpt-5.6-sol",
175
+ "model": "gpt-6.1-sol",
176
176
  }
177
177
  ]
178
178
 
@@ -206,7 +206,7 @@ def test_setup_command_launches_create_after_sample_selection(monkeypatch) -> No
206
206
  async def close(self) -> None:
207
207
  return None
208
208
 
209
- async def _fake_ask(*, project_id, message, model="gpt-5.6-sol") -> None:
209
+ async def _fake_ask(*, project_id, message, model="gpt-6.1-sol") -> None:
210
210
  del project_id, model
211
211
  asked.append(message)
212
212
 
@@ -449,7 +449,7 @@ def test_setup_command_does_not_launch_ask_when_not_completed(monkeypatch) -> No
449
449
  async def _fake_get_access_token() -> str | None:
450
450
  return None
451
451
 
452
- async def _fake_ask(*, project_id, message, model="gpt-5.6-sol") -> None:
452
+ async def _fake_ask(*, project_id, message, model="gpt-6.1-sol") -> None:
453
453
  del project_id, message, model
454
454
  nonlocal launched
455
455
  launched = True
@@ -827,7 +827,7 @@ async def join(
827
827
  ] = [],
828
828
  model: Annotated[
829
829
  str, typer.Option(..., help="Name of the LLM model to use for the task runner")
830
- ] = "gpt-5.6-sol",
830
+ ] = "gpt-6.1-sol",
831
831
  image_generation: Annotated[
832
832
  Optional[str], typer.Option(..., help="Name of an image gen model")
833
833
  ] = None,
@@ -1188,7 +1188,7 @@ async def run(
1188
1188
  ] = [],
1189
1189
  model: Annotated[
1190
1190
  str, typer.Option(..., help="Name of the LLM model to use for the task runner")
1191
- ] = "gpt-5.6-sol",
1191
+ ] = "gpt-6.1-sol",
1192
1192
  image_generation: Annotated[
1193
1193
  Optional[str], typer.Option(..., help="Name of an image gen model")
1194
1194
  ] = None,
@@ -1579,7 +1579,7 @@ async def service(
1579
1579
  ] = [],
1580
1580
  model: Annotated[
1581
1581
  str, typer.Option(..., help="Name of the LLM model to use for the task runner")
1582
- ] = "gpt-5.6-sol",
1582
+ ] = "gpt-6.1-sol",
1583
1583
  image_generation: Annotated[
1584
1584
  Optional[str], typer.Option(..., help="Name of an image gen model")
1585
1585
  ] = None,
@@ -1904,7 +1904,7 @@ async def spec(
1904
1904
  ] = [],
1905
1905
  model: Annotated[
1906
1906
  str, typer.Option(..., help="Name of the LLM model to use for the task runner")
1907
- ] = "gpt-5.6-sol",
1907
+ ] = "gpt-6.1-sol",
1908
1908
  image_generation: Annotated[
1909
1909
  Optional[str], typer.Option(..., help="Name of an image gen model")
1910
1910
  ] = None,
@@ -2238,7 +2238,7 @@ async def deploy(
2238
2238
  ] = [],
2239
2239
  model: Annotated[
2240
2240
  str, typer.Option(..., help="Name of the LLM model to use for the task runner")
2241
- ] = "gpt-5.6-sol",
2241
+ ] = "gpt-6.1-sol",
2242
2242
  image_generation: Annotated[
2243
2243
  Optional[str], typer.Option(..., help="Name of an image gen model")
2244
2244
  ] = None,
@@ -17,7 +17,7 @@ from meshagent.cli.local_settings import (
17
17
  resolve_api_url,
18
18
  )
19
19
 
20
- CODEX_DEFAULT_MODEL = "gpt-5.6-sol"
20
+ CODEX_DEFAULT_MODEL = "gpt-6.1-sol"
21
21
  CODEX_DEFAULT_PROFILE_ID = "meshagent"
22
22
  CODEX_AUTH_TIMEOUT_MS = 10_000
23
23
  CODEX_AUTH_REFRESH_INTERVAL_MS = 300_000
@@ -30,7 +30,7 @@ def test_configure_codex_default_integration_writes_default_provider(
30
30
  assert result.config_path == config_path
31
31
  assert config_path.read_text() == (
32
32
  'model_provider = "meshagent"\n'
33
- 'model = "gpt-5.6-sol"\n'
33
+ 'model = "gpt-6.1-sol"\n'
34
34
  "\n"
35
35
  "[model_providers.meshagent]\n"
36
36
  'name = "MeshAgent"\n'
@@ -70,19 +70,19 @@ def test_find_existing_codex_profiles_returns_matching_profiles(
70
70
  "\n"
71
71
  "[profiles.default]\n"
72
72
  'model_provider = "openai"\n'
73
- 'model = "gpt-5.6-sol"\n'
73
+ 'model = "gpt-6.1-sol"\n'
74
74
  "\n"
75
75
  "[profiles.router]\n"
76
76
  'model_provider = "openrouter"\n'
77
- 'model = "openai/gpt-5.6-sol"\n'
77
+ 'model = "openai/gpt-6.1-sol"\n'
78
78
  "\n"
79
79
  "[profiles.meshagent-work]\n"
80
80
  'model_provider = "meshagent-work"\n'
81
- 'model = "gpt-5.6-sol"\n'
81
+ 'model = "gpt-6.1-sol"\n'
82
82
  "\n"
83
83
  "[profiles.meshagent]\n"
84
84
  'model_provider = "meshagent-work"\n'
85
- 'model = "gpt-5.6-sol"\n'
85
+ 'model = "gpt-6.1-sol"\n'
86
86
  )
87
87
 
88
88
  # Only MeshAgent-managed profiles are surfaced (openai/openrouter excluded).
@@ -99,7 +99,7 @@ def test_find_existing_codex_profiles_includes_stale_default_with_different_api_
99
99
  config_path = tmp_path / "config.toml"
100
100
  config_path.write_text(
101
101
  'model_provider = "meshagent"\n'
102
- 'model = "gpt-5.6-sol"\n'
102
+ 'model = "gpt-6.1-sol"\n'
103
103
  "\n"
104
104
  "[model_providers.meshagent]\n"
105
105
  'name = "MeshAgent"\n'
@@ -119,7 +119,7 @@ def test_find_existing_codex_profiles_includes_stale_default_with_different_proj
119
119
  config_path = tmp_path / "config.toml"
120
120
  config_path.write_text(
121
121
  'model_provider = "meshagent"\n'
122
- 'model = "gpt-5.6-sol"\n'
122
+ 'model = "gpt-6.1-sol"\n'
123
123
  "\n"
124
124
  "[model_providers.meshagent]\n"
125
125
  'name = "MeshAgent"\n'
@@ -159,7 +159,7 @@ def test_find_existing_codex_profiles_does_not_require_active_project(
159
159
  config_path = tmp_path / "config.toml"
160
160
  config_path.write_text(
161
161
  'model_provider = "meshagent"\n'
162
- 'model = "gpt-5.6-sol"\n'
162
+ 'model = "gpt-6.1-sol"\n'
163
163
  "\n"
164
164
  "[model_providers.meshagent]\n"
165
165
  'name = "MeshAgent"\n'
@@ -189,7 +189,7 @@ def test_find_current_codex_default_profile_returns_matching_profile(
189
189
  "\n"
190
190
  "[profiles.meshagent-work]\n"
191
191
  'model_provider = "meshagent-work"\n'
192
- 'model = "gpt-5.6-sol"\n'
192
+ 'model = "gpt-6.1-sol"\n'
193
193
  )
194
194
 
195
195
  monkeypatch.setattr(
@@ -222,7 +222,7 @@ def test_clear_codex_default_profile_if_meshagent_project_removes_profile(
222
222
  "\n"
223
223
  "[profiles.meshagent]\n"
224
224
  'model_provider = "meshagent"\n'
225
- 'model = "gpt-5.6-sol"\n'
225
+ 'model = "gpt-6.1-sol"\n'
226
226
  )
227
227
 
228
228
  monkeypatch.setattr(
@@ -257,11 +257,11 @@ def test_remove_codex_integration_keeps_shared_provider_for_other_profiles(
257
257
  "\n"
258
258
  "[profiles.meshagent]\n"
259
259
  'model_provider = "meshagent"\n'
260
- 'model = "gpt-5.6-sol"\n'
260
+ 'model = "gpt-6.1-sol"\n'
261
261
  "\n"
262
262
  "[profiles.meshagent-work]\n"
263
263
  'model_provider = "meshagent"\n'
264
- 'model = "gpt-5.6-sol"\n'
264
+ 'model = "gpt-6.1-sol"\n'
265
265
  )
266
266
 
267
267
  assert (
@@ -280,7 +280,7 @@ def test_remove_codex_integration_keeps_shared_provider_for_other_profiles(
280
280
  "\n"
281
281
  "[profiles.meshagent-work]\n"
282
282
  'model_provider = "meshagent"\n'
283
- 'model = "gpt-5.6-sol"\n'
283
+ 'model = "gpt-6.1-sol"\n'
284
284
  )
285
285
 
286
286
 
@@ -296,10 +296,10 @@ def test_remove_codex_integration_resets_default_and_removes_matching_profile_fi
296
296
  'http_headers = {"Meshagent-Project-Id"="project-life"}\n'
297
297
  )
298
298
  config_path.write_text(
299
- f'model_provider = "meshagent"\nmodel = "gpt-5.6-sol"\n\n{provider_block}'
299
+ f'model_provider = "meshagent"\nmodel = "gpt-6.1-sol"\n\n{provider_block}'
300
300
  )
301
301
  profile_path.write_text(
302
- f'model_provider = "meshagent"\nmodel = "gpt-5.6-sol"\n\n{provider_block}'
302
+ f'model_provider = "meshagent"\nmodel = "gpt-6.1-sol"\n\n{provider_block}'
303
303
  )
304
304
 
305
305
  assert (
@@ -323,7 +323,7 @@ def test_remove_codex_integration_removes_stale_default_with_different_api_url(
323
323
  config_path = tmp_path / "config.toml"
324
324
  config_path.write_text(
325
325
  'model_provider = "meshagent"\n'
326
- 'model = "gpt-5.6-sol"\n'
326
+ 'model = "gpt-6.1-sol"\n'
327
327
  "\n"
328
328
  "[model_providers.meshagent]\n"
329
329
  'name = "MeshAgent"\n'
@@ -360,7 +360,7 @@ def test_remove_codex_integration_removes_stale_default_with_nondefault_provider
360
360
  config_path = tmp_path / "config.toml"
361
361
  config_path.write_text(
362
362
  'model_provider = "meshagent-old"\n'
363
- 'model = "gpt-5.6-sol"\n'
363
+ 'model = "gpt-6.1-sol"\n'
364
364
  "\n"
365
365
  "[model_providers.meshagent-old]\n"
366
366
  'name = "MeshAgent"\n'
@@ -404,7 +404,7 @@ def test_build_codex_launch_command_sets_profile_overrides() -> None:
404
404
  "-c",
405
405
  'model_provider="meshagent"',
406
406
  "-c",
407
- 'model="gpt-5.6-sol"',
407
+ 'model="gpt-6.1-sol"',
408
408
  "-c",
409
409
  'model_providers.meshagent.name="MeshAgent"',
410
410
  "-c",
@@ -457,7 +457,7 @@ def test_launch_codex_runs_subprocess() -> None:
457
457
  "-c",
458
458
  'model_provider="meshagent"',
459
459
  "-c",
460
- 'model="gpt-5.6-sol"',
460
+ 'model="gpt-6.1-sol"',
461
461
  "-c",
462
462
  'model_providers.meshagent.name="MeshAgent"',
463
463
  "-c",