mainsequence 5.0.2__tar.gz → 6.0.6__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-5.0.2 → mainsequence-6.0.6}/PKG-INFO +16 -10
- {mainsequence-5.0.2 → mainsequence-6.0.6}/README.md +6 -2
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/AGENTS.md +8 -21
- mainsequence-6.0.6/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +205 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_access/exploration/SKILL.md +6 -8
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +2 -6
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +4 -9
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +1 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +52 -5
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +1 -3
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +42 -63
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/sdk_project_execution/SKILL.md +39 -13
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/bootstrap.py +1 -2
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/api.py +326 -1087
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/browser_auth.py +87 -3
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/cli.py +645 -2621
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/migrations.py +32 -24
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/project_status.py +7 -17
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/__init__.py +0 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/agent_runtime_models.py +322 -72
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/base.py +24 -44
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/client.py +1 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/metatables/core.py +275 -350
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/models_foundry.py +249 -200
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/models_helpers.py +33 -167
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/models_user.py +17 -31
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/utils.py +4 -4
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/logconf.py +2 -2
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/compiled_sql/v1.py +1 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/build_operations.py +4 -3
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/data_nodes.py +5 -16
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/persist_managers.py +5 -9
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/__init__.py +5 -5
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/sqlalchemy_contracts.py +11 -11
- mainsequence-6.0.6/mainsequence/project_skills.py +755 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/runtime_flags.py +1 -2
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/PKG-INFO +16 -10
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/SOURCES.txt +3 -40
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/requires.txt +10 -8
- {mainsequence-5.0.2 → mainsequence-6.0.6}/pyproject.toml +27 -17
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_auth_precedence.py +3 -3
- mainsequence-6.0.6/tests/test_canonical_api_route_contract.py +173 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_cli.py +1254 -2076
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_cli_browser_auth.py +155 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_cli_migrations.py +34 -37
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_client.py +1 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_data_access_mixin_dimension_audit.py +2 -26
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_data_node_storage_dimension_queries.py +5 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_data_node_update_flow.py +10 -38
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_dependency_extras.py +2 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_filter_normalization.py +322 -29
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_logconf.py +1 -1
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_meta_tables_client_models.py +51 -31
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_meta_tables_sqlalchemy_contracts.py +19 -31
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_models_user_request_bound_auth.py +5 -5
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_pod_project_resolution.py +320 -150
- mainsequence-6.0.6/tests/test_project_batch_jobs_from_file.py +119 -0
- mainsequence-6.0.6/tests/test_project_branch_contract.py +225 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_project_skills.py +298 -49
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_run_configuration.py +27 -26
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_sqlite_interface_dimensions.py +4 -2
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_update_uid_guards.py +0 -1
- mainsequence-5.0.2/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -402
- mainsequence-5.0.2/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -532
- mainsequence-5.0.2/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -296
- mainsequence-5.0.2/agent_scaffold/skills/command_center/connections/SKILL.md +0 -236
- mainsequence-5.0.2/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +0 -458
- mainsequence-5.0.2/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -333
- mainsequence-5.0.2/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -232
- mainsequence-5.0.2/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -244
- mainsequence-5.0.2/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -917
- mainsequence-5.0.2/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -320
- mainsequence-5.0.2/agent_scaffold/skills/ms-markets/SKILL.md +0 -51
- mainsequence-5.0.2/mainsequence/client/command_center/__init__.py +0 -8
- mainsequence-5.0.2/mainsequence/client/command_center/app_component.py +0 -154
- mainsequence-5.0.2/mainsequence/client/command_center/connections.py +0 -680
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/__init__.py +0 -5
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -204
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/response_mapping.py +0 -79
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/table_visuals.py +0 -183
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/tabular.py +0 -284
- mainsequence-5.0.2/mainsequence/client/command_center/contracts/ui.py +0 -23
- mainsequence-5.0.2/mainsequence/client/command_center/data_models.py +0 -324
- mainsequence-5.0.2/mainsequence/client/command_center/providers/__init__.py +0 -1
- mainsequence-5.0.2/mainsequence/client/command_center/providers/adapter_from_api.py +0 -153
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/__init__.py +0 -5
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/bindings.py +0 -78
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/connection_query.py +0 -120
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/registry.py +0 -46
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/table.py +0 -455
- mainsequence-5.0.2/mainsequence/client/command_center/widgets/tabular_transform.py +0 -410
- mainsequence-5.0.2/mainsequence/client/command_center/workspace.py +0 -502
- mainsequence-5.0.2/mainsequence/client/command_center/workspace_snapshot.py +0 -551
- mainsequence-5.0.2/mainsequence/client/command_center/workspaces/__init__.py +0 -2
- mainsequence-5.0.2/mainsequence/client/command_center/workspaces/documents.py +0 -43
- mainsequence-5.0.2/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -40
- mainsequence-5.0.2/mainsequence/project_skills.py +0 -620
- mainsequence-5.0.2/tests/test_command_center_app_component_models.py +0 -92
- mainsequence-5.0.2/tests/test_command_center_data_models.py +0 -107
- mainsequence-5.0.2/tests/test_command_center_models.py +0 -1020
- mainsequence-5.0.2/tests/test_command_center_table_contracts.py +0 -177
- mainsequence-5.0.2/tests/test_command_center_tabular_transform.py +0 -212
- mainsequence-5.0.2/tests/test_project_batch_jobs_from_file.py +0 -237
- mainsequence-5.0.2/tests/test_workspace_snapshot.py +0 -201
- {mainsequence-5.0.2 → mainsequence-6.0.6}/LICENSE +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/__main__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/config.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/cli/ui.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/defaults.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/setup.cfg +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_instrumentation.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_schema_names.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_secret_client_model.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-5.0.2 → mainsequence-6.0.6}/tests/test_update_statistics.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence
|
|
3
|
-
Version:
|
|
3
|
+
Version: 6.0.6
|
|
4
4
|
Summary: Main Sequence SDK
|
|
5
5
|
Author-email: Main Sequence GmbH <dev@main-sequence.io>
|
|
6
6
|
License-Expression: LicenseRef-MainSequence-Proprietary
|
|
@@ -15,7 +15,7 @@ Description-Content-Type: text/markdown
|
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: alembic>=1.18.4
|
|
17
17
|
Requires-Dist: cachetools
|
|
18
|
-
Requires-Dist: click>=8.3.
|
|
18
|
+
Requires-Dist: click>=8.3.3
|
|
19
19
|
Requires-Dist: concurrent-log-handler
|
|
20
20
|
Requires-Dist: numpy
|
|
21
21
|
Requires-Dist: opentelemetry-api
|
|
@@ -23,22 +23,24 @@ Requires-Dist: opentelemetry-exporter-otlp
|
|
|
23
23
|
Requires-Dist: opentelemetry-sdk
|
|
24
24
|
Requires-Dist: packaging>=24.2
|
|
25
25
|
Requires-Dist: pandas
|
|
26
|
+
Requires-Dist: protobuf>=6.33.5
|
|
26
27
|
Requires-Dist: psutil
|
|
27
28
|
Requires-Dist: psycopg2>=2.9.12
|
|
28
29
|
Requires-Dist: pydantic<3,>=2.11
|
|
30
|
+
Requires-Dist: pygments>=2.20.0
|
|
29
31
|
Requires-Dist: pyyaml
|
|
30
|
-
Requires-Dist: requests
|
|
32
|
+
Requires-Dist: requests>=2.33.0
|
|
31
33
|
Requires-Dist: sqlalchemy<3,>=2
|
|
32
34
|
Requires-Dist: starlette
|
|
33
35
|
Requires-Dist: structlog
|
|
34
36
|
Requires-Dist: tqdm
|
|
35
37
|
Requires-Dist: typer
|
|
36
|
-
Requires-Dist: urllib3
|
|
38
|
+
Requires-Dist: urllib3>=2.7.0
|
|
39
|
+
Provides-Extra: fastapi
|
|
40
|
+
Requires-Dist: fastapi<1,>=0.115; extra == "fastapi"
|
|
37
41
|
Provides-Extra: local-data
|
|
38
|
-
Requires-Dist: duckdb; extra == "local-data"
|
|
39
|
-
Requires-Dist: pyarrow; extra == "local-data"
|
|
40
|
-
Provides-Extra: workspace-snapshots
|
|
41
|
-
Requires-Dist: playwright; extra == "workspace-snapshots"
|
|
42
|
+
Requires-Dist: duckdb>=1.4.2; extra == "local-data"
|
|
43
|
+
Requires-Dist: pyarrow>=23.0.1; extra == "local-data"
|
|
42
44
|
Dynamic: license-file
|
|
43
45
|
|
|
44
46
|
<p align="center">
|
|
@@ -107,8 +109,6 @@ Recommended entry points:
|
|
|
107
109
|
- [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
|
|
108
110
|
- Knowledge:
|
|
109
111
|
- [Data Nodes](docs/knowledge/data_nodes.md)
|
|
110
|
-
- [Command Center](docs/knowledge/command_center/index.md)
|
|
111
|
-
- [Command Center Widget Data Contracts](docs/knowledge/command_center/widget_data_contracts.md)
|
|
112
112
|
- [MetaTables](docs/knowledge/meta_tables/index.md)
|
|
113
113
|
- [Constants and Secrets](docs/knowledge/infrastructure/constants_and_secrets.md)
|
|
114
114
|
- [Scheduling Jobs](docs/knowledge/infrastructure/scheduling_jobs.md)
|
|
@@ -130,6 +130,12 @@ Authenticate:
|
|
|
130
130
|
mainsequence login
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
+
An already MCP-authenticated coding agent can establish the same persisted CLI
|
|
134
|
+
session with `mainsequence login --mcp`, then call the printed
|
|
135
|
+
`auth.cli_authorize` tool while the command waits. The backend supplies the
|
|
136
|
+
callback URI; tokens return directly to the CLI and are never exposed through
|
|
137
|
+
MCP.
|
|
138
|
+
|
|
133
139
|
Check that you can see your projects:
|
|
134
140
|
|
|
135
141
|
```bash
|
|
@@ -64,8 +64,6 @@ Recommended entry points:
|
|
|
64
64
|
- [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
|
|
65
65
|
- Knowledge:
|
|
66
66
|
- [Data Nodes](docs/knowledge/data_nodes.md)
|
|
67
|
-
- [Command Center](docs/knowledge/command_center/index.md)
|
|
68
|
-
- [Command Center Widget Data Contracts](docs/knowledge/command_center/widget_data_contracts.md)
|
|
69
67
|
- [MetaTables](docs/knowledge/meta_tables/index.md)
|
|
70
68
|
- [Constants and Secrets](docs/knowledge/infrastructure/constants_and_secrets.md)
|
|
71
69
|
- [Scheduling Jobs](docs/knowledge/infrastructure/scheduling_jobs.md)
|
|
@@ -87,6 +85,12 @@ Authenticate:
|
|
|
87
85
|
mainsequence login
|
|
88
86
|
```
|
|
89
87
|
|
|
88
|
+
An already MCP-authenticated coding agent can establish the same persisted CLI
|
|
89
|
+
session with `mainsequence login --mcp`, then call the printed
|
|
90
|
+
`auth.cli_authorize` tool while the command waits. The backend supplies the
|
|
91
|
+
callback URI; tokens return directly to the CLI and are never exposed through
|
|
92
|
+
MCP.
|
|
93
|
+
|
|
90
94
|
Check that you can see your projects:
|
|
91
95
|
|
|
92
96
|
```bash
|
|
@@ -63,11 +63,11 @@ Core responsibilities:
|
|
|
63
63
|
|
|
64
64
|
- translate user intent into the correct Main Sequence implementation path:
|
|
65
65
|
- for data publishing and data pipelines, use `DataNode`s and `MetaTable`s
|
|
66
|
-
- for serving
|
|
66
|
+
- for APIs serving the Command Center frontend, use the contract-authoritative
|
|
67
|
+
FastAPI release workflow
|
|
67
68
|
- for visualization, confirm the delivery target with the user:
|
|
68
69
|
- if they want a Streamlit app, treat app design and implementation as project-owned code and
|
|
69
70
|
use Main Sequence skills only for platform deployment and release verification
|
|
70
|
-
- if they want reusable components and a more structured product surface, use Command Center
|
|
71
71
|
- for scheduled execution, releases, and backend operations, use jobs, images, resources, and
|
|
72
72
|
other platform objects through the proper platform skills
|
|
73
73
|
- break work into independent executions according to the skill each part requires
|
|
@@ -82,8 +82,9 @@ Typical outcomes include:
|
|
|
82
82
|
|
|
83
83
|
- build a `DataNode` to publish a data pipeline
|
|
84
84
|
- build a `MetaTable` to record operational or application data
|
|
85
|
-
- build a `FastAPI` API
|
|
86
|
-
|
|
85
|
+
- build and release a `FastAPI` API whose Command Center contract-bearing
|
|
86
|
+
responses conform to a recorded revision of the canonical Command Center SDK
|
|
87
|
+
GitHub contracts
|
|
87
88
|
- confirm whether a visualization should be a project-owned Streamlit app or a reusable Command
|
|
88
89
|
Center surface before building or deploying it
|
|
89
90
|
- build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
|
|
@@ -196,22 +197,8 @@ Typical routing:
|
|
|
196
197
|
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
197
198
|
- platform data discovery, published table search, and object identification before implementation:
|
|
198
199
|
`.agents/skills/mainsequence/data_access/exploration/SKILL.md`
|
|
199
|
-
- APIs
|
|
200
|
+
- FastAPI APIs serving the Command Center frontend and their release lifecycle:
|
|
200
201
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
201
|
-
- Command Center workspace design, widget selection, layout narrative, and visualization strategy:
|
|
202
|
-
`.agents/skills/mainsequence/command_center/workspace_design/SKILL.md`
|
|
203
|
-
- Command Center workspace JSON creation/update and mounted widget mutation:
|
|
204
|
-
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
205
|
-
- AppComponents, custom forms, and widget input or output contracts:
|
|
206
|
-
`.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
|
|
207
|
-
- Command Center table/pro-table widgets, tabular frames, table visual metadata, formulas,
|
|
208
|
-
selections, and live merge mappings:
|
|
209
|
-
`.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
|
|
210
|
-
- Command Center tabular transform widgets, projection, filtering, aggregate, pivot, unpivot,
|
|
211
|
-
computed columns, and seed/live update bindings:
|
|
212
|
-
`.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md`
|
|
213
|
-
- predeployment AppComponent/API contract testing through `apiTargetMode: "mock-json"`:
|
|
214
|
-
`.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
|
|
215
202
|
- jobs, schedules, images, project resources, releases, and Artifacts:
|
|
216
203
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
217
204
|
- RBAC, sharing, constants, secrets, and access verification:
|
|
@@ -311,8 +298,8 @@ Typical verification commands:
|
|
|
311
298
|
|
|
312
299
|
- `mainsequence project current --debug`
|
|
313
300
|
- `mainsequence project jobs list`
|
|
314
|
-
- `mainsequence project jobs runs list <
|
|
315
|
-
- `mainsequence project jobs runs logs <
|
|
301
|
+
- `mainsequence project jobs runs list <JOB_UID>`
|
|
302
|
+
- `mainsequence project jobs runs logs <JOB_RUN_UID> --max-wait-seconds 900`
|
|
316
303
|
- `mainsequence project images list`
|
|
317
304
|
- `mainsequence project project_resource list`
|
|
318
305
|
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mainsequence-command-center-fastapi
|
|
3
|
+
description: Build, contract-test, release, and verify a FastAPI project resource that serves the Command Center frontend. Use when a Main Sequence API must implement a wire contract defined by the mainsequence-sdk/command-center-sdk GitHub repository and then move through local testing, project sync, image and resource resolution, FastAPI ResourceRelease creation, and deployed frontend validation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Command Center FastAPI Release Lifecycle
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
Build a FastAPI provider that the Command Center frontend can use, prove that
|
|
11
|
+
its Command Center contract-bearing payloads conform to the selected Command
|
|
12
|
+
Center SDK repository revision, and release the exact tested commit through the
|
|
13
|
+
Main Sequence platform.
|
|
14
|
+
|
|
15
|
+
This skill coordinates the provider lifecycle. The canonical
|
|
16
|
+
[`mainsequence-sdk/command-center-sdk`](https://github.com/mainsequence-sdk/command-center-sdk)
|
|
17
|
+
GitHub repository is authoritative for every endpoint that adopts a Command
|
|
18
|
+
Center wire contract.
|
|
19
|
+
|
|
20
|
+
## Contract Authority
|
|
21
|
+
|
|
22
|
+
Apply the Command Center SDK default per endpoint, not to the whole API.
|
|
23
|
+
|
|
24
|
+
- When an endpoint is being created to serve a frontend, first treat the pinned
|
|
25
|
+
Command Center SDK repository contracts as the default unless the user
|
|
26
|
+
explicitly names another frontend or contract authority.
|
|
27
|
+
- Classify every endpoint independently. A single FastAPI application can mix
|
|
28
|
+
Command Center-facing routes with health, internal, administrative, webhook,
|
|
29
|
+
external-integration, and backend-to-backend routes.
|
|
30
|
+
- Do not force non-frontend endpoints into Command Center contracts merely
|
|
31
|
+
because they share an application with frontend-serving routes.
|
|
32
|
+
- Do not force every frontend operation into one generic envelope. Select the
|
|
33
|
+
exact manifest contract whose role and semantics match that endpoint.
|
|
34
|
+
|
|
35
|
+
For each endpoint classified as Command Center contract-bearing, before
|
|
36
|
+
designing Pydantic models or route serialization:
|
|
37
|
+
|
|
38
|
+
1. Select a branch, tag, or commit from
|
|
39
|
+
`https://github.com/mainsequence-sdk/command-center-sdk`. Use `main` unless
|
|
40
|
+
the user or consuming frontend requires a specific compatible revision, and
|
|
41
|
+
record the resolved commit SHA.
|
|
42
|
+
2. Open `command-center-sdk/contracts/manifest.json` at that exact revision:
|
|
43
|
+
`https://github.com/mainsequence-sdk/command-center-sdk/blob/<revision>/command-center-sdk/contracts/manifest.json`.
|
|
44
|
+
3. Select the exact contract by contract ID and role.
|
|
45
|
+
4. Load the manifest-referenced draft-2020-12 JSON Schema and every indexed
|
|
46
|
+
valid and invalid fixture.
|
|
47
|
+
5. Load the corresponding contract skill from
|
|
48
|
+
`command-center-sdk/agent_scaffold/skills/contracts/` at the same revision
|
|
49
|
+
when one exists. Otherwise use `implement-command-center-contract` there.
|
|
50
|
+
|
|
51
|
+
The manifest, referenced schema, and indexed fixtures define the wire format.
|
|
52
|
+
TypeScript declarations and human documentation explain the contract but do not
|
|
53
|
+
replace that language-neutral definition.
|
|
54
|
+
|
|
55
|
+
Do not install the Node package in the Python API environment to discover or
|
|
56
|
+
validate these contracts. Read them from a checkout or GitHub URLs pinned to the
|
|
57
|
+
resolved repository commit.
|
|
58
|
+
|
|
59
|
+
Do not copy schemas, fixture payloads, contract IDs, or field inventories into
|
|
60
|
+
this skill or into Main Sequence SDK client models. Generate or maintain
|
|
61
|
+
provider-side Python models against the selected repository schema and validate
|
|
62
|
+
serialized responses at the HTTP boundary.
|
|
63
|
+
|
|
64
|
+
If no published contract applies to an application-specific frontend endpoint,
|
|
65
|
+
record that decision and define an explicit application-owned route contract.
|
|
66
|
+
Do not mislabel it as a Command Center SDK contract or distort a nearby schema
|
|
67
|
+
to make it fit.
|
|
68
|
+
|
|
69
|
+
If the endpoint claims an existing Command Center contract but that contract
|
|
70
|
+
cannot express the required behavior, stop that endpoint implementation and
|
|
71
|
+
produce a Command Center SDK handoff containing:
|
|
72
|
+
|
|
73
|
+
- Command Center SDK repository commit SHA
|
|
74
|
+
- contract ID and schema `$id`
|
|
75
|
+
- rejected payload or failing fixture
|
|
76
|
+
- exact missing capability or compatibility requirement
|
|
77
|
+
|
|
78
|
+
Do not invent a local wire extension while waiting for a contract change.
|
|
79
|
+
|
|
80
|
+
## Lifecycle
|
|
81
|
+
|
|
82
|
+
### 1. Establish the API boundary
|
|
83
|
+
|
|
84
|
+
Record:
|
|
85
|
+
|
|
86
|
+
- the Command Center frontend flow consuming the API
|
|
87
|
+
- the per-endpoint classification: frontend-facing, health, internal,
|
|
88
|
+
administrative, webhook, external integration, or backend-to-backend
|
|
89
|
+
- the exact contract ID and role for each request or response body
|
|
90
|
+
- route paths, HTTP methods, authentication expectations, and error semantics
|
|
91
|
+
- upstream `APIDataNode`, MetaTable, service, or external data dependencies
|
|
92
|
+
- whether the API uses backend transport or a contract-defined direct
|
|
93
|
+
development transport
|
|
94
|
+
|
|
95
|
+
Use `LoggedUserContextMiddleware` when the platform-authenticated request user
|
|
96
|
+
must be available through `request.state`. This middleware binds request headers
|
|
97
|
+
to the SDK request context; it is not an authorization policy by itself.
|
|
98
|
+
|
|
99
|
+
### 2. Implement the provider
|
|
100
|
+
|
|
101
|
+
Keep Command Center contract-bearing route code focused on transport and
|
|
102
|
+
application behavior:
|
|
103
|
+
|
|
104
|
+
1. validate request bodies and parameters
|
|
105
|
+
2. invoke project-owned services and Main Sequence data access
|
|
106
|
+
3. serialize the declared Command Center contract
|
|
107
|
+
4. validate the serialized body against the schema from the selected repository
|
|
108
|
+
commit before it crosses the HTTP boundary
|
|
109
|
+
|
|
110
|
+
Python and Pydantic models are implementation tools, not contract authority.
|
|
111
|
+
Preserve schema requirements, nullability, enums, numeric constraints,
|
|
112
|
+
additional-property policy, contract IDs, and semantic rules from the selected
|
|
113
|
+
Command Center SDK repository revision.
|
|
114
|
+
|
|
115
|
+
### 3. Prove contract conformance
|
|
116
|
+
|
|
117
|
+
Tests for each selected Command Center contract must:
|
|
118
|
+
|
|
119
|
+
- compile the selected schema using draft 2020-12
|
|
120
|
+
- accept every manifest-indexed valid fixture
|
|
121
|
+
- reject every manifest-indexed invalid fixture
|
|
122
|
+
- validate representative route responses after JSON serialization
|
|
123
|
+
- test request validation, authentication context, authorization decisions, and
|
|
124
|
+
declared errors
|
|
125
|
+
- assert that secrets and runtime-only objects never enter response payloads
|
|
126
|
+
- record the Command Center SDK repository commit SHA, contract ID, and schema
|
|
127
|
+
`$id` in test evidence
|
|
128
|
+
|
|
129
|
+
An OpenAPI document and passing Pydantic validation are useful but do not replace
|
|
130
|
+
validation against the authoritative Command Center SDK schema and fixtures.
|
|
131
|
+
|
|
132
|
+
### 4. Test with the frontend before release
|
|
133
|
+
|
|
134
|
+
Run the FastAPI application locally and exercise it through the actual Command
|
|
135
|
+
Center frontend flow, not only with isolated HTTP calls.
|
|
136
|
+
|
|
137
|
+
For Adapter From API development, use the direct transport mode defined by the
|
|
138
|
+
selected Command Center SDK repository contract and expose the local API through
|
|
139
|
+
a temporary authenticated Cloudflare tunnel. This allows the workspace
|
|
140
|
+
connection to be tested against local code before creating repeated API
|
|
141
|
+
deployments. Validate discovery, queries, health behavior, exact response
|
|
142
|
+
contracts, and secret redaction through that path.
|
|
143
|
+
|
|
144
|
+
Do not guess transport field names or values from this skill. Read them from the
|
|
145
|
+
Adapter From API schema and fixtures at the selected repository commit.
|
|
146
|
+
|
|
147
|
+
### 5. Release the tested commit
|
|
148
|
+
|
|
149
|
+
Before release, verify local project resolution:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
mainsequence project current --debug --json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Then move the tested code through the canonical lifecycle:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
mainsequence project sync -m "Release Command Center API"
|
|
159
|
+
mainsequence project images create
|
|
160
|
+
mainsequence project project_resource list --filter resource_type=fastapi
|
|
161
|
+
mainsequence project project_resource create_fastapi
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Verify that:
|
|
165
|
+
|
|
166
|
+
- project sync used the intended Git branch
|
|
167
|
+
- the selected image contains the exact tested commit
|
|
168
|
+
- resource discovery found the expected FastAPI path at that commit
|
|
169
|
+
- the selected resource UID and image UID refer to the same commit
|
|
170
|
+
- the created release kind is `fastapi`
|
|
171
|
+
- compute and spot settings are intentional
|
|
172
|
+
|
|
173
|
+
Use `--automatic-deployment` only after the route paths, resource path, and
|
|
174
|
+
frontend contracts are stable and the release should follow future repository
|
|
175
|
+
syncs. Otherwise keep the release pinned and create deliberate replacements.
|
|
176
|
+
|
|
177
|
+
### 6. Verify the deployed API
|
|
178
|
+
|
|
179
|
+
Do not treat local success or release creation as completion. Through the
|
|
180
|
+
deployed platform route:
|
|
181
|
+
|
|
182
|
+
1. verify health and authentication behavior
|
|
183
|
+
2. execute representative contract-bearing requests
|
|
184
|
+
3. validate returned JSON against the same repository-pinned schemas
|
|
185
|
+
4. exercise the consuming Command Center frontend flow
|
|
186
|
+
5. inspect platform logs for serialization, authorization, and runtime failures
|
|
187
|
+
|
|
188
|
+
When automatic deployment is enabled, also inspect the deployment run and prove
|
|
189
|
+
that it selected the expected repository revision, resource path, and image.
|
|
190
|
+
|
|
191
|
+
## Completion Evidence
|
|
192
|
+
|
|
193
|
+
Report:
|
|
194
|
+
|
|
195
|
+
- Command Center SDK repository URL and resolved commit SHA
|
|
196
|
+
- implemented contract IDs and schema `$id` values
|
|
197
|
+
- conformance and route-test results
|
|
198
|
+
- local frontend integration path used
|
|
199
|
+
- Git commit, project image UID, project resource UID, and release identity
|
|
200
|
+
- deployed contract validation and Command Center frontend result
|
|
201
|
+
- whether automatic deployment is enabled and why
|
|
202
|
+
|
|
203
|
+
The Command Center-facing release is complete only when the frontend consumes
|
|
204
|
+
the deployed contract-bearing responses and they pass the contracts from the
|
|
205
|
+
recorded Command Center SDK repository revision.
|
{mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
@@ -49,12 +49,10 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
|
|
|
49
49
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
50
50
|
- `MetaTable` registration or operation work:
|
|
51
51
|
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
52
|
-
- FastAPI
|
|
52
|
+
- FastAPI providers serving the Command Center frontend:
|
|
53
53
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
54
54
|
- Streamlit dashboard deployment:
|
|
55
55
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
56
|
-
- Command Center surfaces:
|
|
57
|
-
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
58
56
|
- blocker and failure analysis:
|
|
59
57
|
`.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
|
|
60
58
|
|
|
@@ -99,13 +97,13 @@ Discovery priority:
|
|
|
99
97
|
- use column lookup only when the user is specifically searching for a schema or column name
|
|
100
98
|
- use detail only after you have identified the candidate object you want to inspect
|
|
101
99
|
|
|
102
|
-
Semantic description discovery
|
|
100
|
+
Semantic description discovery for published DataNode storage searches
|
|
101
|
+
`TimeIndexMetaTable` metadata rows through:
|
|
103
102
|
|
|
104
|
-
- `GET /
|
|
103
|
+
- `GET /api/v1/time-index-meta-tables/description-search/?q=<text>`
|
|
105
104
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
`TimeIndexMetaTable` metadata.
|
|
105
|
+
This is the DataNode discovery surface because published DataNode storage is
|
|
106
|
+
represented by `TimeIndexMetaTable` metadata.
|
|
109
107
|
|
|
110
108
|
Typical semantic discovery commands:
|
|
111
109
|
|
{mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md
RENAMED
|
@@ -56,12 +56,8 @@ If the task depends on one of those areas, route it explicitly instead of guessi
|
|
|
56
56
|
|
|
57
57
|
- MetaTables and storage contracts:
|
|
58
58
|
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
59
|
-
-
|
|
59
|
+
- Command Center-serving FastAPI providers:
|
|
60
60
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
61
|
-
- Command Center workspaces:
|
|
62
|
-
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
63
|
-
- AppComponents and custom forms:
|
|
64
|
-
`.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
|
|
65
61
|
- Jobs, images, resources, and releases:
|
|
66
62
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
67
63
|
- RBAC and sharing:
|
|
@@ -349,7 +345,7 @@ delete helpers to clean DataNode storage rows.
|
|
|
349
345
|
The SDK call targets:
|
|
350
346
|
|
|
351
347
|
```text
|
|
352
|
-
POST /
|
|
348
|
+
POST /api/v1/time-index-meta-tables/<table_uid>/delete-after-date/
|
|
353
349
|
```
|
|
354
350
|
|
|
355
351
|
Use a global tail delete only when all streams in the table should be rolled
|
{mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md
RENAMED
|
@@ -28,8 +28,7 @@ This skill is for schema-driven application tables registered through TS Manager
|
|
|
28
28
|
This skill must not claim ownership of:
|
|
29
29
|
|
|
30
30
|
- DataNode producer contracts
|
|
31
|
-
- FastAPI
|
|
32
|
-
- widget response contracts
|
|
31
|
+
- Command Center FastAPI wire contracts
|
|
33
32
|
- workspace payloads
|
|
34
33
|
- job scheduling, image pinning, or releases
|
|
35
34
|
- RBAC or sharing policy
|
|
@@ -44,12 +43,8 @@ If the user is still in the discovery process and does not yet know what data ex
|
|
|
44
43
|
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md`
|
|
45
44
|
- DataNodes:
|
|
46
45
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
47
|
-
-
|
|
46
|
+
- Command Center-serving FastAPI providers:
|
|
48
47
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
49
|
-
- Command Center workspaces:
|
|
50
|
-
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
51
|
-
- AppComponents and custom forms:
|
|
52
|
-
`.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
|
|
53
48
|
- Jobs, images, resources, and releases:
|
|
54
49
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
55
50
|
|
|
@@ -75,7 +70,7 @@ Before changing code, collect or infer:
|
|
|
75
70
|
- expected read patterns
|
|
76
71
|
- expected mutation patterns
|
|
77
72
|
- whether TS Manager should create the physical table
|
|
78
|
-
- for `external_registered`, the target `
|
|
73
|
+
- for `external_registered`, the target canonical `DataSource` UID
|
|
79
74
|
- for contract changes, the selected `AlembicMetaTableMigration` provider or provider module path
|
|
80
75
|
- for contract changes, the provider's `AlembicVersionMetaTable` binding and whether it has been registered
|
|
81
76
|
- for contract changes, the intended Alembic revision, parent/current revision, target revision, and updated SQLAlchemy declarations
|
|
@@ -397,7 +392,7 @@ stream cleanup. Route that work to the DataNode skill and use
|
|
|
397
392
|
The DataNode delete path is:
|
|
398
393
|
|
|
399
394
|
```text
|
|
400
|
-
POST /
|
|
395
|
+
POST /api/v1/time-index-meta-tables/<table_uid>/delete-after-date/
|
|
401
396
|
```
|
|
402
397
|
|
|
403
398
|
Use `after_date` for global tail rollback. Use `dimension_filters` or
|
{mainsequence-5.0.2 → mainsequence-6.0.6}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
@@ -53,7 +53,7 @@ This skill audits. It does not implement by default.
|
|
|
53
53
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
54
54
|
- MetaTable implementation issues:
|
|
55
55
|
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
56
|
-
-
|
|
56
|
+
- Command Center FastAPI contract or release issues:
|
|
57
57
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
58
58
|
- jobs, images, releases, and runtime environment issues:
|
|
59
59
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
@@ -24,7 +24,7 @@ Do not own:
|
|
|
24
24
|
- platform ontology or Project Blueprint design;
|
|
25
25
|
- domain implementation for MetaTables, DataNodes, APIs, jobs, or releases;
|
|
26
26
|
- backend repository reconciliation;
|
|
27
|
-
- MCP
|
|
27
|
+
- MCP authorization policy, OAuth token storage, or access-token extraction;
|
|
28
28
|
- project-owned skills outside `.agents/skills/mainsequence/`.
|
|
29
29
|
|
|
30
30
|
Route architecture changes to `project_design`, implementation routing to
|
|
@@ -32,6 +32,13 @@ Route architecture changes to `project_design`, implementation routing to
|
|
|
32
32
|
`maintenance/bug_auditor` when diagnosis extends beyond the maintenance
|
|
33
33
|
workflow itself.
|
|
34
34
|
|
|
35
|
+
The local identity contract has one persisted platform identifier:
|
|
36
|
+
`MAIN_SEQUENCE_PROJECT_UID`, the logical Project UID. The checked-out Git
|
|
37
|
+
branch selects the active ProjectBranch. Never ask the user for a
|
|
38
|
+
ProjectBranch UID, persist `MAIN_SEQUENCE_PROJECT_BRANCH_UID`, or treat a
|
|
39
|
+
ProjectBranch UID as local project configuration. The CLI may resolve that UID
|
|
40
|
+
internally when a branch-owned platform API requires it.
|
|
41
|
+
|
|
35
42
|
## Inspect Before Changing State
|
|
36
43
|
|
|
37
44
|
1. Read `AGENTS.md` and the relevant repository skills.
|
|
@@ -44,6 +51,12 @@ workflow itself.
|
|
|
44
51
|
git status --short
|
|
45
52
|
```
|
|
46
53
|
|
|
54
|
+
The `project current` result must report the logical `project_uid`, current
|
|
55
|
+
`git_branch`, `project_branch_uid`, and `project_branch_status=resolved`.
|
|
56
|
+
Treat a detached checkout, missing logical Project UID, or unresolved/
|
|
57
|
+
unregistered Git branch as a maintenance preflight failure before any
|
|
58
|
+
mutating workflow.
|
|
59
|
+
|
|
47
60
|
4. Separate existing user changes from changes created by the maintenance
|
|
48
61
|
task. Never assume every uncommitted file belongs to the current task.
|
|
49
62
|
5. Read command help when the installed SDK differs from the instructions in
|
|
@@ -77,6 +90,27 @@ documentation.
|
|
|
77
90
|
|
|
78
91
|
## Refresh Project Authentication
|
|
79
92
|
|
|
93
|
+
Establish CLI authentication before refreshing a project. Select exactly one
|
|
94
|
+
existing authentication lane:
|
|
95
|
+
|
|
96
|
+
- When `MAINSEQUENCE_AUTH_MODE=runtime_credential`, run `mainsequence login`.
|
|
97
|
+
The CLI exchanges the injected runtime credential without a browser or a
|
|
98
|
+
refresh-backed user handoff.
|
|
99
|
+
- When the coding agent has an authenticated Main Sequence MCP connection but
|
|
100
|
+
the CLI has no session, run `mainsequence login --mcp` in a terminal that can
|
|
101
|
+
remain active. The command asks the configured backend to create the
|
|
102
|
+
handoff, prints a JSON object naming `auth.cli_authorize` and its exact
|
|
103
|
+
`handoff_uid`, and waits. Call that MCP tool with only the printed arguments.
|
|
104
|
+
The backend-issued callback completes the waiting command and the CLI stores
|
|
105
|
+
the normal tracked JWT pair locally.
|
|
106
|
+
- When neither lane is available, use the existing interactive browser login.
|
|
107
|
+
|
|
108
|
+
Never use `--export` with MCP handoff login, pass access or refresh tokens to
|
|
109
|
+
the model, invent a callback URI, or substitute a handoff UID from another
|
|
110
|
+
terminal. If `auth.cli_authorize` returns an error, preserve the pending local
|
|
111
|
+
workflow output and report that exact error rather than starting multiple
|
|
112
|
+
handoffs blindly.
|
|
113
|
+
|
|
80
114
|
Refresh only the CLI-managed runtime authentication entries in the project
|
|
81
115
|
`.env`:
|
|
82
116
|
|
|
@@ -84,10 +118,18 @@ Refresh only the CLI-managed runtime authentication entries in the project
|
|
|
84
118
|
mainsequence project refresh_token --path .
|
|
85
119
|
```
|
|
86
120
|
|
|
87
|
-
Require
|
|
88
|
-
copy, or return access and refresh token values. Do not
|
|
89
|
-
calling MCP host's protected bearer token
|
|
90
|
-
|
|
121
|
+
Require one supported Main Sequence CLI login lane first. Never print,
|
|
122
|
+
inspect, summarize, copy, or return access and refresh token values. Do not
|
|
123
|
+
attempt to extract the calling MCP host's protected bearer token: the handoff
|
|
124
|
+
authorizes a new PKCE grant and the backend returns credentials directly to
|
|
125
|
+
the waiting CLI process.
|
|
126
|
+
|
|
127
|
+
The command preserves unrelated project configuration and renders only the
|
|
128
|
+
current supported authentication shape. Existing `MAINSEQUENCE_TOKEN` and
|
|
129
|
+
`MAIN_SEQUENCE_PROJECT_ID` entries are not carried into the rewritten file;
|
|
130
|
+
this is not a separate cleanup routine. It preserves the logical
|
|
131
|
+
`MAIN_SEQUENCE_PROJECT_UID` and never writes a ProjectBranch UID; switching Git
|
|
132
|
+
branches changes local branch context without rewriting `.env`.
|
|
91
133
|
|
|
92
134
|
## Update The Project SDK
|
|
93
135
|
|
|
@@ -145,6 +187,11 @@ mainsequence project sync --path . -m "<specific commit message>" --dry-run
|
|
|
145
187
|
Review every pending file because the command stages with `git add -A`. Do not
|
|
146
188
|
continue when unrelated or unexplained changes would be included.
|
|
147
189
|
|
|
190
|
+
The command performs the same branch preflight even for `--dry-run`: it rejects
|
|
191
|
+
a detached checkout and rejects a Git branch that is not registered under the
|
|
192
|
+
logical Project. Do not bypass that validation or supply a ProjectBranch UID
|
|
193
|
+
manually. Register or select the correct Git branch first.
|
|
194
|
+
|
|
148
195
|
After review:
|
|
149
196
|
|
|
150
197
|
```bash
|
|
@@ -56,12 +56,10 @@ This skill must not claim ownership of:
|
|
|
56
56
|
`.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
|
|
57
57
|
- MetaTables:
|
|
58
58
|
`.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
|
|
59
|
-
-
|
|
59
|
+
- Command Center-serving FastAPI providers:
|
|
60
60
|
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
|
|
61
61
|
- Streamlit dashboard deployment:
|
|
62
62
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
63
|
-
- Command Center workspaces:
|
|
64
|
-
`.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
|
|
65
63
|
|
|
66
64
|
Streamlit dashboard implementation is app-owned project code. This skill only reasons about access to deployed resources such as `ResourceRelease`.
|
|
67
65
|
|