mainsequence 3.18.3__tar.gz → 3.18.4__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 (178) hide show
  1. {mainsequence-3.18.3 → mainsequence-3.18.4}/PKG-INFO +1 -1
  2. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/cli.py +75 -24
  3. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/config.py +2 -2
  4. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/PKG-INFO +1 -1
  5. {mainsequence-3.18.3 → mainsequence-3.18.4}/pyproject.toml +1 -1
  6. {mainsequence-3.18.3 → mainsequence-3.18.4}/LICENSE +0 -0
  7. {mainsequence-3.18.3 → mainsequence-3.18.4}/README.md +0 -0
  8. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/AGENTS.md +0 -0
  9. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  10. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  11. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
  12. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  13. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
  14. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
  15. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  16. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  17. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -0
  18. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  19. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +0 -0
  20. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -0
  21. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -0
  22. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -0
  23. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  24. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  25. {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
  26. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/__init__.py +0 -0
  27. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/__main__.py +0 -0
  28. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/bootstrap.py +0 -0
  29. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/__init__.py +0 -0
  30. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/api.py +0 -0
  31. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/browser_auth.py +0 -0
  32. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/docker_utils.py +0 -0
  33. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/doctor.py +0 -0
  34. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/local_ops.py +0 -0
  35. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/model_filters.py +0 -0
  36. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/project_status.py +0 -0
  37. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/pydantic_cli.py +0 -0
  38. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/sdk_utils.py +0 -0
  39. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/ssh_utils.py +0 -0
  40. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/ui.py +0 -0
  41. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/__init__.py +0 -0
  42. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/agent.py +0 -0
  43. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/agent_runtime_models.py +0 -0
  44. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/base.py +0 -0
  45. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/client.py +0 -0
  46. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/__init__.py +0 -0
  47. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/app_component.py +0 -0
  48. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/data_models.py +0 -0
  49. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/workspace.py +0 -0
  50. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  51. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  52. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  53. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
  54. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/exceptions.py +0 -0
  55. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/fastapi/__init__.py +0 -0
  56. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/fastapi/auth.py +0 -0
  57. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_helpers.py +0 -0
  58. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_simple_tables.py +0 -0
  59. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_tdag.py +0 -0
  60. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_user.py +0 -0
  61. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_vam.py +0 -0
  62. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/utils.py +0 -0
  63. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/compute_validation.py +0 -0
  64. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/__init__.py +0 -0
  65. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/__init__.py +0 -0
  66. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
  67. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
  68. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
  69. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
  70. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
  71. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
  72. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
  73. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
  74. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/__init__.py +0 -0
  75. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/asset_select.py +0 -0
  76. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/date_settings.py +0 -0
  77. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/logged_user.py +0 -0
  78. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
  79. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
  80. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/instruments/__init__.py +0 -0
  81. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/instruments/streamlit_form_factory.py +0 -0
  82. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
  83. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
  84. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instrumentation/__init__.py +0 -0
  85. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instrumentation/utils.py +0 -0
  86. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/__init__.py +0 -0
  87. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/data_interface/__init__.py +0 -0
  88. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/data_interface/data_interface.py +0 -0
  89. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/__init__.py +0 -0
  90. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/base_instrument.py +0 -0
  91. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/bond.py +0 -0
  92. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/callability.py +0 -0
  93. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
  94. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/json_codec.py +0 -0
  95. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/position.py +0 -0
  96. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/ql_fields.py +0 -0
  97. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/__init__.py +0 -0
  98. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/__init__.py +0 -0
  99. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/curve_codec.py +0 -0
  100. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/nodes.py +0 -0
  101. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/registry.py +0 -0
  102. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/__init__.py +0 -0
  103. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
  104. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/indices.py +0 -0
  105. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/indices_builders.py +0 -0
  106. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
  107. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/settings.py +0 -0
  108. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/utils.py +0 -0
  109. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/logconf.py +0 -0
  110. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/runtime_flags.py +0 -0
  111. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/__init__.py +0 -0
  112. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/__main__.py +0 -0
  113. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/base_persist_managers.py +0 -0
  114. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/config.py +0 -0
  115. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/configuration_models.py +0 -0
  116. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/__init__.py +0 -0
  117. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
  118. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/data_nodes.py +0 -0
  119. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/filters.py +0 -0
  120. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/models.py +0 -0
  121. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
  122. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/persist_managers.py +0 -0
  123. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
  124. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/utils.py +0 -0
  125. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/filters.py +0 -0
  126. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/future_registry.py +0 -0
  127. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/pydantic_metadata.py +0 -0
  128. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/__init__.py +0 -0
  129. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/filters.py +0 -0
  130. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/models.py +0 -0
  131. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/persist_managers.py +0 -0
  132. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/schema.py +0 -0
  133. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/table_nodes.py +0 -0
  134. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/utils.py +0 -0
  135. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/__init__.py +0 -0
  136. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
  137. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
  138. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
  139. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
  140. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
  141. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
  142. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
  143. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
  144. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
  145. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
  146. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
  147. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
  148. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/enums.py +0 -0
  149. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/models.py +0 -0
  150. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/portfolio_nodes.py +0 -0
  151. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
  152. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
  153. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
  154. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/utils.py +0 -0
  155. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/SOURCES.txt +0 -0
  156. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/dependency_links.txt +0 -0
  157. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/entry_points.txt +0 -0
  158. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/requires.txt +0 -0
  159. {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/top_level.txt +0 -0
  160. {mainsequence-3.18.3 → mainsequence-3.18.4}/setup.cfg +0 -0
  161. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_auth_precedence.py +0 -0
  162. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_build_operations_hashing.py +0 -0
  163. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_cli.py +0 -0
  164. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_cli_browser_auth.py +0 -0
  165. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_client.py +0 -0
  166. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_command_center_app_component_models.py +0 -0
  167. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_command_center_models.py +0 -0
  168. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_dependency_extras.py +0 -0
  169. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_filter_normalization.py +0 -0
  170. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_instruments.py +0 -0
  171. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_logconf.py +0 -0
  172. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_logged_user_components.py +0 -0
  173. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_models_user_request_bound_auth.py +0 -0
  174. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_pod_project_resolution.py +0 -0
  175. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_project_batch_jobs_from_file.py +0 -0
  176. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_run_configuration.py +0 -0
  177. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_simple_tables_configuration_hashing.py +0 -0
  178. {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_simple_tables_persistence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 3.18.3
3
+ Version: 3.18.4
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -226,6 +226,7 @@ from .ssh_utils import (
226
226
  from .ui import error, info, print_kv, print_table, status, success, warn
227
227
 
228
228
  JSON_OUTPUT_CONTEXT_KEY = "json_output"
229
+ LOGIN_DEFAULT_BACKEND_URL = "https://api.main-sequence.io"
229
230
 
230
231
 
231
232
  class MainSequenceGroup(typer.core.TyperGroup):
@@ -2056,6 +2057,7 @@ def login(
2056
2057
  Persists auth tokens in the active CLI auth store so subsequent
2057
2058
  CLI invocations can run without re-authentication. Backend/base-folder
2058
2059
  overrides passed to `login` are scoped to the current terminal session.
2060
+ When no backend is provided, login defaults to `https://api.main-sequence.io`.
2059
2061
 
2060
2062
  Interactive login uses browser-based authentication and finishes with
2061
2063
  standard JWT access/refresh tokens persisted by the CLI.
@@ -2119,7 +2121,8 @@ def login(
2119
2121
  if cfg.normalize_backend_url(backend) != cfg.normalize_backend_url(backend_option):
2120
2122
  error("Pass backend either positionally or with --backend, not both.")
2121
2123
  raise typer.Exit(1)
2122
- effective_backend_input = backend_option if backend_option is not None else backend
2124
+ explicit_backend_input = backend_option if backend_option is not None else backend
2125
+ effective_backend_input = explicit_backend_input if explicit_backend_input is not None else LOGIN_DEFAULT_BACKEND_URL
2123
2126
 
2124
2127
  if projects_base and projects_base_option:
2125
2128
  if cfg.normalize_mainsequence_path(projects_base) != cfg.normalize_mainsequence_path(projects_base_option):
@@ -2138,24 +2141,23 @@ def login(
2138
2141
  raise typer.Exit(1)
2139
2142
 
2140
2143
  current_backend = cfg.backend_url()
2141
- normalized_backend = cfg.normalize_backend_url(effective_backend_input) if effective_backend_input else None
2144
+ normalized_backend = cfg.normalize_backend_url(effective_backend_input)
2142
2145
 
2143
- if normalized_backend and normalized_backend != current_backend:
2146
+ if explicit_backend_input is not None and normalized_backend != current_backend:
2144
2147
  if not effective_projects_base_input:
2145
2148
  error("When using a different backend, you must also specify a projects base folder.")
2146
2149
  raise typer.Exit(1)
2147
2150
 
2148
2151
  previous_backend_override = os.environ.get("MAIN_SEQUENCE_BACKEND_URL")
2149
- if normalized_backend:
2150
- os.environ["MAIN_SEQUENCE_BACKEND_URL"] = normalized_backend
2152
+ os.environ["MAIN_SEQUENCE_BACKEND_URL"] = normalized_backend
2151
2153
 
2152
2154
  try:
2153
2155
  if using_runtime_credential:
2154
- access = _exchange_runtime_credential_for_cli_login(normalized_backend or current_backend)
2156
+ access = _exchange_runtime_credential_for_cli_login(normalized_backend)
2155
2157
  persisted = cfg.save_tokens("", access, "")
2156
2158
  res = {
2157
2159
  "username": "",
2158
- "backend": normalized_backend or current_backend,
2160
+ "backend": normalized_backend,
2159
2161
  "access": access,
2160
2162
  "refresh": "",
2161
2163
  "persisted": bool(persisted),
@@ -2167,7 +2169,7 @@ def login(
2167
2169
  persisted = cfg.save_tokens("", (access_token or "").strip(), (refresh_token or "").strip())
2168
2170
  res = {
2169
2171
  "username": "",
2170
- "backend": normalized_backend or current_backend,
2172
+ "backend": normalized_backend,
2171
2173
  "access": (access_token or "").strip(),
2172
2174
  "refresh": (refresh_token or "").strip(),
2173
2175
  "persisted": bool(persisted),
@@ -2196,7 +2198,7 @@ def login(
2196
2198
 
2197
2199
  res = {
2198
2200
  "username": username,
2199
- "backend": normalized_backend or current_backend,
2201
+ "backend": normalized_backend,
2200
2202
  "access": access,
2201
2203
  "refresh": refresh,
2202
2204
  "persisted": bool(persisted),
@@ -2209,19 +2211,15 @@ def login(
2209
2211
  error(f"Login failed: {e}")
2210
2212
  raise typer.Exit(1) from e
2211
2213
  finally:
2212
- if normalized_backend:
2213
- if previous_backend_override is None:
2214
- os.environ.pop("MAIN_SEQUENCE_BACKEND_URL", None)
2215
- else:
2216
- os.environ["MAIN_SEQUENCE_BACKEND_URL"] = previous_backend_override
2214
+ if previous_backend_override is None:
2215
+ os.environ.pop("MAIN_SEQUENCE_BACKEND_URL", None)
2216
+ else:
2217
+ os.environ["MAIN_SEQUENCE_BACKEND_URL"] = previous_backend_override
2217
2218
 
2218
- if normalized_backend or effective_projects_base_input:
2219
- cfg.set_session_overrides(
2220
- backend_url=normalized_backend,
2221
- mainsequence_path=effective_projects_base_input,
2222
- )
2223
- else:
2224
- cfg.clear_session_overrides()
2219
+ cfg.set_session_overrides(
2220
+ backend_url=normalized_backend,
2221
+ mainsequence_path=effective_projects_base_input,
2222
+ )
2225
2223
 
2226
2224
  if export:
2227
2225
  access = (res.get("access") or "").replace('"', '\\"')
@@ -2875,7 +2873,7 @@ def settings_set_base(path: str = typer.Argument(..., help="New projects base fo
2875
2873
 
2876
2874
  @settings.command("set-backend")
2877
2875
  def settings_set_backend(
2878
- url: str = typer.Argument(..., help="Backend base URL, e.g. https://api.main-sequence.app")
2876
+ url: str = typer.Argument(..., help="Backend base URL, e.g. https://api.main-sequence.io")
2879
2877
  ):
2880
2878
  """
2881
2879
  Set backend base URL used by CLI API calls.
@@ -2883,12 +2881,12 @@ def settings_set_backend(
2883
2881
  Parameters
2884
2882
  ----------
2885
2883
  url:
2886
- Backend base URL (for example `https://api.main-sequence.app`).
2884
+ Backend base URL (for example `https://api.main-sequence.io`).
2887
2885
 
2888
2886
  Examples
2889
2887
  --------
2890
2888
  ```bash
2891
- mainsequence settings set-backend https://api.main-sequence.app
2889
+ mainsequence settings set-backend https://api.main-sequence.io
2892
2890
  ```
2893
2891
  """
2894
2892
  out = cfg.set_backend_url(url)
@@ -2897,6 +2895,59 @@ def settings_set_backend(
2897
2895
  success(f"Backend URL set to: {out.get('backend_url')}")
2898
2896
 
2899
2897
 
2898
+ def _settings_reset_impl() -> dict:
2899
+ """
2900
+ Reset persistent CLI settings to standard defaults and clear session overrides.
2901
+ """
2902
+ standard_backend = cfg.normalize_backend_url(LOGIN_DEFAULT_BACKEND_URL)
2903
+ standard_base = cfg.normalize_mainsequence_path(cfg.DEFAULTS.get("mainsequence_path"))
2904
+ pathlib.Path(standard_base).mkdir(parents=True, exist_ok=True)
2905
+ out = cfg.set_config(
2906
+ {
2907
+ "backend_url": standard_backend,
2908
+ "mainsequence_path": standard_base,
2909
+ }
2910
+ )
2911
+ cfg.clear_session_overrides()
2912
+ return out
2913
+
2914
+
2915
+ @settings.command("reset")
2916
+ def settings_reset():
2917
+ """
2918
+ Reset CLI settings to standard defaults.
2919
+
2920
+ Resets backend URL to `https://api.main-sequence.io`, base folder to the
2921
+ default `~/mainsequence`, and clears current terminal session overrides.
2922
+
2923
+ Examples
2924
+ --------
2925
+ ```bash
2926
+ mainsequence settings reset
2927
+ ```
2928
+ """
2929
+ out = _settings_reset_impl()
2930
+ if _emit_json(out):
2931
+ return
2932
+ success("Settings reset to standard defaults.")
2933
+ info(f"Backend URL: {out.get('backend_url')}")
2934
+ info(f"Projects base folder: {out.get('mainsequence_path')}")
2935
+
2936
+
2937
+ @settings.command("refresh")
2938
+ def settings_refresh():
2939
+ """
2940
+ Alias for `settings reset`.
2941
+
2942
+ Examples
2943
+ --------
2944
+ ```bash
2945
+ mainsequence settings refresh
2946
+ ```
2947
+ """
2948
+ settings_reset()
2949
+
2950
+
2900
2951
  # ---------- sdk group ----------
2901
2952
 
2902
2953
 
@@ -62,7 +62,7 @@ KEYCHAIN_SERVICE = "MainSequenceCLI.auth"
62
62
  KEYCHAIN_ACCOUNT = "default"
63
63
 
64
64
  DEFAULTS = {
65
- "backend_url": os.environ.get("MAIN_SEQUENCE_BACKEND_URL", "https://api.main-sequence.app/"),
65
+ "backend_url": os.environ.get("MAIN_SEQUENCE_BACKEND_URL", "https://api.main-sequence.io/"),
66
66
  "mainsequence_path": str(pathlib.Path.home() / "mainsequence"),
67
67
  "version": 1,
68
68
  }
@@ -212,7 +212,7 @@ def set_backend_url(url: str) -> dict:
212
212
  Convenience helper to set backend_url in config.json.
213
213
 
214
214
  Args:
215
- url: Backend base URL (e.g. https://api.main-sequence.app)
215
+ url: Backend base URL (e.g. https://api.main-sequence.io)
216
216
 
217
217
  Returns:
218
218
  dict: updated config
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 3.18.3
3
+ Version: 3.18.4
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "3.18.3"
7
+ version = "3.18.4"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
File without changes
File without changes
File without changes