mainsequence 3.21.0__tar.gz → 4.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mainsequence-3.21.0/mainsequence.egg-info → mainsequence-4.0.3}/PKG-INFO +5 -20
- {mainsequence-3.21.0 → mainsequence-4.0.3}/README.md +4 -8
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/AGENTS.md +6 -13
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +8 -8
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/app_components/SKILL.md +3 -3
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +2 -2
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +14 -14
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +7 -12
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +12 -15
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/data_access/exploration/SKILL.md +18 -22
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +7 -14
- mainsequence-4.0.3/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +155 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +4 -4
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +4 -10
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +3 -3
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +4 -4
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/project_builder/SKILL.md +5 -11
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/bootstrap.py +2 -1
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/api.py +139 -496
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/cli.py +254 -867
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/config.py +117 -58
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/project_status.py +30 -6
- mainsequence-4.0.3/mainsequence/client/__init__.py +16 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/base.py +0 -23
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/data_models.py +1 -1
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/data_sources_interfaces/timescale.py +1 -1
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/models_helpers.py +32 -24
- mainsequence-4.0.3/mainsequence/client/models_metatables.py +405 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/models_tdag.py +123 -535
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/models_user.py +2 -1
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/utils.py +0 -16
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/__init__.py +0 -2
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/base_persist_managers.py +24 -16
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/__init__.py +0 -2
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/build_operations.py +3 -1
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/data_nodes.py +39 -606
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/filters.py +2 -3
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/models.py +2 -7
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/persist_managers.py +11 -8
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/run_operations.py +0 -3
- mainsequence-4.0.3/mainsequence/tdag/meta_tables/__init__.py +55 -0
- mainsequence-4.0.3/mainsequence/tdag/meta_tables/compiled_sql.py +128 -0
- mainsequence-4.0.3/mainsequence/tdag/meta_tables/hashing.py +118 -0
- mainsequence-4.0.3/mainsequence/tdag/meta_tables/sqlalchemy_contracts.py +476 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3/mainsequence.egg-info}/PKG-INFO +5 -20
- mainsequence-4.0.3/mainsequence.egg-info/SOURCES.txt +121 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence.egg-info/requires.txt +0 -14
- {mainsequence-3.21.0 → mainsequence-4.0.3}/pyproject.toml +2 -16
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_cli.py +276 -691
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_client.py +0 -49
- mainsequence-4.0.3/tests/test_data_access_mixin_dimension_audit.py +173 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_data_node_search_join_filters.py +5 -6
- mainsequence-4.0.3/tests/test_data_node_storage_dimension_queries.py +361 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_data_node_update_flow.py +10 -73
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_filter_normalization.py +46 -86
- mainsequence-4.0.3/tests/test_meta_tables_client_models.py +264 -0
- mainsequence-4.0.3/tests/test_meta_tables_sqlalchemy_contracts.py +209 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_project_batch_jobs_from_file.py +0 -5
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_run_configuration.py +9 -45
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_source_table_configuration.py +21 -30
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_update_statistics.py +59 -18
- mainsequence-4.0.3/tests/test_update_uid_guards.py +41 -0
- mainsequence-3.21.0/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -168
- mainsequence-3.21.0/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -223
- mainsequence-3.21.0/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -223
- mainsequence-3.21.0/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -225
- mainsequence-3.21.0/mainsequence/client/__init__.py +0 -9
- mainsequence-3.21.0/mainsequence/client/markets/__init__.py +0 -2
- mainsequence-3.21.0/mainsequence/client/markets/models/__init__.py +0 -5
- mainsequence-3.21.0/mainsequence/client/markets/models/accounts_and_portfolios.py +0 -1047
- mainsequence-3.21.0/mainsequence/client/markets/models/assets.py +0 -1076
- mainsequence-3.21.0/mainsequence/client/markets/models/core.py +0 -72
- mainsequence-3.21.0/mainsequence/client/models_simple_tables.py +0 -1263
- mainsequence-3.21.0/mainsequence/markets/__init__.py +0 -6
- mainsequence-3.21.0/mainsequence/markets/accounts/__init__.py +0 -25
- mainsequence-3.21.0/mainsequence/markets/accounts/data_nodes.py +0 -1163
- mainsequence-3.21.0/mainsequence/markets/instruments/__init__.py +0 -31
- mainsequence-3.21.0/mainsequence/markets/instruments/data_interface/__init__.py +0 -10
- mainsequence-3.21.0/mainsequence/markets/instruments/data_interface/data_interface.py +0 -164
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/__init__.py +0 -10
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/base_instrument.py +0 -104
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/bond.py +0 -2042
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/callability.py +0 -151
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/interest_rate_swap.py +0 -214
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/json_codec.py +0 -631
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/position.py +0 -499
- mainsequence-3.21.0/mainsequence/markets/instruments/instruments/ql_fields.py +0 -347
- mainsequence-3.21.0/mainsequence/markets/instruments/interest_rates/__init__.py +0 -0
- mainsequence-3.21.0/mainsequence/markets/instruments/interest_rates/etl/__init__.py +0 -0
- mainsequence-3.21.0/mainsequence/markets/instruments/interest_rates/etl/curve_codec.py +0 -57
- mainsequence-3.21.0/mainsequence/markets/instruments/interest_rates/etl/nodes.py +0 -162
- mainsequence-3.21.0/mainsequence/markets/instruments/interest_rates/etl/registry.py +0 -83
- mainsequence-3.21.0/mainsequence/markets/instruments/pricing_models/__init__.py +0 -0
- mainsequence-3.21.0/mainsequence/markets/instruments/pricing_models/bond_pricer.py +0 -226
- mainsequence-3.21.0/mainsequence/markets/instruments/pricing_models/indices.py +0 -448
- mainsequence-3.21.0/mainsequence/markets/instruments/pricing_models/indices_builders.py +0 -84
- mainsequence-3.21.0/mainsequence/markets/instruments/pricing_models/swap_pricer.py +0 -542
- mainsequence-3.21.0/mainsequence/markets/instruments/settings.py +0 -14
- mainsequence-3.21.0/mainsequence/markets/instruments/streamlit/__init__.py +0 -24
- mainsequence-3.21.0/mainsequence/markets/instruments/streamlit/streamlit_form_factory.py +0 -837
- mainsequence-3.21.0/mainsequence/markets/instruments/utils.py +0 -30
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/__init__.py +0 -85
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/__init__.py +0 -0
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/prices/__init__.py +0 -1
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/prices/data_nodes.py +0 -882
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/prices/utils.py +0 -11
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -1
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -428
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/__init__.py +0 -5
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/external_weights.py +0 -78
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/fixed_weights.py +0 -78
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/intraday_trend.py +0 -203
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/market_cap.py +0 -309
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/contrib/signals/portfolio_replicator.py +0 -303
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/__init__.py +0 -118
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/base.py +0 -592
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/constants.py +0 -207
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/portfolio_identity.py +0 -135
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/portfolio_metadata.py +0 -140
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/portfolio_weights.py +0 -222
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/portfolios.py +0 -208
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/rebalance_metadata.py +0 -161
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/signal_metadata.py +0 -111
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/signal_weights.py +0 -498
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/data_nodes/storage_initialization.py +0 -215
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/enums.py +0 -20
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/models.py +0 -465
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/portfolio_nodes.py +0 -840
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/resource_factory/__init__.py +0 -0
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -80
- mainsequence-3.21.0/mainsequence/markets/virtualfundbuilder/utils.py +0 -429
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/__init__.py +0 -15
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/filters.py +0 -329
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/models.py +0 -115
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/persist_managers.py +0 -186
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/schema.py +0 -285
- mainsequence-3.21.0/mainsequence/tdag/simple_tables/table_nodes.py +0 -484
- mainsequence-3.21.0/mainsequence.egg-info/SOURCES.txt +0 -197
- mainsequence-3.21.0/tests/test_account_data_nodes.py +0 -808
- mainsequence-3.21.0/tests/test_client_account_models.py +0 -273
- mainsequence-3.21.0/tests/test_client_asset_models.py +0 -80
- mainsequence-3.21.0/tests/test_client_markets_models_compat.py +0 -30
- mainsequence-3.21.0/tests/test_data_access_mixin_dimension_audit.py +0 -105
- mainsequence-3.21.0/tests/test_data_node_storage_dimension_queries.py +0 -688
- mainsequence-3.21.0/tests/test_instruments.py +0 -335
- mainsequence-3.21.0/tests/test_markets_package_compat.py +0 -17
- mainsequence-3.21.0/tests/test_simple_tables_configuration_hashing.py +0 -145
- mainsequence-3.21.0/tests/test_simple_tables_persistence.py +0 -1477
- mainsequence-3.21.0/tests/test_update_uid_guards.py +0 -79
- mainsequence-3.21.0/tests/test_vfb_canonical_data_nodes.py +0 -1373
- mainsequence-3.21.0/tests/test_vfb_contrib_signals.py +0 -220
- {mainsequence-3.21.0 → mainsequence-4.0.3}/LICENSE +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/__main__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/cli/ui.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/client.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/compute_validation.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/defaults.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/logconf.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/__main__.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/config.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/configuration_models.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/data_nodes/utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/filters.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/future_registry.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/pydantic_metadata.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence/tdag/utils.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/setup.cfg +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_auth_precedence.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_command_center_models.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_dependency_extras.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_logconf.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-3.21.0 → mainsequence-4.0.3}/tests/test_workspace_snapshot.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence
|
|
3
|
-
Version:
|
|
3
|
+
Version: 4.0.3
|
|
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
|
|
@@ -73,17 +73,6 @@ Requires-Dist: urllib3
|
|
|
73
73
|
Provides-Extra: local-data
|
|
74
74
|
Requires-Dist: duckdb; extra == "local-data"
|
|
75
75
|
Requires-Dist: pyarrow; extra == "local-data"
|
|
76
|
-
Provides-Extra: virtualfundbuilder
|
|
77
|
-
Requires-Dist: docstring-parser; extra == "virtualfundbuilder"
|
|
78
|
-
Requires-Dist: joblib; extra == "virtualfundbuilder"
|
|
79
|
-
Requires-Dist: pandas-market-calendars; extra == "virtualfundbuilder"
|
|
80
|
-
Requires-Dist: scikit-learn; extra == "virtualfundbuilder"
|
|
81
|
-
Provides-Extra: instruments
|
|
82
|
-
Requires-Dist: matplotlib; extra == "instruments"
|
|
83
|
-
Requires-Dist: QuantLib; extra == "instruments"
|
|
84
|
-
Provides-Extra: instruments-streamlit
|
|
85
|
-
Requires-Dist: streamlit; extra == "instruments-streamlit"
|
|
86
|
-
Requires-Dist: streamlit-aggrid; extra == "instruments-streamlit"
|
|
87
76
|
Provides-Extra: workspace-snapshots
|
|
88
77
|
Requires-Dist: playwright; extra == "workspace-snapshots"
|
|
89
78
|
Dynamic: license-file
|
|
@@ -125,9 +114,7 @@ This repository contains the SDK and the documentation used to build and operate
|
|
|
125
114
|
Main package areas:
|
|
126
115
|
|
|
127
116
|
- `mainsequence.tdag`: data orchestration, `DataNode`s, update workflows, and persistence
|
|
128
|
-
- `mainsequence.client`: API client models for projects, jobs, data node storages,
|
|
129
|
-
- `mainsequence.markets.virtualfundbuilder`: portfolio construction and portfolio time series workflows
|
|
130
|
-
- `mainsequence.markets.instruments`: pricing-oriented market data and instrument tooling
|
|
117
|
+
- `mainsequence.client`: API client models for projects, jobs, data node storages, sharing, and platform resources
|
|
131
118
|
- `mainsequence.cli`: the `mainsequence` command-line interface
|
|
132
119
|
|
|
133
120
|
Repository areas:
|
|
@@ -150,7 +137,7 @@ Recommended entry points:
|
|
|
150
137
|
- Tutorial:
|
|
151
138
|
- [Setting a Project (CLI)](docs/tutorial/setting_a_project.md)
|
|
152
139
|
- [Creating a Data Node](docs/tutorial/creating_a_simple_data_node.md)
|
|
153
|
-
- [Working With
|
|
140
|
+
- [Working With MetaTables](docs/tutorial/working_with_meta_tables.md)
|
|
154
141
|
- [Create Your First API](docs/tutorial/create_your_first_api.md)
|
|
155
142
|
- [Role-Based Access Control](docs/tutorial/role_based_access_control.md)
|
|
156
143
|
- [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
|
|
@@ -158,12 +145,10 @@ Recommended entry points:
|
|
|
158
145
|
- [Data Nodes](docs/knowledge/data_nodes.md)
|
|
159
146
|
- [Command Center](docs/knowledge/command_center/index.md)
|
|
160
147
|
- [Command Center Widget Data Contracts](docs/knowledge/command_center/widget_data_contracts.md)
|
|
161
|
-
- [
|
|
148
|
+
- [MetaTables](docs/knowledge/meta_tables/index.md)
|
|
162
149
|
- [Constants and Secrets](docs/knowledge/infrastructure/constants_and_secrets.md)
|
|
163
150
|
- [Scheduling Jobs](docs/knowledge/infrastructure/scheduling_jobs.md)
|
|
164
151
|
- [Streamlit Dashboards](docs/knowledge/dashboards/streamlit/index.md)
|
|
165
|
-
- [Virtual Fund Builder](docs/knowledge/virtualfundbuilder/index.md)
|
|
166
|
-
- [Instruments](docs/knowledge/instruments/index.md)
|
|
167
152
|
- CLI:
|
|
168
153
|
- [CLI Overview](docs/cli/index.md)
|
|
169
154
|
|
|
@@ -204,7 +189,7 @@ mainsequence project build_local_venv --path .
|
|
|
204
189
|
From there, the normal learning path is:
|
|
205
190
|
|
|
206
191
|
1. create your first `DataNode`
|
|
207
|
-
2. model app-facing data with `
|
|
192
|
+
2. model app-facing relational data with backend-managed `MetaTable`s when needed
|
|
208
193
|
3. add an API or another application surface
|
|
209
194
|
4. understand sharing and RBAC
|
|
210
195
|
5. schedule jobs
|
|
@@ -35,9 +35,7 @@ This repository contains the SDK and the documentation used to build and operate
|
|
|
35
35
|
Main package areas:
|
|
36
36
|
|
|
37
37
|
- `mainsequence.tdag`: data orchestration, `DataNode`s, update workflows, and persistence
|
|
38
|
-
- `mainsequence.client`: API client models for projects, jobs, data node storages,
|
|
39
|
-
- `mainsequence.markets.virtualfundbuilder`: portfolio construction and portfolio time series workflows
|
|
40
|
-
- `mainsequence.markets.instruments`: pricing-oriented market data and instrument tooling
|
|
38
|
+
- `mainsequence.client`: API client models for projects, jobs, data node storages, sharing, and platform resources
|
|
41
39
|
- `mainsequence.cli`: the `mainsequence` command-line interface
|
|
42
40
|
|
|
43
41
|
Repository areas:
|
|
@@ -60,7 +58,7 @@ Recommended entry points:
|
|
|
60
58
|
- Tutorial:
|
|
61
59
|
- [Setting a Project (CLI)](docs/tutorial/setting_a_project.md)
|
|
62
60
|
- [Creating a Data Node](docs/tutorial/creating_a_simple_data_node.md)
|
|
63
|
-
- [Working With
|
|
61
|
+
- [Working With MetaTables](docs/tutorial/working_with_meta_tables.md)
|
|
64
62
|
- [Create Your First API](docs/tutorial/create_your_first_api.md)
|
|
65
63
|
- [Role-Based Access Control](docs/tutorial/role_based_access_control.md)
|
|
66
64
|
- [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
|
|
@@ -68,12 +66,10 @@ Recommended entry points:
|
|
|
68
66
|
- [Data Nodes](docs/knowledge/data_nodes.md)
|
|
69
67
|
- [Command Center](docs/knowledge/command_center/index.md)
|
|
70
68
|
- [Command Center Widget Data Contracts](docs/knowledge/command_center/widget_data_contracts.md)
|
|
71
|
-
- [
|
|
69
|
+
- [MetaTables](docs/knowledge/meta_tables/index.md)
|
|
72
70
|
- [Constants and Secrets](docs/knowledge/infrastructure/constants_and_secrets.md)
|
|
73
71
|
- [Scheduling Jobs](docs/knowledge/infrastructure/scheduling_jobs.md)
|
|
74
72
|
- [Streamlit Dashboards](docs/knowledge/dashboards/streamlit/index.md)
|
|
75
|
-
- [Virtual Fund Builder](docs/knowledge/virtualfundbuilder/index.md)
|
|
76
|
-
- [Instruments](docs/knowledge/instruments/index.md)
|
|
77
73
|
- CLI:
|
|
78
74
|
- [CLI Overview](docs/cli/index.md)
|
|
79
75
|
|
|
@@ -114,7 +110,7 @@ mainsequence project build_local_venv --path .
|
|
|
114
110
|
From there, the normal learning path is:
|
|
115
111
|
|
|
116
112
|
1. create your first `DataNode`
|
|
117
|
-
2. model app-facing data with `
|
|
113
|
+
2. model app-facing relational data with backend-managed `MetaTable`s when needed
|
|
118
114
|
3. add an API or another application surface
|
|
119
115
|
4. understand sharing and RBAC
|
|
120
116
|
5. schedule jobs
|
|
@@ -38,7 +38,7 @@ changes, and validation steps.
|
|
|
38
38
|
Core responsibilities:
|
|
39
39
|
|
|
40
40
|
- translate user intent into the correct Main Sequence implementation path:
|
|
41
|
-
- for data publishing and data pipelines, use `DataNode`s and `
|
|
41
|
+
- for data publishing and data pipelines, use `DataNode`s and `MetaTable`s
|
|
42
42
|
- for serving application or widget-facing surfaces, use `FastAPI`
|
|
43
43
|
- for visualization, confirm the delivery target with the user:
|
|
44
44
|
- if they want something quick for testing or iteration, use Streamlit
|
|
@@ -57,7 +57,7 @@ Core responsibilities:
|
|
|
57
57
|
Typical outcomes include:
|
|
58
58
|
|
|
59
59
|
- build a `DataNode` to publish a data pipeline
|
|
60
|
-
- build a `
|
|
60
|
+
- build a `MetaTable` to record operational or application data
|
|
61
61
|
- build a `FastAPI` API that reads project data and returns widget-ready or
|
|
62
62
|
application-ready responses
|
|
63
63
|
- confirm whether a visualization should be a quick Streamlit surface or a reusable Command Center
|
|
@@ -116,7 +116,7 @@ Delegation rules:
|
|
|
116
116
|
## Main Sequence Source-Of-Truth Rule
|
|
117
117
|
|
|
118
118
|
For any task involving Main Sequence code, CLI usage, DataNodes, orchestration, jobs, dashboards,
|
|
119
|
-
agents, releases,
|
|
119
|
+
agents, releases, artifacts, RBAC, or platform
|
|
120
120
|
validation, always consult the latest relevant Main Sequence documentation before acting.
|
|
121
121
|
|
|
122
122
|
Rules:
|
|
@@ -171,8 +171,8 @@ Typical routing:
|
|
|
171
171
|
`.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
|
|
172
172
|
- DataNodes, updates, identifiers, schema, metadata:
|
|
173
173
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
174
|
-
-
|
|
175
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
174
|
+
- MetaTables, SQLAlchemy contracts, backend-managed registration, and governed operations:
|
|
175
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
176
176
|
- platform data discovery, published table search, and object identification before implementation:
|
|
177
177
|
`.agents/skills/mainsequence/data_access/exploration/SKILL.md`
|
|
178
178
|
- APIs, FastAPI, request and response contracts, and widget-facing API responses:
|
|
@@ -189,14 +189,8 @@ Typical routing:
|
|
|
189
189
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
190
190
|
- RBAC, sharing, constants, secrets, and access verification:
|
|
191
191
|
`.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
|
|
192
|
-
- assets, public asset registration, custom assets, asset categories, and translation tables:
|
|
193
|
-
`.agents/skills/mainsequence/markets_platform/assets_and_translation/SKILL.md`
|
|
194
192
|
- dashboards:
|
|
195
193
|
`.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
|
|
196
|
-
- portfolios and Virtual Fund Builder:
|
|
197
|
-
`.agents/skills/mainsequence/markets_platform/virtualfundbuilder/SKILL.md`
|
|
198
|
-
- instruments and pricing:
|
|
199
|
-
`.agents/skills/mainsequence/markets_platform/instruments_and_pricing/SKILL.md`
|
|
200
194
|
|
|
201
195
|
## Mandatory Startup Sequence
|
|
202
196
|
|
|
@@ -270,8 +264,7 @@ At minimum, verify relevant:
|
|
|
270
264
|
- job runs and logs
|
|
271
265
|
- project images
|
|
272
266
|
- dashboard or agent resources/releases
|
|
273
|
-
- assets
|
|
274
|
-
- portfolios
|
|
267
|
+
- data assets
|
|
275
268
|
- related platform objects used by the project
|
|
276
269
|
|
|
277
270
|
Typical verification commands:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mainsequence-api-surfaces
|
|
3
|
-
description: Use this skill when the task is about building or changing APIs in a Main Sequence repository. In a Main Sequence project, project APIs should be implemented as FastAPI project resources. Unless the user explicitly says the API is standalone or for a non-Command Center client, assume the API is meant to be Command Center integrated, load the related Command Center skills, and use Command Center SDK response models whenever the endpoint can reasonably match them. Main Sequence is platform-first: a Command Center-facing project API is not considered usable until it exists as a FastAPI project resource and has a corresponding FastAPI ResourceRelease. Resource and release creation belong to the orchestration-and-releases skill. This skill owns FastAPI structure, request and response contracts, request user binding, APIDataNode and
|
|
3
|
+
description: Use this skill when the task is about building or changing APIs in a Main Sequence repository. In a Main Sequence project, project APIs should be implemented as FastAPI project resources. Unless the user explicitly says the API is standalone or for a non-Command Center client, assume the API is meant to be Command Center integrated, load the related Command Center skills, and use Command Center SDK response models whenever the endpoint can reasonably match them. Main Sequence is platform-first: a Command Center-facing project API is not considered usable until it exists as a FastAPI project resource and has a corresponding FastAPI ResourceRelease. Resource and release creation belong to the orchestration-and-releases skill. This skill owns FastAPI structure, request and response contracts, request user binding, APIDataNode and MetaTable consumption inside APIs, and exact widget-facing API response contracts. It does not own producer-side DataNode or MetaTable design, workspace payloads, or scheduling and release workflows.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Main Sequence API Surfaces
|
|
@@ -22,7 +22,7 @@ This skill is for FastAPI structure, request/response contracts, request user co
|
|
|
22
22
|
- define request and response models
|
|
23
23
|
- keep route handlers thin and contract-driven
|
|
24
24
|
- use `APIDataNode` to read published DataNode tables
|
|
25
|
-
- use `
|
|
25
|
+
- use `MetaTable.execute_operation(...)` to read governed MetaTable rows
|
|
26
26
|
- add `LoggedUserContextMiddleware` when request-local user context is needed
|
|
27
27
|
- assume Command Center is the default API consumer unless the user clearly says otherwise
|
|
28
28
|
- load the related Command Center skills when the API feeds widgets, AppComponents, or workspaces
|
|
@@ -35,7 +35,7 @@ This skill is for FastAPI structure, request/response contracts, request user co
|
|
|
35
35
|
This skill must not claim ownership of:
|
|
36
36
|
|
|
37
37
|
- DataNode producer design
|
|
38
|
-
-
|
|
38
|
+
- MetaTable schema design
|
|
39
39
|
- workspace document creation or mutation
|
|
40
40
|
- AppComponent custom form design
|
|
41
41
|
- job creation, scheduling, image pinning, or releases
|
|
@@ -46,8 +46,8 @@ This skill must not claim ownership of:
|
|
|
46
46
|
|
|
47
47
|
- DataNodes:
|
|
48
48
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
49
|
-
-
|
|
50
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
49
|
+
- MetaTables:
|
|
50
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
51
51
|
- Command Center workspaces:
|
|
52
52
|
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
53
53
|
- AppComponents and custom forms:
|
|
@@ -105,7 +105,7 @@ If the upstream producer contract is unclear, stop and resolve that first.
|
|
|
105
105
|
For every non-trivial API task, decide:
|
|
106
106
|
|
|
107
107
|
1. Is this route exposing application logic or should the data stay as a producer table?
|
|
108
|
-
2. Should the route read from `APIDataNode`, `
|
|
108
|
+
2. Should the route read from `APIDataNode`, `MetaTable`, or something else?
|
|
109
109
|
3. Does the route need request-local user context?
|
|
110
110
|
4. Is this API serving Command Center by default, or did the user explicitly ask for a different consumer?
|
|
111
111
|
5. Does this task require the AppComponents skill, the workspace-builder skill, or both?
|
|
@@ -211,7 +211,7 @@ A route should mainly:
|
|
|
211
211
|
When reading published data:
|
|
212
212
|
|
|
213
213
|
- use `APIDataNode` for published DataNode tables
|
|
214
|
-
- use `
|
|
214
|
+
- use `MetaTable.execute_operation(...)` for governed MetaTable rows
|
|
215
215
|
|
|
216
216
|
Do not rebuild producer logic just because the API needs the result.
|
|
217
217
|
|
|
@@ -353,7 +353,7 @@ Do not claim success until you have checked:
|
|
|
353
353
|
- every structured route has an explicit `response_model`
|
|
354
354
|
- route handlers are thin
|
|
355
355
|
- `APIDataNode` is used when the route reads a published DataNode
|
|
356
|
-
- `
|
|
356
|
+
- `MetaTable.execute_operation(...)` is used when the route reads governed MetaTable rows
|
|
357
357
|
- middleware is present when request-local user context is required
|
|
358
358
|
- middleware is absent when the route does not consume `request.state.user`
|
|
359
359
|
- endpoints built specifically for workspace visualizations live under `/workspace`
|
|
@@ -38,7 +38,7 @@ This skill must not claim ownership of:
|
|
|
38
38
|
- workspace document creation or widget layout
|
|
39
39
|
- generic FastAPI route architecture
|
|
40
40
|
- tabular or operational data producer design
|
|
41
|
-
-
|
|
41
|
+
- MetaTable schema design
|
|
42
42
|
- Streamlit dashboard implementation
|
|
43
43
|
- scheduling, image pinning, resources, or releases
|
|
44
44
|
|
|
@@ -54,8 +54,8 @@ This skill must not claim ownership of:
|
|
|
54
54
|
`.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md`
|
|
55
55
|
- Connection-backed data access and query contract selection:
|
|
56
56
|
`.agents/skills/mainsequence/command_center/connections/SKILL.md`
|
|
57
|
-
-
|
|
58
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
57
|
+
- MetaTables:
|
|
58
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
59
59
|
- Jobs, images, resources, and releases:
|
|
60
60
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
61
61
|
- Streamlit dashboards:
|
|
@@ -184,7 +184,7 @@ Good answers should:
|
|
|
184
184
|
|
|
185
185
|
Better answer styles are:
|
|
186
186
|
|
|
187
|
-
- "This workspace is showing current positions by
|
|
187
|
+
- "This workspace is showing current positions by entity, so it can answer exposure questions but not execution-history questions."
|
|
188
188
|
- "The chart indicates that the curve moves downward after the short end, so the interpretable takeaway is the shape of the discount curve, not the raw number of plotted points."
|
|
189
189
|
- "The source widget is configured, but the user-facing table is empty, so the workspace does not currently support a business conclusion from the displayed data."
|
|
190
190
|
- "This transform widget only prepares the dataset. The answer to the user's question comes from the downstream chart, which shows the filtered result."
|
|
@@ -202,7 +202,7 @@ The default goal is not to describe the dashboard mechanically. The goal is to e
|
|
|
202
202
|
|
|
203
203
|
Prefer answers like:
|
|
204
204
|
|
|
205
|
-
- "The workspace is showing the current composition of the
|
|
205
|
+
- "The workspace is showing the current composition of the dataset, so the relevant interpretation is concentration by holding, not just the fact that a table exists."
|
|
206
206
|
- "The dashboard is answering a pricing question through the downstream chart, which shows the resulting curve behavior. The transform and source widgets are only intermediate steps."
|
|
207
207
|
- "This workspace can answer whether the strategy is long or short a given exposure, but it cannot answer why the position was created because no execution or rationale data is shown."
|
|
208
208
|
|
|
@@ -44,7 +44,7 @@ This skill must not claim ownership of:
|
|
|
44
44
|
- generic FastAPI or backend API implementation
|
|
45
45
|
- Streamlit dashboard implementation
|
|
46
46
|
- tabular or operational data producer design
|
|
47
|
-
-
|
|
47
|
+
- MetaTable schema design
|
|
48
48
|
|
|
49
49
|
## Route Adjacent Work
|
|
50
50
|
|
|
@@ -62,8 +62,8 @@ This skill must not claim ownership of:
|
|
|
62
62
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
63
63
|
- Streamlit dashboards:
|
|
64
64
|
`.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
|
|
65
|
-
-
|
|
66
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
65
|
+
- MetaTables:
|
|
66
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
67
67
|
|
|
68
68
|
## Read First
|
|
69
69
|
|
|
@@ -411,11 +411,11 @@ Request/response source props:
|
|
|
411
411
|
|
|
412
412
|
```json
|
|
413
413
|
{
|
|
414
|
-
"connectionRef": { "id": 123, "typeId": "mainsequence.
|
|
415
|
-
"queryModelId": "
|
|
414
|
+
"connectionRef": { "id": 123, "typeId": "mainsequence.metatable" },
|
|
415
|
+
"queryModelId": "metatable-sql",
|
|
416
416
|
"query": {
|
|
417
|
-
"kind": "
|
|
418
|
-
"sql": "select * from {{
|
|
417
|
+
"kind": "metatable-sql",
|
|
418
|
+
"sql": "select * from {{meta_table}} limit 500"
|
|
419
419
|
},
|
|
420
420
|
"timeRangeMode": "dashboard",
|
|
421
421
|
"variables": {},
|
|
@@ -440,7 +440,7 @@ Stream source props:
|
|
|
440
440
|
|
|
441
441
|
```json
|
|
442
442
|
{
|
|
443
|
-
"connectionRef": { "id": 123, "typeId": "
|
|
443
|
+
"connectionRef": { "id": 123, "typeId": "example.stream-data" },
|
|
444
444
|
"queryModelId": "ticker-stream",
|
|
445
445
|
"query": {
|
|
446
446
|
"kind": "ticker-stream",
|
|
@@ -740,9 +740,9 @@ Owner widget:
|
|
|
740
740
|
"props": {
|
|
741
741
|
"graphSourceMode": "connection",
|
|
742
742
|
"embeddedConnectionQuery": {
|
|
743
|
-
"connectionRef": { "id": 123, "typeId": "mainsequence.
|
|
744
|
-
"queryModelId": "
|
|
745
|
-
"query": { "kind": "
|
|
743
|
+
"connectionRef": { "id": 123, "typeId": "mainsequence.metatable" },
|
|
744
|
+
"queryModelId": "metatable-sql",
|
|
745
|
+
"query": { "kind": "metatable-sql", "sql": "select * from {{meta_table}}" }
|
|
746
746
|
}
|
|
747
747
|
},
|
|
748
748
|
"bindings": {
|
|
@@ -762,9 +762,9 @@ Hidden source widget:
|
|
|
762
762
|
"widgetId": "connection-query",
|
|
763
763
|
"title": "Graph Source",
|
|
764
764
|
"props": {
|
|
765
|
-
"connectionRef": { "id": 123, "typeId": "mainsequence.
|
|
766
|
-
"queryModelId": "
|
|
767
|
-
"query": { "kind": "
|
|
765
|
+
"connectionRef": { "id": 123, "typeId": "mainsequence.metatable" },
|
|
766
|
+
"queryModelId": "metatable-sql",
|
|
767
|
+
"query": { "kind": "metatable-sql", "sql": "select * from {{meta_table}}" }
|
|
768
768
|
},
|
|
769
769
|
"managedBy": {
|
|
770
770
|
"ownerInstanceId": "graph-1",
|
|
@@ -39,8 +39,8 @@ This skill must not claim ownership of:
|
|
|
39
39
|
`.agents/skills/mainsequence/command_center/connections/SKILL.md`
|
|
40
40
|
- APIs and FastAPI:
|
|
41
41
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
42
|
-
-
|
|
43
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
42
|
+
- MetaTables:
|
|
43
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
44
44
|
- Jobs, images, resources, and releases:
|
|
45
45
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
46
46
|
- Streamlit dashboards:
|
|
@@ -66,9 +66,9 @@ Before producing a workspace design, collect or infer:
|
|
|
66
66
|
- the business question or workflow the workspace should support
|
|
67
67
|
- the intended users and their decisions
|
|
68
68
|
- the primary data objects:
|
|
69
|
-
-
|
|
70
|
-
- assets
|
|
71
|
-
-
|
|
69
|
+
- MetaTables
|
|
70
|
+
- data assets
|
|
71
|
+
- domain records
|
|
72
72
|
- jobs
|
|
73
73
|
- APIs
|
|
74
74
|
- agents
|
|
@@ -181,12 +181,7 @@ mainsequence cc registered_widget_type detail <WIDGET_ID> --json
|
|
|
181
181
|
- use the registered statistic widget for KPIs, single-value summaries, status metrics, and compact numerical cards derived from a bound tabular dataset
|
|
182
182
|
- use statistic widgets when the user needs an at-a-glance answer rather than a full chart or table
|
|
183
183
|
- use `echarts-spec` when the visualization is non-standard, needs richer chart semantics, and a general ECharts chart is the right fit; this chart normally needs an AppComponent or API-backed upstream binding
|
|
184
|
-
- use `lightweight-chart-ts-spec` when the visualization is non-standard
|
|
185
|
-
|
|
186
|
-
#### Markets and portfolio views:
|
|
187
|
-
|
|
188
|
-
- use market widgets such as price, positions, curve, and zero-curve widgets when the workspace is about market data, portfolio inspection, or instrument analytics
|
|
189
|
-
- verify the exact market widget ids and contracts from the registry before proposing them
|
|
184
|
+
- use `lightweight-chart-ts-spec` when the visualization is non-standard or time-series heavy; this chart normally needs an AppComponent or API-backed upstream binding
|
|
190
185
|
|
|
191
186
|
#### Infrastructure and lineage:
|
|
192
187
|
|
|
@@ -259,7 +254,7 @@ If the design needs data or behavior that does not exist yet, route it explicitl
|
|
|
259
254
|
- new or refreshed time-series/data pipeline:
|
|
260
255
|
data publishing skill
|
|
261
256
|
- operational/application records:
|
|
262
|
-
|
|
257
|
+
MetaTable skill
|
|
263
258
|
- widget-facing backend endpoint:
|
|
264
259
|
API surfaces skill
|
|
265
260
|
- custom form or interaction:
|
{mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mainsequence-dashboards-streamlit
|
|
3
|
-
description: Use this skill when the task is about building a Streamlit dashboard in a Main Sequence project. This skill owns dashboard folder structure, app-owned page bootstrapping, sidebar and session patterns,
|
|
3
|
+
description: Use this skill when the task is about building a Streamlit dashboard in a Main Sequence project. This skill owns dashboard folder structure, app-owned page bootstrapping, sidebar and session patterns, and dashboard-specific validation rules. It does not own FastAPI APIs, Command Center workspace documents, or release orchestration semantics.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Main Sequence Streamlit Dashboards
|
|
@@ -14,7 +14,6 @@ This skill is for:
|
|
|
14
14
|
- dashboard folder structure
|
|
15
15
|
- app-owned Streamlit page bootstrapping
|
|
16
16
|
- app-owned Streamlit helpers and components
|
|
17
|
-
- optional instrument form rendering through `mainsequence.markets.instruments.streamlit`
|
|
18
17
|
- dashboard-side reads from platform data products
|
|
19
18
|
|
|
20
19
|
## This Skill Can Do
|
|
@@ -24,8 +23,8 @@ This skill is for:
|
|
|
24
23
|
- `app.py`
|
|
25
24
|
- `README.md`
|
|
26
25
|
- choose a plain Streamlit page bootstrap using `st.set_page_config(...)`
|
|
27
|
-
- review dashboard-owned helpers for
|
|
28
|
-
- use
|
|
26
|
+
- review dashboard-owned helpers for entity selection, effective date settings, and user display
|
|
27
|
+
- use model-driven form helpers when the dashboard edits rich Pydantic models
|
|
29
28
|
- review dashboard reads from `APIDataNode` and other platform objects from the dashboard side
|
|
30
29
|
- keep dashboard implementation aligned with Main Sequence packaging and release expectations
|
|
31
30
|
|
|
@@ -38,7 +37,7 @@ This skill must not claim ownership of:
|
|
|
38
37
|
- AppComponent contracts
|
|
39
38
|
- project-resource or release orchestration semantics
|
|
40
39
|
- DataNode producer implementation
|
|
41
|
-
-
|
|
40
|
+
- MetaTable schema design
|
|
42
41
|
|
|
43
42
|
## Route Adjacent Work
|
|
44
43
|
|
|
@@ -52,15 +51,14 @@ This skill must not claim ownership of:
|
|
|
52
51
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
53
52
|
- DataNodes:
|
|
54
53
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
55
|
-
-
|
|
56
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
54
|
+
- MetaTables:
|
|
55
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
57
56
|
|
|
58
57
|
## Read First
|
|
59
58
|
|
|
60
59
|
1. `docs/tutorial/dashboards/streamlit/streamlit_integration_1.md`
|
|
61
60
|
2. `docs/tutorial/dashboards/streamlit/streamlit_integration_2.md`
|
|
62
61
|
3. `docs/knowledge/dashboards/streamlit/index.md`
|
|
63
|
-
4. `docs/knowledge/dashboards/streamlit/instrument_forms.md`
|
|
64
62
|
|
|
65
63
|
If the dashboard is being deployed or released, also read:
|
|
66
64
|
|
|
@@ -81,9 +79,9 @@ Before changing a Streamlit dashboard, collect or infer:
|
|
|
81
79
|
- plain Streamlit only
|
|
82
80
|
- app-owned helper components
|
|
83
81
|
- whether the dashboard works with:
|
|
84
|
-
- assets
|
|
82
|
+
- data assets
|
|
85
83
|
- valuation dates
|
|
86
|
-
-
|
|
84
|
+
- model configuration forms
|
|
87
85
|
- which platform data products the dashboard reads
|
|
88
86
|
|
|
89
87
|
If the dashboard root or entrypoint is unclear, stop before changing packaging-sensitive behavior.
|
|
@@ -96,7 +94,7 @@ For every non-trivial Streamlit dashboard task, decide:
|
|
|
96
94
|
2. Does the root contain both `app.py` and `README.md`?
|
|
97
95
|
3. What page setup and app-owned helper structure should the dashboard use?
|
|
98
96
|
4. Which app-owned helper components should be reused instead of duplicating UI code?
|
|
99
|
-
5. Does the dashboard need model-driven
|
|
97
|
+
5. Does the dashboard need model-driven forms?
|
|
100
98
|
6. Is the task really dashboard implementation, or is it actually an API, AppComponent, or release problem?
|
|
101
99
|
|
|
102
100
|
## Build Rules
|
|
@@ -146,8 +144,7 @@ Do not push producer semantics, release orchestration, or unrelated API logic in
|
|
|
146
144
|
|
|
147
145
|
Examples:
|
|
148
146
|
|
|
149
|
-
- keep
|
|
150
|
-
- use `mainsequence.markets.instruments.streamlit` for rich model-driven instrument forms when the optional extra is installed
|
|
147
|
+
- keep logged-user display as app-owned Streamlit helpers
|
|
151
148
|
- use `APIDataNode.build_from_identifier(...)` when a dashboard knows which published table it needs to read
|
|
152
149
|
|
|
153
150
|
Do not push general-purpose dashboard UI helpers into the SDK.
|
|
@@ -169,7 +166,7 @@ When reviewing a Streamlit dashboard task, look for:
|
|
|
169
166
|
- missing `README.md` next to `app.py`
|
|
170
167
|
- stale imports from `mainsequence.dashboards.streamlit`
|
|
171
168
|
- missing Streamlit dependencies in the dashboard project when the app imports Streamlit directly
|
|
172
|
-
- hand-built model forms that should use
|
|
169
|
+
- hand-built model forms that should use model-driven helpers
|
|
173
170
|
- dashboard code taking on API or release responsibilities
|
|
174
171
|
- inconsistent page structure across a multipage app
|
|
175
172
|
- dashboard logic that reads platform objects in an unclear or fragile way
|
|
@@ -182,7 +179,7 @@ Do not claim success until you have checked:
|
|
|
182
179
|
- `README.md` exists next to `app.py`
|
|
183
180
|
- pages use clear app-owned Streamlit setup
|
|
184
181
|
- shared UI helper reuse is intentional and local to the dashboard project
|
|
185
|
-
-
|
|
182
|
+
- model forms use the model-driven helpers when rich domain models are involved
|
|
186
183
|
- the dashboard reads the intended published data products
|
|
187
184
|
- the task did not confuse dashboard implementation with release orchestration or API design
|
|
188
185
|
|
{mainsequence-3.21.0 → mainsequence-4.0.3}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mainsequence-data-exploration
|
|
3
|
-
description: Use this skill when the task is to discover what `DataNode` or `
|
|
3
|
+
description: Use this skill when the task is to discover what `DataNode` or `MetaTable` data already exists on the Main Sequence platform before implementation starts.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Main Sequence Data Exploration
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Use this skill when the task is about discovering what `DataNode` or `
|
|
10
|
+
Use this skill when the task is about discovering what `DataNode` or `MetaTable` data is already available on the platform before implementation starts.
|
|
11
11
|
|
|
12
12
|
This skill is for discovery only.
|
|
13
13
|
|
|
14
14
|
It helps answer questions such as:
|
|
15
15
|
|
|
16
16
|
- what published data already exists on this platform
|
|
17
|
-
- whether the right surface is a `DataNode` or `
|
|
18
|
-
- which identifier, storage
|
|
17
|
+
- whether the right surface is a `DataNode` or `MetaTable`
|
|
18
|
+
- which identifier, storage UID, or object UID should be used
|
|
19
19
|
- what metadata is available for those objects
|
|
20
20
|
- what still needs to be clarified before implementation starts
|
|
21
21
|
|
|
22
22
|
## This Skill Can Do
|
|
23
23
|
|
|
24
24
|
- discover published `DataNode` tables through the CLI
|
|
25
|
-
- inspect published table identifiers, storage
|
|
25
|
+
- inspect published table identifiers, storage UIDs, and metadata
|
|
26
26
|
- search for tables by keyword, description, or column name
|
|
27
27
|
- inspect organization-visible table identifiers
|
|
28
|
-
- inspect `
|
|
28
|
+
- inspect registered `MetaTable` objects through the SDK client
|
|
29
29
|
- summarize what data is available, what is missing, and what evidence supports that conclusion
|
|
30
30
|
|
|
31
31
|
## This Skill Must Not Claim
|
|
@@ -33,7 +33,7 @@ It helps answer questions such as:
|
|
|
33
33
|
This skill must not claim ownership of:
|
|
34
34
|
|
|
35
35
|
- producing or modifying `DataNode` pipelines
|
|
36
|
-
- designing `
|
|
36
|
+
- designing `MetaTable` registration or operation behavior
|
|
37
37
|
- deciding code-level read patterns for discovered datasets
|
|
38
38
|
- building APIs or dashboards
|
|
39
39
|
- scheduling jobs, images, or releases
|
|
@@ -47,16 +47,14 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
|
|
|
47
47
|
`.agents/skills/mainsequence/project_builder/SKILL.md`
|
|
48
48
|
- `DataNode` creation or modification:
|
|
49
49
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
50
|
-
- `
|
|
51
|
-
`.agents/skills/mainsequence/data_publishing/
|
|
50
|
+
- `MetaTable` registration or operation work:
|
|
51
|
+
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
52
52
|
- FastAPI or application-facing implementation:
|
|
53
53
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
54
54
|
- Streamlit dashboards:
|
|
55
55
|
`.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
|
|
56
56
|
- Command Center surfaces:
|
|
57
57
|
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
58
|
-
- market-specific object discovery:
|
|
59
|
-
`.agents/skills/mainsequence/markets_platform/assets_and_translation/SKILL.md`
|
|
60
58
|
- project-state reconciliation after exploration:
|
|
61
59
|
`.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
|
|
62
60
|
- blocker and failure analysis:
|
|
@@ -67,7 +65,7 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
|
|
|
67
65
|
1. `AGENTS.md`
|
|
68
66
|
2. `docs/cli/index.md`
|
|
69
67
|
3. `docs/knowledge/data_nodes.md`
|
|
70
|
-
4. `docs/knowledge/
|
|
68
|
+
4. `docs/knowledge/meta_tables/index.md` when the exploration touches row-oriented storage
|
|
71
69
|
|
|
72
70
|
## Inputs This Skill Needs
|
|
73
71
|
|
|
@@ -76,14 +74,14 @@ Before exploring, collect or infer:
|
|
|
76
74
|
- the business question being asked
|
|
77
75
|
- whether the user is exploring organization-wide data or project-scoped data
|
|
78
76
|
- whether the target is a published table or a row-oriented table
|
|
79
|
-
- whether the user already knows an identifier, keyword, or object
|
|
77
|
+
- whether the user already knows an identifier, keyword, or object UID
|
|
80
78
|
- whether metadata discovery alone answers the question
|
|
81
79
|
|
|
82
80
|
## Required Decisions
|
|
83
81
|
|
|
84
82
|
For every non-trivial exploration task, decide:
|
|
85
83
|
|
|
86
|
-
1. Is the data surface a `DataNode` or `
|
|
84
|
+
1. Is the data surface a `DataNode` or `MetaTable`?
|
|
87
85
|
2. Do we know the identifier already, or do we need to search first?
|
|
88
86
|
3. What metadata or object details are needed to complete the discovery?
|
|
89
87
|
4. Which implementation skill should receive the handoff after discovery?
|
|
@@ -110,13 +108,11 @@ Typical commands include:
|
|
|
110
108
|
- `mainsequence data-node list`
|
|
111
109
|
- `mainsequence data-node list --show-filters`
|
|
112
110
|
- `mainsequence data-node list --filter KEY=VALUE`
|
|
113
|
-
- `mainsequence data-node detail <
|
|
114
|
-
- `mainsequence simple_table list`
|
|
115
|
-
- `mainsequence simple_table detail <SIMPLE_TABLE_ID>`
|
|
111
|
+
- `mainsequence data-node detail <DATA_NODE_STORAGE_UID>`
|
|
116
112
|
|
|
117
113
|
### 2. Stop at discovery boundaries
|
|
118
114
|
|
|
119
|
-
Use the CLI to identify what exists and collect the relevant identifiers, object
|
|
115
|
+
Use the CLI or SDK client to identify what exists and collect the relevant identifiers, object UIDs, and metadata.
|
|
120
116
|
|
|
121
117
|
Do not define code-level read patterns here.
|
|
122
118
|
|
|
@@ -131,7 +127,7 @@ For `DataNode` discovery specifically:
|
|
|
131
127
|
When you say data exists, include the evidence you used:
|
|
132
128
|
|
|
133
129
|
- identifier
|
|
134
|
-
- storage
|
|
130
|
+
- storage UID or object UID
|
|
135
131
|
- object type
|
|
136
132
|
- command used to discover it
|
|
137
133
|
- metadata or filter evidence when available
|
|
@@ -143,7 +139,7 @@ Once the discovery is complete, hand off to the correct implementation skill.
|
|
|
143
139
|
Examples:
|
|
144
140
|
|
|
145
141
|
- if the task is about publishing or modifying time-series data, hand off to `.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
146
|
-
- if the task is about row-oriented operational data, hand off to `.agents/skills/mainsequence/data_publishing/
|
|
142
|
+
- if the task is about row-oriented operational data, hand off to `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
147
143
|
- if the task is about APIs or dashboards, hand off to the relevant surface skill after discovery is complete
|
|
148
144
|
|
|
149
145
|
## Review Rules
|
|
@@ -151,7 +147,7 @@ Examples:
|
|
|
151
147
|
When reviewing an exploration result, look for:
|
|
152
148
|
|
|
153
149
|
- a discovery claim without CLI evidence
|
|
154
|
-
- confusion between `DataNode` and `
|
|
150
|
+
- confusion between `DataNode` and `MetaTable`
|
|
155
151
|
- jumping into implementation work before discovery is complete
|
|
156
152
|
- claiming implementation conclusions from a discovery-only pass
|
|
157
153
|
|
|
@@ -161,7 +157,7 @@ Do not claim exploration success until you have checked:
|
|
|
161
157
|
|
|
162
158
|
- the correct platform surface was identified
|
|
163
159
|
- CLI discovery was used first
|
|
164
|
-
- existing identifiers or object
|
|
160
|
+
- existing identifiers or object UIDs were captured
|
|
165
161
|
- the result clearly distinguishes:
|
|
166
162
|
- what exists
|
|
167
163
|
- what is missing
|