mainsequence 3.17.44__tar.gz → 3.17.45__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 (172) hide show
  1. {mainsequence-3.17.44 → mainsequence-3.17.45}/PKG-INFO +1 -1
  2. mainsequence-3.17.45/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +325 -0
  3. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/PKG-INFO +1 -1
  4. {mainsequence-3.17.44 → mainsequence-3.17.45}/pyproject.toml +1 -1
  5. mainsequence-3.17.44/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -211
  6. {mainsequence-3.17.44 → mainsequence-3.17.45}/LICENSE +0 -0
  7. {mainsequence-3.17.44 → mainsequence-3.17.45}/README.md +0 -0
  8. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/AGENTS.md +0 -0
  9. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  10. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
  11. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
  12. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  14. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -0
  15. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  16. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +0 -0
  17. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -0
  18. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -0
  19. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -0
  20. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  21. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  22. {mainsequence-3.17.44 → mainsequence-3.17.45}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
  23. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/__init__.py +0 -0
  24. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/__main__.py +0 -0
  25. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/bootstrap.py +0 -0
  26. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/__init__.py +0 -0
  27. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/api.py +0 -0
  28. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/cli.py +0 -0
  29. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/config.py +0 -0
  30. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/docker_utils.py +0 -0
  31. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/doctor.py +0 -0
  32. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/local_ops.py +0 -0
  33. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/model_filters.py +0 -0
  34. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/project_status.py +0 -0
  35. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/pydantic_cli.py +0 -0
  36. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/sdk_utils.py +0 -0
  37. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/ssh_utils.py +0 -0
  38. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/cli/ui.py +0 -0
  39. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/__init__.py +0 -0
  40. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/agent.py +0 -0
  41. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/agent_runtime_models.py +0 -0
  42. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/base.py +0 -0
  43. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/client.py +0 -0
  44. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/command_center/__init__.py +0 -0
  45. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/command_center/app_component.py +0 -0
  46. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/command_center/data_models.py +0 -0
  47. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/command_center/workspace.py +0 -0
  48. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  49. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  50. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
  51. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/exceptions.py +0 -0
  52. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/fastapi/__init__.py +0 -0
  53. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/fastapi/auth.py +0 -0
  54. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/models_helpers.py +0 -0
  55. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/models_simple_tables.py +0 -0
  56. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/models_tdag.py +0 -0
  57. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/models_user.py +0 -0
  58. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/models_vam.py +0 -0
  59. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/client/utils.py +0 -0
  60. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/compute_validation.py +0 -0
  61. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/__init__.py +0 -0
  62. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/__init__.py +0 -0
  63. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
  64. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
  65. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
  66. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
  67. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
  68. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
  69. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
  70. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
  71. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/components/__init__.py +0 -0
  72. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/components/asset_select.py +0 -0
  73. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/components/date_settings.py +0 -0
  74. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/components/logged_user.py +0 -0
  75. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
  76. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
  77. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/instruments/__init__.py +0 -0
  78. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/instruments/streamlit_form_factory.py +0 -0
  79. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
  80. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
  81. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instrumentation/__init__.py +0 -0
  82. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instrumentation/utils.py +0 -0
  83. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/__init__.py +0 -0
  84. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/data_interface/__init__.py +0 -0
  85. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/data_interface/data_interface.py +0 -0
  86. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/__init__.py +0 -0
  87. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/base_instrument.py +0 -0
  88. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/bond.py +0 -0
  89. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/callability.py +0 -0
  90. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
  91. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/json_codec.py +0 -0
  92. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/position.py +0 -0
  93. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/instruments/ql_fields.py +0 -0
  94. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/interest_rates/__init__.py +0 -0
  95. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/interest_rates/etl/__init__.py +0 -0
  96. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/interest_rates/etl/curve_codec.py +0 -0
  97. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/interest_rates/etl/nodes.py +0 -0
  98. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/interest_rates/etl/registry.py +0 -0
  99. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/pricing_models/__init__.py +0 -0
  100. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
  101. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/pricing_models/indices.py +0 -0
  102. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/pricing_models/indices_builders.py +0 -0
  103. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
  104. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/settings.py +0 -0
  105. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/instruments/utils.py +0 -0
  106. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/logconf.py +0 -0
  107. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/runtime_flags.py +0 -0
  108. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/__init__.py +0 -0
  109. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/__main__.py +0 -0
  110. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/base_persist_managers.py +0 -0
  111. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/config.py +0 -0
  112. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/configuration_models.py +0 -0
  113. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/__init__.py +0 -0
  114. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
  115. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/data_nodes.py +0 -0
  116. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/filters.py +0 -0
  117. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/models.py +0 -0
  118. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
  119. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/persist_managers.py +0 -0
  120. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
  121. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/data_nodes/utils.py +0 -0
  122. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/filters.py +0 -0
  123. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/future_registry.py +0 -0
  124. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/pydantic_metadata.py +0 -0
  125. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/__init__.py +0 -0
  126. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/filters.py +0 -0
  127. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/models.py +0 -0
  128. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/persist_managers.py +0 -0
  129. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/schema.py +0 -0
  130. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/simple_tables/table_nodes.py +0 -0
  131. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/tdag/utils.py +0 -0
  132. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/__init__.py +0 -0
  133. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
  134. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
  135. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
  136. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
  137. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
  138. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
  139. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
  140. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
  141. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
  142. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
  143. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
  144. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
  145. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/enums.py +0 -0
  146. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/models.py +0 -0
  147. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/portfolio_nodes.py +0 -0
  148. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
  149. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
  150. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
  151. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence/virtualfundbuilder/utils.py +0 -0
  152. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/SOURCES.txt +0 -0
  153. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/dependency_links.txt +0 -0
  154. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/entry_points.txt +0 -0
  155. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/requires.txt +0 -0
  156. {mainsequence-3.17.44 → mainsequence-3.17.45}/mainsequence.egg-info/top_level.txt +0 -0
  157. {mainsequence-3.17.44 → mainsequence-3.17.45}/setup.cfg +0 -0
  158. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_auth_precedence.py +0 -0
  159. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_build_operations_hashing.py +0 -0
  160. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_cli.py +0 -0
  161. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_client.py +0 -0
  162. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_command_center_app_component_models.py +0 -0
  163. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_command_center_models.py +0 -0
  164. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_dependency_extras.py +0 -0
  165. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_filter_normalization.py +0 -0
  166. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_instruments.py +0 -0
  167. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_logconf.py +0 -0
  168. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_logged_user_components.py +0 -0
  169. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_project_batch_jobs_from_file.py +0 -0
  170. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_run_configuration.py +0 -0
  171. {mainsequence-3.17.44 → mainsequence-3.17.45}/tests/test_simple_tables_configuration_hashing.py +0 -0
  172. {mainsequence-3.17.44 → mainsequence-3.17.45}/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.17.44
3
+ Version: 3.17.45
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
@@ -0,0 +1,325 @@
1
+ ---
2
+ name: command-center-workspace-builder
3
+ description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces. This skill owns workspace documents, widget instance payload resolution, layout decisions, shared versus user state, widget-scoped mutation, and grounding those decisions against the richer widget-type registry contract plus the SDK command_center client models. The primary workflow is CLI registry verification first, then SDK client models, then Main Sequence-accessible repository docs/models only when registry detail and client models still leave instance payload questions unresolved. It does not own AppComponent form contracts, API implementation, or Streamlit dashboards.
4
+ ---
5
+
6
+ # Command Center Workspace Builder
7
+
8
+ ## Overview
9
+
10
+ Use this skill when the task is about a Command Center workspace document or a mounted widget inside that workspace.
11
+
12
+ This skill is for workspace structure, widget payload resolution, safe workspace mutation, and grounding those decisions against the actual `mainsequence.client.command_center` client models.
13
+
14
+ ## This Skill Can Do
15
+
16
+ - create a new Command Center workspace
17
+ - update an existing workspace document
18
+ - add widgets to a workspace
19
+ - verify widget types in the CLI registry before mounting or mutating them
20
+ - inspect the richer widget detail contract before opening repository source
21
+ - inspect SDK client models in `mainsequence/client/command_center/` before opening frontend implementation files
22
+ - decide whether widget detail plus SDK models are already enough to build the widget safely
23
+ - resolve widget instance payloads from Main Sequence docs/models in this repository only after registry verification and widget-detail review
24
+ - decide between full workspace update and widget-scoped mutation
25
+ - patch one widget safely
26
+ - move or delete a widget safely
27
+ - verify shared workspace data versus current-user state
28
+ - verify runtime ownership semantics such as `execution-owner` versus `consumer`
29
+ - review a workspace payload for guessed or invalid widget configuration
30
+
31
+ ## This Skill Must Not Claim
32
+
33
+ This skill must not claim ownership of:
34
+
35
+ - AppComponent custom input forms
36
+ - widget-facing API response contracts
37
+ - generic FastAPI or backend API implementation
38
+ - Streamlit dashboard implementation
39
+ - DataNode producer design
40
+ - SimpleTable schema design
41
+
42
+ ## Route Adjacent Work
43
+
44
+ - AppComponents and custom forms:
45
+ `.agents/skills/command_center/app_components/SKILL.md`
46
+ - APIs and FastAPI:
47
+ `.agents/skills/application_surfaces/api_surfaces/SKILL.md`
48
+ - Streamlit dashboards:
49
+ `.agents/skills/dashboards/streamlit/SKILL.md`
50
+ - DataNodes:
51
+ `.agents/skills/data_publishing/data_nodes/SKILL.md`
52
+ - SimpleTables:
53
+ `.agents/skills/data_publishing/simple_tables/SKILL.md`
54
+
55
+ ## Read First
56
+
57
+ 1. Verify the widget catalog through the CLI:
58
+ - `mainsequence --json cc registered_widget_type list`
59
+ - identify the target `widget_id`
60
+ - `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
61
+ 2. The SDK client models in `mainsequence/client/command_center/`:
62
+ - `workspace.py`
63
+ - `data_models.py`
64
+ - `app_component.py` when the workspace contains AppComponent widgets or editable form payloads
65
+ 3. `docs/knowledge/command_center/workspaces.md`
66
+ 4. the local Main Sequence docs/models/examples in this repository that define the widget payloads being mounted
67
+ 5. the current CLI docs if the task uses CLI workflow
68
+
69
+ If the workspace contains AppComponent widgets, also read:
70
+
71
+ 6. `docs/knowledge/command_center/forms.md`
72
+ 7. `docs/knowledge/command_center/widget_data_contracts.md`
73
+
74
+ ## Command Center Mental Model
75
+
76
+ Think in terms of these objects:
77
+
78
+ - workspace:
79
+ shared document that stores mounted widgets, layout, shared controls, and workspace metadata
80
+ - widget type:
81
+ registered capability identified by `widget_id` and described by widget registry detail
82
+ - widget instance:
83
+ one mounted configured object inside a workspace document, identified by its own instance id
84
+ - workspace user state:
85
+ current-user runtime/view state stored separately from shared workspace content
86
+ - saved widget or saved group:
87
+ import-layer snapshot/template, not a live linked widget instance inside the workspace
88
+
89
+ ## Inputs This Skill Needs
90
+
91
+ Before writing or mutating a workspace, collect or infer:
92
+
93
+ - workspace metadata:
94
+ title, description, labels, category, source
95
+ - layout mode:
96
+ custom grid or auto-grid
97
+ - desired widgets:
98
+ one item per widget with concrete intent
99
+ - verified `widget_id` values from the CLI registry
100
+ - widget detail payloads for those widget ids
101
+ - relevant SDK model sources in `mainsequence/client/command_center/`
102
+ - widget instance ids
103
+ - external resource ids required by those widgets
104
+ - whether the task is:
105
+ - full workspace create/update
106
+ - one-widget mutation
107
+
108
+ Only inspect Main Sequence docs/models/examples in this repository after registry verification and SDK model review, and only to resolve mounted widget shape that remains unclear.
109
+
110
+ If a widget lacks registry verification, usable widget detail, or a concrete payload source, stop before building the workspace.
111
+
112
+ ## Required Decisions
113
+
114
+ For every non-trivial workspace task, decide:
115
+
116
+ 1. Is this a full workspace change or a one-widget mutation?
117
+ 2. Has the widget type been verified through `registered_widget_type list/detail`?
118
+ 3. Is widget detail plus the relevant SDK model already enough to author the widget safely?
119
+ 4. If not, what Main Sequence repository source defines the remaining instance-level payload shape?
120
+ 5. Which fields are shared workspace state versus current-user state?
121
+ 6. Is the widget a runtime `execution-owner`, `consumer`, or `local-ui` widget?
122
+ 7. Are bindings and external resource ids fully resolved?
123
+
124
+ ## Build Rules
125
+
126
+ ### 1. Verify the widget type in the CLI registry first
127
+
128
+ Before mutating or mounting a workspace widget:
129
+
130
+ 1. run `mainsequence --json cc registered_widget_type list`
131
+ 2. identify the target `widget_id`
132
+ 3. run `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
133
+
134
+ Do not start with secondary repository source inspection. The registry is the first source of truth for widget existence and catalog metadata. Widget detail is now expected to show enough contract detail to guide exploration before falling back to repository source.
135
+
136
+ ### 1.1 Use widget detail as a build contract, not only an existence check
137
+
138
+ During widget exploration, do not treat `registered_widget_type detail` as a shallow existence check.
139
+
140
+ Use widget detail first to answer:
141
+
142
+ - what the widget is for
143
+ - the widget `widgetVersion`
144
+ - whether it is a workspace `execution-owner`, `consumer`, or `local-ui` widget
145
+ - which configuration modes and major fields exist
146
+ - whether inputs/outputs are static, dynamic, or consumer-only
147
+ - what capability modes the widget supports
148
+ - what authoring steps an agent must follow before the widget is usable
149
+ - which examples already match the requested workspace change
150
+
151
+ If widget detail already answers the authoring question safely, do not open implementation files just to “look around”.
152
+
153
+ ### 2. Read the SDK client models before frontend implementation files
154
+
155
+ After registry verification, inspect the relevant `mainsequence.client.command_center` model before opening frontend implementation files.
156
+
157
+ Use:
158
+
159
+ - `workspace.py` for shared workspace shape and widget-scoped mutation methods
160
+ - `data_models.py` for Data Node-family tabular contracts, field provenance, and date/range payload rules
161
+ - `app_component.py` for editable form structures relevant to workspace-mounted AppComponent workflows
162
+
163
+ Treat these SDK models as the first concrete client interaction surface.
164
+
165
+ ### 2.1 Use local source only to refine unresolved instance payload shape
166
+
167
+ A registered widget type proves the widget exists and gives catalog metadata.
168
+
169
+ Widget detail should now also expose the machine-readable widget contract, including at least:
170
+
171
+ - `widgetVersion`
172
+ - configuration summary and fields
173
+ - runtime ownership and execution semantics
174
+ - IO mode, static inputs/outputs, or dynamic IO summary
175
+ - capability summaries and supported modes
176
+ - agent authoring hints and examples
177
+
178
+ The SDK client models should then tell you what the client can actually read, write, or mutate safely.
179
+
180
+ It still does not always fully define the mounted widget instance payload.
181
+
182
+ So the concrete sequence is:
183
+
184
+ 1. verify widget type in the CLI registry
185
+ 2. inspect widget detail and extract the richer contract
186
+ 3. inspect the relevant SDK model
187
+ 4. decide whether that contract is enough to author the widget safely
188
+ 5. inspect local payload source only for unresolved instance-level questions
189
+ 6. only then mount or update the workspace widget
190
+
191
+ Use Main Sequence docs/models/examples in this repository to refine:
192
+
193
+ - `props`
194
+ - layout
195
+ - bindings
196
+ - runtime state shape when relevant
197
+
198
+ If widget detail and repository source disagree, or if SDK model and repository source disagree, stop and surface that mismatch instead of guessing.
199
+
200
+ ### 3. Do not invent widget payloads
201
+
202
+ Resolve widget instance payloads from:
203
+
204
+ - widget registry detail
205
+ - SDK client models
206
+ - local typed models
207
+ - local payload builders
208
+ - local examples
209
+ - local schemas
210
+
211
+ If the payload shape is not defined by those sources and cannot be verified, stop.
212
+
213
+ ### 4. Shared workspace state and current-user state are different
214
+
215
+ Treat current-user view state separately from shared workspace structure.
216
+
217
+ Do not assume that runtime or view-state fields belong in the shared workspace document just because they can appear in a write surface.
218
+
219
+ As a default rule:
220
+
221
+ - workspace JSON owns shared structure, widget props, bindings, layout, and shared controls
222
+ - workspace user state owns current-user runtime/view state such as selected control values and widget runtime state when the platform separates them
223
+
224
+ ### 5. Respect runtime ownership
225
+
226
+ When reasoning about mounted widgets, classify them correctly:
227
+
228
+ - `execution-owner`:
229
+ owns canonical runtime execution or data fetching for that widget surface
230
+ - `consumer`:
231
+ reads published upstream data and must not invent its own canonical runtime fetch path
232
+ - `local-ui`:
233
+ local rendering utility with no shared runtime execution ownership
234
+
235
+ Do not design workspace changes that violate the registered runtime ownership model.
236
+
237
+ ### 6. Saved widgets and groups are import-layer snapshots
238
+
239
+ Treat saved widgets and saved groups as import templates, not as live-linked mounted widgets.
240
+
241
+ When importing from the saved-widget layer:
242
+
243
+ - widget type identity is preserved
244
+ - mounted widget instance ids are new
245
+ - imports are not assumed to live-resync from the saved library unless the system explicitly supports that
246
+
247
+ Do not assume a saved-widget record id is the same thing as a mounted workspace widget instance id.
248
+
249
+ ### 7. Prefer widget-scoped mutation for one-widget changes
250
+
251
+ If the user wants to change one mounted widget:
252
+
253
+ - do not default to rewriting the full workspace
254
+ - prefer:
255
+ - `patch_workspace_widget(...)`
256
+ - `delete_workspace_widget(...)`
257
+ - `move_workspace_widget(...)`
258
+
259
+ Only use a full workspace update when the change is truly workspace-wide or coordinated across multiple widgets.
260
+
261
+ ### 8. File-based workspace workflow is the safe default
262
+
263
+ Prefer:
264
+
265
+ 1. write the intended workspace document to a local JSON or YAML file
266
+ 2. create or update through the CLI using that file
267
+ 3. verify through CLI after creation or mutation
268
+
269
+ ## Review Rules
270
+
271
+ When reviewing a workspace task, look for:
272
+
273
+ - guessed widget payloads
274
+ - widget work that skipped CLI registry verification
275
+ - widget work that skipped SDK client model review when one exists
276
+ - unknown or unverified `widgetId` values
277
+ - missing widget instance ids
278
+ - workspace-wide rewrites for one-widget changes
279
+ - shared state mixed incorrectly with current-user runtime state
280
+ - runtime ownership violations such as consumer widgets inventing canonical fetch paths
281
+ - unresolved external resource ids
282
+ - widget trees using structures not supported by the Main Sequence repository source models
283
+
284
+ ## Validation Checklist
285
+
286
+ Do not claim success until you have checked:
287
+
288
+ - the workspace id is correct
289
+ - `widgetId` was verified via:
290
+ - `mainsequence --json cc registered_widget_type list`
291
+ - `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
292
+ - widget detail was reviewed for `widgetVersion`, configuration, runtime, IO, capabilities, agent hints, and examples
293
+ - the relevant SDK client model was reviewed when one exists
294
+ - widget ids and widget instance ids are correct
295
+ - local payload shape was reconciled against the verified widget id, widget-detail contract, and SDK model
296
+ - the chosen mutation mode is correct:
297
+ - full workspace update
298
+ - widget-scoped mutation
299
+ - shared workspace state and current-user state were not mixed incorrectly
300
+ - runtime ownership semantics were respected
301
+ - external resource ids are resolved
302
+ - the resulting workspace exists and matches the intended structure
303
+
304
+ If the task is one-widget mutation, also check:
305
+
306
+ - the correct widget instance id was targeted
307
+ - unrelated widgets were not rewritten
308
+
309
+ If the task involves saved-widget import, also check:
310
+
311
+ - mounted widget instance ids are newly assigned
312
+ - widget type identity was preserved correctly
313
+ - no live-link behavior was assumed unless explicitly supported
314
+
315
+ ## This Skill Must Stop And Escalate When
316
+
317
+ - a widget type does not exist in the registry
318
+ - the widget id is being inferred without registry verification
319
+ - widget detail, SDK model, and repository source disagree materially
320
+ - a widget exists but no SDK or Main Sequence repository source defines the payload shape safely enough to proceed
321
+ - the task needs AppComponent input or output contracts that are not yet defined
322
+ - the target widget instance id is ambiguous
323
+ - the workspace mutation is actually an API or dashboard task rather than a Command Center workspace task
324
+
325
+ Do not guess through widget payloads.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 3.17.44
3
+ Version: 3.17.45
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.17.44"
7
+ version = "3.17.45"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,211 +0,0 @@
1
- ---
2
- name: command-center-workspace-builder
3
- description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces. This skill owns workspace documents, widget instance payload resolution, layout decisions, shared versus user state, and widget-scoped mutation. The primary workflow is CLI registry verification first, then Main Sequence-accessible repository docs/models only when registry metadata is not enough. It does not own AppComponent form contracts, API implementation, or Streamlit dashboards.
4
- ---
5
-
6
- # Command Center Workspace Builder
7
-
8
- ## Overview
9
-
10
- Use this skill when the task is about a Command Center workspace document or a mounted widget inside that workspace.
11
-
12
- This skill is for workspace structure, widget payload resolution, and safe workspace mutation.
13
-
14
- ## This Skill Can Do
15
-
16
- - create a new Command Center workspace
17
- - update an existing workspace document
18
- - add widgets to a workspace
19
- - verify widget types in the CLI registry before mounting or mutating them
20
- - resolve widget instance payloads from Main Sequence docs/models in this repository after registry verification
21
- - decide between full workspace update and widget-scoped mutation
22
- - patch one widget safely
23
- - move or delete a widget safely
24
- - verify shared workspace data versus current-user state
25
- - review a workspace payload for guessed or invalid widget configuration
26
-
27
- ## This Skill Must Not Claim
28
-
29
- This skill must not claim ownership of:
30
-
31
- - AppComponent custom input forms
32
- - widget-facing API response contracts
33
- - generic FastAPI or backend API implementation
34
- - Streamlit dashboard implementation
35
- - DataNode producer design
36
- - SimpleTable schema design
37
-
38
- ## Route Adjacent Work
39
-
40
- - AppComponents and custom forms:
41
- `.agents/skills/command_center/app_components/SKILL.md`
42
- - APIs and FastAPI:
43
- `.agents/skills/application_surfaces/api_surfaces/SKILL.md`
44
- - Streamlit dashboards:
45
- `.agents/skills/dashboards/streamlit/SKILL.md`
46
- - DataNodes:
47
- `.agents/skills/data_publishing/data_nodes/SKILL.md`
48
- - SimpleTables:
49
- `.agents/skills/data_publishing/simple_tables/SKILL.md`
50
-
51
- ## Read First
52
-
53
- 1. Verify the widget catalog through the CLI:
54
- - `mainsequence --json cc registered_widget_type list`
55
- - identify the target `widget_id`
56
- - `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
57
- 2. `docs/knowledge/command_center/workspaces.md`
58
- 3. the local Main Sequence docs/models/examples in this repository that define the widget payloads being mounted
59
- 4. the current CLI docs if the task uses CLI workflow
60
-
61
- If the workspace contains AppComponent widgets, also read:
62
-
63
- 5. `docs/knowledge/command_center/forms.md`
64
- 6. `docs/knowledge/command_center/widget_data_contracts.md`
65
-
66
- ## Inputs This Skill Needs
67
-
68
- Before writing or mutating a workspace, collect or infer:
69
-
70
- - workspace metadata:
71
- title, description, labels, category, source
72
- - layout mode:
73
- custom grid or auto-grid
74
- - desired widgets:
75
- one item per widget with concrete intent
76
- - verified `widget_id` values from the CLI registry
77
- - registry detail payloads for those widget ids
78
- - widget instance ids
79
- - external resource ids required by those widgets
80
- - whether the task is:
81
- - full workspace create/update
82
- - one-widget mutation
83
-
84
- Only inspect Main Sequence docs/models/examples in this repository after registry verification and only to resolve mounted widget shape.
85
-
86
- If a widget lacks both registry verification and a concrete payload source, stop before building the workspace.
87
-
88
- ## Required Decisions
89
-
90
- For every non-trivial workspace task, decide:
91
-
92
- 1. Is this a full workspace change or a one-widget mutation?
93
- 2. Has the widget type been verified through `registered_widget_type list/detail`?
94
- 3. What Main Sequence repository source defines the widget instance shape after registry verification?
95
- 4. Which fields are shared workspace state versus current-user state?
96
- 5. Are bindings and external resource ids fully resolved?
97
-
98
- ## Build Rules
99
-
100
- ### 1. Verify the widget type in the CLI registry first
101
-
102
- Before mutating or mounting a workspace widget:
103
-
104
- 1. run `mainsequence --json cc registered_widget_type list`
105
- 2. identify the target `widget_id`
106
- 3. run `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
107
-
108
- Do not start with secondary repository source inspection. The registry is the first source of truth for widget existence and catalog metadata.
109
-
110
- ### 2. Do not invent widget payloads
111
-
112
- Resolve widget instance payloads from:
113
-
114
- - local typed models
115
- - local payload builders
116
- - local examples
117
- - local schemas
118
-
119
- If the payload shape is not defined locally and cannot be verified, stop.
120
-
121
- ### 2.1 Use local source only to refine payload shape
122
-
123
- A registered widget type proves the widget exists and gives catalog metadata.
124
-
125
- It does not always fully define the mounted widget instance payload.
126
-
127
- So the concrete sequence is:
128
-
129
- 1. verify widget type in the CLI registry
130
- 2. inspect registry detail payload
131
- 3. inspect local payload source
132
- 4. only then mount or update the workspace widget
133
-
134
- Use Main Sequence docs/models/examples in this repository to refine:
135
-
136
- - `props`
137
- - layout
138
- - bindings
139
- - runtime state shape when relevant
140
-
141
- ### 3. Shared workspace state and current-user state are different
142
-
143
- Treat current-user view state separately from shared workspace structure.
144
-
145
- Do not assume that runtime or view-state fields belong in the shared workspace document just because they can appear in a write surface.
146
-
147
- ### 4. Prefer widget-scoped mutation for one-widget changes
148
-
149
- If the user wants to change one mounted widget:
150
-
151
- - do not default to rewriting the full workspace
152
- - prefer:
153
- - `patch_workspace_widget(...)`
154
- - `delete_workspace_widget(...)`
155
- - `move_workspace_widget(...)`
156
-
157
- Only use a full workspace update when the change is truly workspace-wide or coordinated across multiple widgets.
158
-
159
- ### 5. File-based workspace workflow is the safe default
160
-
161
- Prefer:
162
-
163
- 1. write the intended workspace document to a local JSON or YAML file
164
- 2. create or update through the CLI using that file
165
- 3. verify through CLI after creation or mutation
166
-
167
- ## Review Rules
168
-
169
- When reviewing a workspace task, look for:
170
-
171
- - guessed widget payloads
172
- - widget work that skipped CLI registry verification
173
- - unknown or unverified `widgetId` values
174
- - missing widget instance ids
175
- - workspace-wide rewrites for one-widget changes
176
- - shared state mixed incorrectly with current-user runtime state
177
- - unresolved external resource ids
178
- - widget trees using structures not supported by the Main Sequence repository source models
179
-
180
- ## Validation Checklist
181
-
182
- Do not claim success until you have checked:
183
-
184
- - the workspace id is correct
185
- - `widgetId` was verified via:
186
- - `mainsequence --json cc registered_widget_type list`
187
- - `mainsequence --json cc registered_widget_type detail <WIDGET_ID>`
188
- - widget ids and widget instance ids are correct
189
- - local payload shape was reconciled against the verified widget id
190
- - each widget payload comes from a verified Main Sequence repository source
191
- - the chosen mutation mode is correct:
192
- - full workspace update
193
- - widget-scoped mutation
194
- - external resource ids are resolved
195
- - the resulting workspace exists and matches the intended structure
196
-
197
- If the task is one-widget mutation, also check:
198
-
199
- - the correct widget instance id was targeted
200
- - unrelated widgets were not rewritten
201
-
202
- ## This Skill Must Stop And Escalate When
203
-
204
- - a widget type does not exist in the registry
205
- - the widget id is being inferred without registry verification
206
- - a widget exists but no Main Sequence repository source defines the payload shape
207
- - the task needs AppComponent input or output contracts that are not yet defined
208
- - the target widget instance id is ambiguous
209
- - the workspace mutation is actually an API or dashboard task rather than a Command Center workspace task
210
-
211
- Do not guess through widget payloads.
File without changes
File without changes