mainsequence 4.4.32__tar.gz → 5.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. {mainsequence-4.4.32/mainsequence.egg-info → mainsequence-5.0.2}/PKG-INFO +8 -47
  2. {mainsequence-4.4.32 → mainsequence-5.0.2}/README.md +1 -1
  3. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/AGENTS.md +70 -57
  4. {mainsequence-4.4.32/agent_scaffold/skills/a2a_communication → mainsequence-5.0.2/agent_scaffold/skills/a2a_sdk_execution}/SKILL.md +8 -5
  5. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/data_access/exploration/SKILL.md +1 -1
  6. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +11 -17
  7. mainsequence-5.0.2/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +200 -0
  8. {mainsequence-4.4.32/agent_scaffold/skills/project_builder → mainsequence-5.0.2/agent_scaffold/skills/sdk_project_execution}/SKILL.md +16 -35
  9. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/api.py +156 -65
  10. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/cli.py +273 -190
  11. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/local_ops.py +27 -2
  12. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/base.py +1 -0
  13. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/metatables/core.py +5 -11
  14. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/models_foundry.py +0 -26
  15. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/models_helpers.py +157 -0
  16. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/utils.py +3 -4
  17. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/data_nodes.py +1 -2
  18. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/__init__.py +2 -4
  19. mainsequence-5.0.2/mainsequence/project_skills.py +620 -0
  20. {mainsequence-4.4.32 → mainsequence-5.0.2/mainsequence.egg-info}/PKG-INFO +8 -47
  21. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence.egg-info/SOURCES.txt +5 -3
  22. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence.egg-info/requires.txt +3 -2
  23. {mainsequence-4.4.32 → mainsequence-5.0.2}/pyproject.toml +11 -10
  24. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_cli.py +282 -215
  25. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_filter_normalization.py +119 -0
  26. mainsequence-5.0.2/tests/test_project_skills.py +483 -0
  27. mainsequence-4.4.32/agent_scaffold/skills/project_to_agent/SKILL.md +0 -164
  28. {mainsequence-4.4.32 → mainsequence-5.0.2}/LICENSE +0 -0
  29. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  30. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
  31. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  32. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
  33. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +0 -0
  34. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
  35. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
  36. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  37. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
  38. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
  39. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  40. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  41. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  42. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  43. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  44. {mainsequence-4.4.32 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  45. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/__init__.py +0 -0
  46. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/__main__.py +0 -0
  47. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/bootstrap.py +0 -0
  48. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/__init__.py +0 -0
  49. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/browser_auth.py +0 -0
  50. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/config.py +0 -0
  51. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/docker_utils.py +0 -0
  52. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/doctor.py +0 -0
  53. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/migrations.py +0 -0
  54. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/model_filters.py +0 -0
  55. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/project_status.py +0 -0
  56. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/pydantic_cli.py +0 -0
  57. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/sdk_utils.py +0 -0
  58. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/ssh_utils.py +0 -0
  59. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/cli/ui.py +0 -0
  60. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/__init__.py +0 -0
  61. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/agent_runtime_models.py +0 -0
  62. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/client.py +0 -0
  63. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/__init__.py +0 -0
  64. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/app_component.py +0 -0
  65. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/connections.py +0 -0
  66. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/__init__.py +0 -0
  67. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
  68. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
  69. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
  70. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/tabular.py +0 -0
  71. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/ui.py +0 -0
  72. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/data_models.py +0 -0
  73. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/__init__.py +0 -0
  74. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
  75. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/__init__.py +0 -0
  76. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/bindings.py +0 -0
  77. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
  78. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/registry.py +0 -0
  79. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/table.py +0 -0
  80. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
  81. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace.py +0 -0
  82. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  83. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
  84. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/documents.py +0 -0
  85. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
  86. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/compute_validation.py +0 -0
  87. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  88. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  89. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  90. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  91. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/dtype_codec.py +0 -0
  92. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/exceptions.py +0 -0
  93. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/fastapi/__init__.py +0 -0
  94. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/fastapi/auth.py +0 -0
  95. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/metatables/__init__.py +0 -0
  96. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/client/models_user.py +0 -0
  97. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/defaults.py +0 -0
  98. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/instrumentation/__init__.py +0 -0
  99. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/instrumentation/utils.py +0 -0
  100. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/logconf.py +0 -0
  101. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/__init__.py +0 -0
  102. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/__main__.py +0 -0
  103. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  104. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  105. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  106. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  107. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  108. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  109. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  110. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  111. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  112. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/future_registry.py +0 -0
  113. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/hashing.py +0 -0
  114. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  115. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/env.py +0 -0
  116. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/provider.py +0 -0
  117. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/registry.py +0 -0
  118. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  119. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  120. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  121. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  122. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  123. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/schema_names.py +0 -0
  124. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  125. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/runtime_flags.py +0 -0
  126. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence/scaffold_skills.py +0 -0
  127. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence.egg-info/dependency_links.txt +0 -0
  128. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence.egg-info/entry_points.txt +0 -0
  129. {mainsequence-4.4.32 → mainsequence-5.0.2}/mainsequence.egg-info/top_level.txt +0 -0
  130. {mainsequence-4.4.32 → mainsequence-5.0.2}/setup.cfg +0 -0
  131. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_auth_precedence.py +0 -0
  132. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_build_operations_hashing.py +0 -0
  133. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_cli_browser_auth.py +0 -0
  134. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_cli_migrations.py +0 -0
  135. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_client.py +0 -0
  136. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_command_center_app_component_models.py +0 -0
  137. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_command_center_data_models.py +0 -0
  138. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_command_center_models.py +0 -0
  139. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_command_center_table_contracts.py +0 -0
  140. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_command_center_tabular_transform.py +0 -0
  141. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  142. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_data_node_storage_dimension_queries.py +0 -0
  143. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_data_node_update_flow.py +0 -0
  144. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_dependency_extras.py +0 -0
  145. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_duckdb_interface_dimensions.py +0 -0
  146. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_instrumentation.py +0 -0
  147. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_logconf.py +0 -0
  148. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_meta_table_migrations.py +0 -0
  149. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_meta_tables_client_models.py +0 -0
  150. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  151. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_models_user_request_bound_auth.py +0 -0
  152. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_pod_project_resolution.py +0 -0
  153. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_project_batch_jobs_from_file.py +0 -0
  154. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_run_configuration.py +0 -0
  155. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_scaffold_skills.py +0 -0
  156. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_schema_names.py +0 -0
  157. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_secret_client_model.py +0 -0
  158. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_source_table_configuration.py +0 -0
  159. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_sqlite_interface_dimensions.py +0 -0
  160. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_update_runner_uid_runtime.py +0 -0
  161. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_update_statistics.py +0 -0
  162. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_update_uid_guards.py +0 -0
  163. {mainsequence-4.4.32 → mainsequence-5.0.2}/tests/test_workspace_snapshot.py +0 -0
@@ -1,56 +1,16 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.32
3
+ Version: 5.0.2
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
- License: MainSequence GmbH SDK License Agreement
7
- This License Agreement (the "License") governs the use, modification, and distribution of the software provided by MainSequence GmbH (the "Licensor"). The software (the "Software") is provided to you under the terms of this License. By using the Software, you agree to the terms of this License.
8
-
9
- TERMS AND CONDITIONS
10
- 0. Definitions
11
- "Personal Use": Use by an individual for personal purposes that are not connected to any business, organization, or commercial activity.
12
- "Internal Use": Use within a business, organization, or other entity, provided it is not made accessible to third parties or used for commercial purposes.
13
- "Commercial Use": Use of the Software in exchange for monetary or other compensation, including hosting, offering Software as a service, selling the Software, or using it in a product or service for sale.
14
- "License Agreement": The legally binding agreement between the Licensor and the licensee (you), subject to the terms outlined in this License.
15
- 1. Grant of License
16
- 1.1 Personal and Internal Use
17
- The Licensor grants you a limited, non-exclusive, non-transferable, revocable license to use and modify the Software for personal or internal use only, provided that such use is strictly subject to this License Agreement and continues only while the License Agreement remains in effect.
18
- Upon termination of this License Agreement, all rights to use the Software for personal or internal purposes shall be immediately revoked, and you must cease all use of the Software.
19
- 1.2 Modification
20
- You are permitted to modify the Software solely for your own personal or internal use, subject to the restrictions outlined in this License Agreement.
21
- You are not permitted to distribute, sublicense, or otherwise transfer modified or unmodified versions of the Software to any third party.
22
- 1.3 Prohibited Redistribution
23
- You may not redistribute, sublicense, sell, lease, rent, or otherwise transfer the Software, whether in its original form or as modified by you, to any third party.
24
- Any attempt to distribute or transfer the Software in any way, without explicit permission from MainSequence GmbH, is strictly prohibited.
25
- 2. Prohibition of Commercial Use
26
- The Software may not be used for any commercial purposes without obtaining a separate commercial license from MainSequence GmbH.
27
- Examples of prohibited commercial use include, but are not limited to:
28
- Hosting or offering the Software as a service to others, either modified or unmodified.
29
- Using the Software as part of a commercial product or service provided to customers for a fee.
30
- Using the Software in any production environment that generates income, directly or indirectly, from its use.
31
- 3. Termination
32
- This License Agreement will automatically terminate if you fail to comply with any of its terms.
33
- Upon termination of this License, you must immediately cease all use of the Software, destroy all copies (modified or unmodified), and remove the Software from any devices or systems on which it is installed.
34
- MainSequence GmbH reserves the right to terminate this License at its discretion for any violation of its terms or for any other reason.
35
- 4. Commercial License
36
- If you wish to use the Software for commercial purposes, you must contact MainSequence GmbH to negotiate and obtain a separate commercial license. The terms of the commercial license, including any fees, will be negotiated separately from this License Agreement.
37
- Without a valid commercial license, you are strictly prohibited from using the Software for any commercial activity.
38
- 5. Disclaimer of Warranty
39
- THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL MAINSEQUENCE GMBH OR THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40
-
41
- 6. Limitation of Liability
42
- IN NO EVENT SHALL MAINSEQUENCE GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
43
-
44
- 7. Governing Law
45
- This License Agreement shall be governed by and construed in accordance with the laws of the jurisdiction where MainSequence GmbH is located, without regard to its conflict of law provisions.
6
+ License-Expression: LicenseRef-MainSequence-Proprietary
46
7
  Project-URL: Homepage, https://github.com/mainsequence-sdk/mainsequence-sdk
47
8
  Project-URL: Issues, https://github.com/mainsequence-sdk/mainsequence-sdk/issues
48
9
  Classifier: Programming Language :: Python :: 3
49
10
  Classifier: Programming Language :: Python :: 3 :: Only
50
- Classifier: Programming Language :: Python :: 3.11
51
- Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3.13
52
12
  Classifier: Operating System :: OS Independent
53
- Requires-Python: >=3.11
13
+ Requires-Python: >=3.13
54
14
  Description-Content-Type: text/markdown
55
15
  License-File: LICENSE
56
16
  Requires-Dist: alembic>=1.18.4
@@ -61,14 +21,15 @@ Requires-Dist: numpy
61
21
  Requires-Dist: opentelemetry-api
62
22
  Requires-Dist: opentelemetry-exporter-otlp
63
23
  Requires-Dist: opentelemetry-sdk
24
+ Requires-Dist: packaging>=24.2
64
25
  Requires-Dist: pandas
65
26
  Requires-Dist: psutil
66
27
  Requires-Dist: psycopg2>=2.9.12
67
- Requires-Dist: pydantic
68
- Requires-Dist: pytz
28
+ Requires-Dist: pydantic<3,>=2.11
69
29
  Requires-Dist: pyyaml
70
30
  Requires-Dist: requests
71
31
  Requires-Dist: sqlalchemy<3,>=2
32
+ Requires-Dist: starlette
72
33
  Requires-Dist: structlog
73
34
  Requires-Dist: tqdm
74
35
  Requires-Dist: typer
@@ -270,7 +231,7 @@ If you need the exact SDK surface:
270
231
  ## Package metadata
271
232
 
272
233
  - Package name: `mainsequence`
273
- - Python: `>=3.11`
234
+ - Python: `>=3.13`
274
235
  - CLI entry point: `mainsequence`
275
236
 
276
237
  Project metadata is defined in [pyproject.toml](pyproject.toml).
@@ -188,7 +188,7 @@ If you need the exact SDK surface:
188
188
  ## Package metadata
189
189
 
190
190
  - Package name: `mainsequence`
191
- - Python: `>=3.11`
191
+ - Python: `>=3.13`
192
192
  - CLI entry point: `mainsequence`
193
193
 
194
194
  Project metadata is defined in [pyproject.toml](pyproject.toml).
@@ -23,29 +23,41 @@ installed SDK version with the managed skills pin:
23
23
  - `mainsequence project update-sdk --path .`
24
24
 
25
25
  After the SDK update, inspect `.agents/skills/mainsequence/PINNED_FROM.txt`.
26
- Its `pinned_version=...` value records the SDK version that supplied the copied
27
- Main Sequence skills. Compare that value with the installed SDK version reported
28
- by `mainsequence --version`.
26
+ The schema-2 record describes both sources installed by
27
+ `mainsequence project update_agent_skills`:
28
+
29
+ - `sdk_version=...` and `sdk_skills_path=...` identify the SDK-owned execution
30
+ skills copied from the target project's installed SDK;
31
+ - `platform_manifest_version=...`, `platform_manifest_sha256=...`,
32
+ `platform_ontology_sha256=...`, and the
33
+ `platform_resource.<name>.*` fields identify the platform-owned ontology and
34
+ skills retrieved from authenticated MCP resources.
35
+
36
+ `pinned_version=...` remains as a backward-readable alias of `sdk_version`.
37
+ Compare the SDK value with the installed version reported by
38
+ `mainsequence --version`.
29
39
 
30
40
  Refresh the managed scaffold only when `PINNED_FROM.txt` is missing or its
31
41
  `pinned_version` differs from the installed SDK version:
32
42
 
33
- - `mainsequence project update AGENTS.md --path .`
34
43
  - `mainsequence project update_agent_skills --path .`
44
+ - `mainsequence project update AGENTS.md --path .`
35
45
 
36
- If `pinned_version` already matches the installed SDK version, do not refresh
37
- `AGENTS.md` or `.agents/skills/mainsequence/` as a startup ritual; continue with
38
- the task.
46
+ If `sdk_version` already matches the installed SDK version and no explicit
47
+ platform-skill refresh is needed, do not refresh `AGENTS.md` or
48
+ `.agents/skills/mainsequence/` as a startup ritual; continue with the task.
39
49
 
40
50
  Canonical Main Sequence documentation root:
41
51
  `https://mainsequence-sdk.github.io/mainsequence-sdk/`
42
52
 
43
53
  ## Agent Job
44
54
 
45
- You are the intelligence project builder for a Main Sequence repository.
55
+ You are the SDK execution orchestrator for a Main Sequence repository.
46
56
 
47
- Your job is to translate user intent into the correct Main Sequence components, repository
48
- changes, and validation steps.
57
+ The platform-owned `project_design` establishes intent, project ontology, the
58
+ connected Project Blueprint, and success criteria. Your SDK-owned
59
+ responsibility is to translate that accepted Blueprint into repository changes,
60
+ CLI/SDK operations, and validation steps.
49
61
 
50
62
  Core responsibilities:
51
63
 
@@ -64,8 +76,7 @@ Core responsibilities:
64
76
  - translate user business logic into reusable code under `src/` so it can be reused by APIs,
65
77
  dashboards, jobs, and other project components instead of duplicating logic in integration
66
78
  layers
67
- - maintain the repository through explicit `.agents/` project-state files and the bug auditor skill
68
- for blocker and SDK/platform issue assessment
79
+ - use the bug auditor skill for blocker and SDK/platform issue assessment
69
80
 
70
81
  Typical outcomes include:
71
82
 
@@ -77,7 +88,7 @@ Typical outcomes include:
77
88
  Center surface before building or deploying it
78
89
  - build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
79
90
  dashboards
80
- - keep the repository auditable through project-state records, blocker tracking, and bug reporting
91
+ - assess blockers and suspected SDK or platform issues from concrete repository and runtime evidence
81
92
 
82
93
  Working rules for this role:
83
94
 
@@ -105,13 +116,6 @@ User-resolution rule for agents:
105
116
 
106
117
  Delegation rules:
107
118
 
108
- - when work is delegated or queued for later, write the task in `.agents/tasks.md` according to
109
- the skill that should execute it
110
- - each delegated or queued task in `.agents/tasks.md` must state:
111
- - the exact task scope
112
- - the owning skill
113
- - the expected output, decision, or artifact
114
- - the validation or evidence required before it can be marked complete
115
119
  - if delegation is available, declare for each sub-agent:
116
120
  - the exact task it owns
117
121
  - the exact skill or skills it must use
@@ -173,10 +177,17 @@ Use the latest relevant documentation or specialized skill for the task at hand.
173
177
 
174
178
  Typical routing:
175
179
 
176
- - project setup, local checkout, and CLI environment:
177
- `.agents/skills/mainsequence/project_builder/SKILL.md`
178
- - project scaffolding, folder structure, and standard repository layout:
179
- `.agents/skills/mainsequence/project_builder/SKILL.md`
180
+ - project architecture, ontology, and Project Blueprint:
181
+ `.agents/skills/mainsequence/project_design/SKILL.md`
182
+ - project setup, local checkout, CLI environment, scaffolding, and standard
183
+ repository layout:
184
+ `.agents/skills/mainsequence/sdk_project_execution/SKILL.md`
185
+ - local environment repair, project authentication refresh, SDK updates,
186
+ managed skill refresh, and canonical project sync:
187
+ `.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
188
+ - turning an existing project into a project-backed coding agent, defining
189
+ project-owned skills, and authoring `.agents/agent_card.json`:
190
+ `.agents/skills/mainsequence/project_to_agent/SKILL.md`
180
191
  - project status audits, blocker analysis, failure classification, and upstream SDK assessment:
181
192
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
182
193
  - DataNodes, updates, identifiers, schema, metadata:
@@ -218,27 +229,28 @@ For any non-trivial Main Sequence task:
218
229
 
219
230
  1. Read the latest relevant Main Sequence documentation.
220
231
  2. Compare the implementation against the latest documented behavior.
221
-
222
- 4. Check `.agents/tasks.md` for current priorities.
223
-
224
- 7. Confirm you are in the correct project checkout, or use `--path` explicitly.
225
- 8. Confirm platform context with:
232
+ 3. Confirm you are in the correct project checkout, or use `--path` explicitly.
233
+ 4. Confirm platform context with:
226
234
  `mainsequence project current --debug`
227
- 9. Before validations or live checks, run:
235
+ 5. Before validations or live checks, run:
228
236
  `mainsequence project refresh_token --path .`
229
- 10. If git push or pull is required, use:
237
+ 6. If git push or pull is required, use:
230
238
  `mainsequence project open-signed-terminal <PROJECT_ID>`
231
- 11. Before proceeding with non-trivial Main Sequence work, update the project SDK:
239
+ 7. Before proceeding with non-trivial Main Sequence work, update the project SDK:
232
240
  `mainsequence project update-sdk --path .`
233
- 12. After updating the SDK, compare `mainsequence --version` with
234
- `.agents/skills/mainsequence/PINNED_FROM.txt` field `pinned_version=...`.
235
- 13. If `PINNED_FROM.txt` is missing or `pinned_version` differs from the installed
236
- SDK version, refresh the managed scaffold files:
237
- `mainsequence project update AGENTS.md --path .`
241
+ 8. After updating the SDK, compare `mainsequence --version` with
242
+ `.agents/skills/mainsequence/PINNED_FROM.txt` field `sdk_version=...`
243
+ (`pinned_version=...` is its compatibility alias), and verify that the
244
+ sentinel contains platform manifest and resource hashes.
245
+ 9. If `PINNED_FROM.txt` is missing, `sdk_version` differs from the installed
246
+ SDK version, or a platform-skill refresh is explicitly required, refresh
247
+ the managed scaffold files:
238
248
  `mainsequence project update_agent_skills --path .`
239
- 14. If `pinned_version` already matches the installed SDK version, do not refresh
240
- `AGENTS.md` or `.agents/skills/mainsequence/` as a startup ritual.
241
- 15. Verify platform state with the CLI or platform tooling instead of guessing.
249
+ `mainsequence project update AGENTS.md --path .`
250
+ 10. If `sdk_version` already matches the installed SDK version and no platform
251
+ refresh is required, do not refresh `AGENTS.md` or
252
+ `.agents/skills/mainsequence/` as a startup ritual.
253
+ 11. Verify platform state with the CLI or platform tooling instead of guessing.
242
254
 
243
255
  ## Orchestrator Rule
244
256
 
@@ -246,16 +258,23 @@ Use the skills as an orchestrated sequence, not as isolated documents.
246
258
 
247
259
  Default pattern:
248
260
 
249
- 1. `.agents/skills/mainsequence/project_builder/SKILL.md`
250
- 2. the relevant domain skill
251
-
252
- Before the final response:
261
+ 1. `.agents/skills/mainsequence/project_design/SKILL.md`
262
+ 2. `.agents/skills/mainsequence/sdk_project_execution/SKILL.md`
263
+ 3. the relevant domain skill
253
264
 
254
- - update the relevant `.agents/` project-state files whenever project understanding, verified
255
- state, open tasks, blockers, or historical record changed during the turn
265
+ When the intended project surface is a project-backed coding agent, apply
266
+ `.agents/skills/mainsequence/project_to_agent/SKILL.md` after the relevant
267
+ project behavior exists and has been verified. The repository source card is
268
+ not the runtime A2A Agent Card; the deployed runtime supplies its concrete
269
+ interfaces and security declarations.
256
270
 
257
- Always use `.agents/skills/mainsequence/project_builder/SKILL.md` as the source of truth for project
258
- scaffolding, folder structure, and standard repository layout.
271
+ Use `.agents/skills/mainsequence/project_design/SKILL.md` as the platform
272
+ source of truth for intent and ontology. Use
273
+ `.agents/skills/mainsequence/sdk_project_execution/SKILL.md` for installed-SDK,
274
+ CLI, filesystem, and local repository execution mechanics. Use
275
+ `.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md` for
276
+ repeatable environment, authentication, SDK, scaffold-refresh, and project-sync
277
+ routines.
259
278
 
260
279
  ## Core Working Rules
261
280
 
@@ -266,8 +285,8 @@ scaffolding, folder structure, and standard repository layout.
266
285
  - do not hide failures
267
286
  - record the exact failing step, command, or workflow
268
287
  - when hitting a roadblock, blocker, or error, report it back to the user clearly and promptly
269
- - if local code or local docs conflict with the latest Main Sequence docs, record the discrepancy
270
- and create follow-up work
288
+ - if local code or local docs conflict with the latest Main Sequence docs, report the discrepancy
289
+ and the concrete next action
271
290
  - when unsure, verify
272
291
  - if the active virtual environment is missing libraries that are already declared in
273
292
  `requirements.txt`, install those missing libraries into the virtual environment before
@@ -330,7 +349,7 @@ Rules:
330
349
 
331
350
  If something may be a Main Sequence SDK, documentation, or platform issue:
332
351
 
333
- - record what failed
352
+ - report what failed
334
353
  - explain why it may be a Main Sequence issue
335
354
  - suggest a concrete improvement
336
355
 
@@ -341,10 +360,4 @@ If something may be a Main Sequence SDK, documentation, or platform issue:
341
360
  - prefer explicit facts over vague statements
342
361
  - surface failures early
343
362
  - distinguish verified facts from assumptions
344
-
345
- ## Project-State Files Under `.agents/`
346
-
347
-
348
- Do not improvise their meaning in domain skills. Use the project bootstrap skill rules to reconcile
349
- them after material work.
350
363
  <!-- mainsequence-agent-scaffold:end -->
@@ -1,12 +1,15 @@
1
1
  ---
2
- name: a2a_communication
3
- description: Canonical guidance for discovering agents and sending session-scoped A2A requests through Main Sequence.
2
+ name: mainsequence-a2a-sdk-execution
3
+ description: Execute the platform A2A communication flow with the installed Main Sequence CLI or Python SDK after the platform-owned A2A skill has established the language-neutral protocol semantics.
4
4
  ---
5
5
 
6
- # A2A Communication
6
+ # Main Sequence A2A SDK Execution
7
7
 
8
- Use this skill when you need to discover another agent, create or resolve a
9
- target `AgentSession`, and send a bounded A2A request.
8
+ Use this SDK-owned execution skill after reading the platform-owned
9
+ `a2a_communication` skill. It provides concrete CLI and Python mechanics for
10
+ discovering another agent, creating or resolving a target `AgentSession`, and
11
+ sending a bounded A2A request. It is not the canonical platform protocol
12
+ definition.
10
13
 
11
14
  ## Canonical CLI Path
12
15
 
@@ -44,7 +44,7 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
44
44
  ## Route Adjacent Work
45
45
 
46
46
  - project bootstrap, scaffolding, and routing:
47
- `.agents/skills/mainsequence/project_builder/SKILL.md`
47
+ `.agents/skills/mainsequence/project_design/SKILL.md`
48
48
  - `DataNode` creation or modification:
49
49
  `.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
50
50
  - `MetaTable` registration or operation work:
@@ -20,8 +20,7 @@ This skill is for diagnosis and assessment. Default behavior is read-only unless
20
20
  ## This Skill Can Do
21
21
 
22
22
  - inspect project state and summarize completion status
23
- - read `.agents/tasks.md` and `.agents/status.md` first when they exist
24
- - use repo state, logs, test output, stderr, and task files as evidence
23
+ - use repo state, logs, test output, and stderr as evidence
25
24
  - classify failures into:
26
25
  - target-project issue
27
26
  - environment or credentials issue
@@ -49,7 +48,7 @@ This skill audits. It does not implement by default.
49
48
  ## Route Adjacent Work
50
49
 
51
50
  - bootstrap, routing, and repo structure:
52
- `.agents/skills/mainsequence/project_builder/SKILL.md`
51
+ `.agents/skills/mainsequence/project_design/SKILL.md`
53
52
  - DataNode implementation issues:
54
53
  `.agents/skills/mainsequence/data_publishing/data_nodes/SKILL.md`
55
54
  - MetaTable implementation issues:
@@ -62,18 +61,17 @@ This skill audits. It does not implement by default.
62
61
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
63
62
  - Streamlit dashboard deployment or release issues:
64
63
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
64
+ - environment repair, authentication refresh, SDK updates, managed skill
65
+ refresh, and project sync after the failure is classified:
66
+ `.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
65
67
 
66
68
  Streamlit dashboard design and implementation failures are target-project application code issues unless the evidence points to Main Sequence deployment, resource discovery, image selection, release creation, or platform runtime behavior.
67
69
 
68
70
  ## Read First
69
71
 
70
72
  1. `AGENTS.md`
71
- 2. `.agents/skills/mainsequence/project_builder/SKILL.md`
72
- 3. `.agents/tasks.md` when it exists
73
- 4. `.agents/status.md` when it exists
74
- 5. `.agents/record.md` when stable references or project ids matter
75
- 6. `.agents/journal.md` when repeated failures or prior investigations may be relevant
76
- 7. the latest relevant Main Sequence docs for the failing workflow
73
+ 2. `.agents/skills/mainsequence/project_design/SKILL.md`
74
+ 3. the latest relevant Main Sequence docs for the failing workflow
77
75
 
78
76
  ## Inputs This Skill Needs
79
77
 
@@ -101,17 +99,15 @@ For every audit, decide:
101
99
 
102
100
  ### 1. Stay read-only unless edits were explicitly requested
103
101
 
104
- Do not modify code, docs, or project-state files unless the task explicitly asks for edits.
102
+ Do not modify code or docs unless the task explicitly asks for edits.
105
103
 
106
- ### 2. Start with project-state files
104
+ ### 2. Start with current evidence
107
105
 
108
- Read `.agents/tasks.md` and `.agents/status.md` first when they exist.
109
-
110
- Use them as hypotheses, not as proof.
106
+ Inspect the repository state, available logs, failing commands, stderr, and test output.
111
107
 
112
108
  ### 3. Use evidence, not impressions
113
109
 
114
- Use repo state, logs, test output, stderr, and task files as evidence.
110
+ Use repo state, logs, test output, and stderr as evidence.
115
111
 
116
112
  When reporting a blocker or failure, include:
117
113
 
@@ -127,7 +123,6 @@ Before each major investigation step, emit a short progress update that says wha
127
123
 
128
124
  Especially announce when you are:
129
125
 
130
- - reading `.agents/tasks.md` or `.agents/status.md`
131
126
  - inspecting a failing command, traceback, or stderr excerpt
132
127
  - checking the local `mainsequence` package or version
133
128
  - inspecting or cloning the public `mainsequence-sdk` repository
@@ -184,7 +179,6 @@ When reviewing an audit, look for:
184
179
 
185
180
  Do not claim audit completion until you have checked:
186
181
 
187
- - `.agents/tasks.md` and `.agents/status.md` first when they exist
188
182
  - the overall state is one of:
189
183
  - `finished`
190
184
  - `in_progress`
@@ -0,0 +1,200 @@
1
+ ---
2
+ name: project-maintenance
3
+ description: Maintain an existing Main Sequence project checkout using the SDK-version-matched CLI. Use for inspecting project state, building or repairing .venv, refreshing local project authentication, updating the SDK, refreshing SDK and platform skills plus AGENTS.md, publishing changes with project sync, or diagnosing a partially completed maintenance workflow.
4
+ ---
5
+
6
+ # Main Sequence Project Maintenance
7
+
8
+ Maintain the local project through the installed Main Sequence CLI. Treat the
9
+ CLI as the canonical implementation of SDK-version-specific filesystem, `uv`,
10
+ authentication, scaffold, and Git behavior. Select and sequence commands here;
11
+ do not reproduce their Python implementation or replace them with ad hoc shell
12
+ workflows.
13
+
14
+ ## Preserve The Boundary
15
+
16
+ Own:
17
+
18
+ - local project inspection and maintenance sequencing;
19
+ - `.venv`, SDK, managed skill, `AGENTS.md`, and Git-release workflows;
20
+ - precondition checks, explicit approval gates, and partial-failure diagnosis.
21
+
22
+ Do not own:
23
+
24
+ - platform ontology or Project Blueprint design;
25
+ - domain implementation for MetaTables, DataNodes, APIs, jobs, or releases;
26
+ - backend repository reconciliation;
27
+ - MCP authentication or access-token extraction;
28
+ - project-owned skills outside `.agents/skills/mainsequence/`.
29
+
30
+ Route architecture changes to `project_design`, implementation routing to
31
+ `sdk_project_execution`, and failure classification to
32
+ `maintenance/bug_auditor` when diagnosis extends beyond the maintenance
33
+ workflow itself.
34
+
35
+ ## Inspect Before Changing State
36
+
37
+ 1. Read `AGENTS.md` and the relevant repository skills.
38
+ 2. Confirm the repository root and the user's requested maintenance outcome.
39
+ 3. Inspect project and Git state:
40
+
41
+ ```bash
42
+ mainsequence project current --debug --json
43
+ mainsequence project sdk-status --path . --json
44
+ git status --short
45
+ ```
46
+
47
+ 4. Separate existing user changes from changes created by the maintenance
48
+ task. Never assume every uncommitted file belongs to the current task.
49
+ 5. Read command help when the installed SDK differs from the instructions in
50
+ this skill. The installed CLI is authoritative for its version.
51
+
52
+ If `mainsequence` is unavailable, stop and report that the SDK CLI must be
53
+ installed or provided by the local development integration. Do not use an MCP
54
+ bearer token or an unpinned downloaded CLI as a substitute.
55
+
56
+ ## Build Or Repair The Local Environment
57
+
58
+ Build the project environment with:
59
+
60
+ ```bash
61
+ mainsequence project build_local_venv --path .
62
+ ```
63
+
64
+ The command reads the project Python requirement, resolves `uv`, creates
65
+ `.venv`, and synchronizes dependencies. Do not manually parse
66
+ `pyproject.toml` or reconstruct those steps.
67
+
68
+ When an existing `.venv` is incompatible, show the detected mismatch and ask
69
+ before replacing it. Only then run:
70
+
71
+ ```bash
72
+ mainsequence project build_local_venv --path . --recreate
73
+ ```
74
+
75
+ Treat `.venv` as generated state, never as source code or durable project
76
+ documentation.
77
+
78
+ ## Refresh Project Authentication
79
+
80
+ Refresh only the CLI-managed runtime authentication entries in the project
81
+ `.env`:
82
+
83
+ ```bash
84
+ mainsequence project refresh_token --path .
85
+ ```
86
+
87
+ Require normal Main Sequence CLI login first. Never print, inspect, summarize,
88
+ copy, or return access and refresh token values. Do not attempt to extract the
89
+ calling MCP host's protected bearer token. If authentication is unavailable,
90
+ stop and request login through the normal CLI or development integration.
91
+
92
+ ## Update The Project SDK
93
+
94
+ Inspect the current status, preview the update, and then update when requested
95
+ or required by repository instructions:
96
+
97
+ ```bash
98
+ mainsequence project sdk-status --path . --json
99
+ mainsequence project update-sdk --path . --dry-run
100
+ mainsequence project update-sdk --path .
101
+ ```
102
+
103
+ `update-sdk` updates the lock and local environment. It does not publish the
104
+ working tree. After the SDK changes, refresh the managed agent context and run
105
+ the repository-specific validation required by `AGENTS.md`.
106
+
107
+ Do not automatically commit or push an SDK update unless the user also asked
108
+ to publish the project changes.
109
+
110
+ ## Refresh Managed Skills And Instructions
111
+
112
+ Refresh the SDK-owned and platform-owned skills first, then update the managed
113
+ Main Sequence block in `AGENTS.md`:
114
+
115
+ ```bash
116
+ mainsequence project update_agent_skills --path .
117
+ mainsequence project update AGENTS.md --path .
118
+ ```
119
+
120
+ Verify `.agents/skills/mainsequence/PINNED_FROM.txt` after success:
121
+
122
+ - `sdk_version` must match the installed project SDK;
123
+ - platform manifest, ontology, and resource hashes must be present;
124
+ - project-owned skills outside `.agents/skills/mainsequence/` must remain
125
+ untouched.
126
+
127
+ The skill update is staged and atomic. If it fails, report the failing lane and
128
+ preserve the previous valid managed tree. Because this operation can update
129
+ this skill, reload the refreshed `project-maintenance/SKILL.md` before starting
130
+ another maintenance routine.
131
+
132
+ ## Publish With Canonical Project Sync
133
+
134
+ Use project sync only when the user intends to commit, tag, and push all
135
+ reviewed project changes.
136
+
137
+ Before execution:
138
+
139
+ ```bash
140
+ git status --short
141
+ git diff --stat
142
+ mainsequence project sync --path . -m "<specific commit message>" --dry-run
143
+ ```
144
+
145
+ Review every pending file because the command stages with `git add -A`. Do not
146
+ continue when unrelated or unexplained changes would be included.
147
+
148
+ After review:
149
+
150
+ ```bash
151
+ mainsequence project sync --path . -m "<specific commit message>"
152
+ ```
153
+
154
+ The canonical command always:
155
+
156
+ 1. applies a patch version bump;
157
+ 2. runs `uv lock`;
158
+ 3. runs `uv sync`;
159
+ 4. exports locked production requirements;
160
+ 5. stages and commits the changes;
161
+ 6. creates an annotated `v<version>` tag; and
162
+ 7. pushes the branch and tag with `--follow-tags`.
163
+
164
+ Do not offer alternate bump modes, a no-push mode, or a hand-written sequence
165
+ of equivalent commands. Do not call `sync-after-commit` or any backend repair
166
+ endpoint. The GitHub branch-push webhook owns backend repository
167
+ reconciliation.
168
+
169
+ ## Diagnose Partial Completion Before Retrying
170
+
171
+ Never rerun an entire mutating workflow blindly.
172
+
173
+ - After an environment failure, inspect `.venv`, the declared Python
174
+ requirement, and the exact failing `uv` output.
175
+ - After an SDK update failure, inspect `pyproject.toml`, `uv.lock`, the active
176
+ environment, and the failed command before retrying.
177
+ - After a skill refresh failure, keep the previous managed tree and identify
178
+ whether the SDK or platform lane failed.
179
+ - After a sync failure, inspect `git status`, `git log -1`, the current project
180
+ version, tags pointing at `HEAD`, the upstream branch, and remote tags before
181
+ deciding which step remains.
182
+
183
+ A blind sync retry may create another patch bump or collide with an existing
184
+ commit or tag.
185
+
186
+ ## Validate And Report
187
+
188
+ Run only repository-relevant validation discovered from `AGENTS.md`, project
189
+ documentation, and the changed files. Report:
190
+
191
+ - the maintenance routine performed;
192
+ - the project path and installed SDK version;
193
+ - files or generated state changed;
194
+ - validation run and its result;
195
+ - whether changes remain local or were committed, tagged, and pushed;
196
+ - any remaining authentication, environment, Git, or webhook verification
197
+ gap.
198
+
199
+ Never claim backend reconciliation succeeded solely because the local push
200
+ succeeded. Verify backend state separately when the task requires that claim.