mainsequence 5.0.1__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 (162) hide show
  1. {mainsequence-5.0.1/mainsequence.egg-info → mainsequence-5.0.2}/PKG-INFO +1 -1
  2. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/AGENTS.md +23 -39
  3. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +9 -15
  4. mainsequence-5.0.2/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +200 -0
  5. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/sdk_project_execution/SKILL.md +3 -0
  6. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/api.py +0 -56
  7. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/cli.py +13 -105
  8. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/local_ops.py +27 -2
  9. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_foundry.py +0 -26
  10. {mainsequence-5.0.1 → mainsequence-5.0.2/mainsequence.egg-info}/PKG-INFO +1 -1
  11. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/SOURCES.txt +1 -0
  12. {mainsequence-5.0.1 → mainsequence-5.0.2}/pyproject.toml +1 -1
  13. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli.py +10 -181
  14. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_project_skills.py +75 -22
  15. {mainsequence-5.0.1 → mainsequence-5.0.2}/LICENSE +0 -0
  16. {mainsequence-5.0.1 → mainsequence-5.0.2}/README.md +0 -0
  17. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  18. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  19. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
  20. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  21. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
  22. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +0 -0
  23. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
  24. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
  25. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  26. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
  27. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
  28. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  29. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  30. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  31. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  32. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  33. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  34. {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  35. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/__init__.py +0 -0
  36. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/__main__.py +0 -0
  37. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/bootstrap.py +0 -0
  38. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/__init__.py +0 -0
  39. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/browser_auth.py +0 -0
  40. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/config.py +0 -0
  41. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/docker_utils.py +0 -0
  42. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/doctor.py +0 -0
  43. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/migrations.py +0 -0
  44. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/model_filters.py +0 -0
  45. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/project_status.py +0 -0
  46. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/pydantic_cli.py +0 -0
  47. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/sdk_utils.py +0 -0
  48. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/ssh_utils.py +0 -0
  49. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/ui.py +0 -0
  50. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/__init__.py +0 -0
  51. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/agent_runtime_models.py +0 -0
  52. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/base.py +0 -0
  53. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/client.py +0 -0
  54. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/__init__.py +0 -0
  55. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/app_component.py +0 -0
  56. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/connections.py +0 -0
  57. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/__init__.py +0 -0
  58. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
  59. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
  60. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
  61. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/tabular.py +0 -0
  62. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/ui.py +0 -0
  63. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/data_models.py +0 -0
  64. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/__init__.py +0 -0
  65. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
  66. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/__init__.py +0 -0
  67. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/bindings.py +0 -0
  68. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
  69. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/registry.py +0 -0
  70. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/table.py +0 -0
  71. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
  72. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace.py +0 -0
  73. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  74. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
  75. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/documents.py +0 -0
  76. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
  77. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/compute_validation.py +0 -0
  78. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  79. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  80. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  81. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  82. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/dtype_codec.py +0 -0
  83. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/exceptions.py +0 -0
  84. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/fastapi/__init__.py +0 -0
  85. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/fastapi/auth.py +0 -0
  86. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/metatables/__init__.py +0 -0
  87. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/metatables/core.py +0 -0
  88. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_helpers.py +0 -0
  89. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_user.py +0 -0
  90. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/utils.py +0 -0
  91. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/defaults.py +0 -0
  92. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/instrumentation/__init__.py +0 -0
  93. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/instrumentation/utils.py +0 -0
  94. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/logconf.py +0 -0
  95. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/__init__.py +0 -0
  96. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/__main__.py +0 -0
  97. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  98. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  99. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  100. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  101. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  102. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  103. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  104. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  105. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  106. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  107. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/future_registry.py +0 -0
  108. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/hashing.py +0 -0
  109. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  110. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  111. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/env.py +0 -0
  112. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/provider.py +0 -0
  113. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/registry.py +0 -0
  114. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  115. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  116. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  117. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  118. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  119. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/schema_names.py +0 -0
  120. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  121. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/project_skills.py +0 -0
  122. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/runtime_flags.py +0 -0
  123. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/scaffold_skills.py +0 -0
  124. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/dependency_links.txt +0 -0
  125. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/entry_points.txt +0 -0
  126. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/requires.txt +0 -0
  127. {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/top_level.txt +0 -0
  128. {mainsequence-5.0.1 → mainsequence-5.0.2}/setup.cfg +0 -0
  129. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_auth_precedence.py +0 -0
  130. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_build_operations_hashing.py +0 -0
  131. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli_browser_auth.py +0 -0
  132. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli_migrations.py +0 -0
  133. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_client.py +0 -0
  134. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_app_component_models.py +0 -0
  135. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_data_models.py +0 -0
  136. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_models.py +0 -0
  137. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_table_contracts.py +0 -0
  138. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_tabular_transform.py +0 -0
  139. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  140. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_node_storage_dimension_queries.py +0 -0
  141. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_node_update_flow.py +0 -0
  142. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_dependency_extras.py +0 -0
  143. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_duckdb_interface_dimensions.py +0 -0
  144. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_filter_normalization.py +0 -0
  145. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_instrumentation.py +0 -0
  146. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_logconf.py +0 -0
  147. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_table_migrations.py +0 -0
  148. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_tables_client_models.py +0 -0
  149. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  150. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_models_user_request_bound_auth.py +0 -0
  151. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_pod_project_resolution.py +0 -0
  152. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_project_batch_jobs_from_file.py +0 -0
  153. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_run_configuration.py +0 -0
  154. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_scaffold_skills.py +0 -0
  155. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_schema_names.py +0 -0
  156. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_secret_client_model.py +0 -0
  157. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_source_table_configuration.py +0 -0
  158. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_sqlite_interface_dimensions.py +0 -0
  159. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_runner_uid_runtime.py +0 -0
  160. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_statistics.py +0 -0
  161. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_uid_guards.py +0 -0
  162. {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_workspace_snapshot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 5.0.1
3
+ Version: 5.0.2
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -40,8 +40,8 @@ Compare the SDK value with the installed version reported by
40
40
  Refresh the managed scaffold only when `PINNED_FROM.txt` is missing or its
41
41
  `pinned_version` differs from the installed SDK version:
42
42
 
43
- - `mainsequence project update AGENTS.md --path .`
44
43
  - `mainsequence project update_agent_skills --path .`
44
+ - `mainsequence project update AGENTS.md --path .`
45
45
 
46
46
  If `sdk_version` already matches the installed SDK version and no explicit
47
47
  platform-skill refresh is needed, do not refresh `AGENTS.md` or
@@ -76,8 +76,7 @@ Core responsibilities:
76
76
  - translate user business logic into reusable code under `src/` so it can be reused by APIs,
77
77
  dashboards, jobs, and other project components instead of duplicating logic in integration
78
78
  layers
79
- - maintain the repository through explicit `.agents/` project-state files and the bug auditor skill
80
- for blocker and SDK/platform issue assessment
79
+ - use the bug auditor skill for blocker and SDK/platform issue assessment
81
80
 
82
81
  Typical outcomes include:
83
82
 
@@ -89,7 +88,7 @@ Typical outcomes include:
89
88
  Center surface before building or deploying it
90
89
  - build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
91
90
  dashboards
92
- - 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
93
92
 
94
93
  Working rules for this role:
95
94
 
@@ -117,13 +116,6 @@ User-resolution rule for agents:
117
116
 
118
117
  Delegation rules:
119
118
 
120
- - when work is delegated or queued for later, write the task in `.agents/tasks.md` according to
121
- the skill that should execute it
122
- - each delegated or queued task in `.agents/tasks.md` must state:
123
- - the exact task scope
124
- - the owning skill
125
- - the expected output, decision, or artifact
126
- - the validation or evidence required before it can be marked complete
127
119
  - if delegation is available, declare for each sub-agent:
128
120
  - the exact task it owns
129
121
  - the exact skill or skills it must use
@@ -190,6 +182,9 @@ Typical routing:
190
182
  - project setup, local checkout, CLI environment, scaffolding, and standard
191
183
  repository layout:
192
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`
193
188
  - turning an existing project into a project-backed coding agent, defining
194
189
  project-owned skills, and authoring `.agents/agent_card.json`:
195
190
  `.agents/skills/mainsequence/project_to_agent/SKILL.md`
@@ -234,31 +229,28 @@ For any non-trivial Main Sequence task:
234
229
 
235
230
  1. Read the latest relevant Main Sequence documentation.
236
231
  2. Compare the implementation against the latest documented behavior.
237
-
238
- 4. Check `.agents/tasks.md` for current priorities.
239
-
240
- 7. Confirm you are in the correct project checkout, or use `--path` explicitly.
241
- 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:
242
234
  `mainsequence project current --debug`
243
- 9. Before validations or live checks, run:
235
+ 5. Before validations or live checks, run:
244
236
  `mainsequence project refresh_token --path .`
245
- 10. If git push or pull is required, use:
237
+ 6. If git push or pull is required, use:
246
238
  `mainsequence project open-signed-terminal <PROJECT_ID>`
247
- 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:
248
240
  `mainsequence project update-sdk --path .`
249
- 12. After updating the SDK, compare `mainsequence --version` with
241
+ 8. After updating the SDK, compare `mainsequence --version` with
250
242
  `.agents/skills/mainsequence/PINNED_FROM.txt` field `sdk_version=...`
251
243
  (`pinned_version=...` is its compatibility alias), and verify that the
252
244
  sentinel contains platform manifest and resource hashes.
253
- 13. If `PINNED_FROM.txt` is missing, `sdk_version` differs from the installed
245
+ 9. If `PINNED_FROM.txt` is missing, `sdk_version` differs from the installed
254
246
  SDK version, or a platform-skill refresh is explicitly required, refresh
255
247
  the managed scaffold files:
256
- `mainsequence project update AGENTS.md --path .`
257
248
  `mainsequence project update_agent_skills --path .`
258
- 14. If `sdk_version` already matches the installed SDK version and no platform
249
+ `mainsequence project update AGENTS.md --path .`
250
+ 10. If `sdk_version` already matches the installed SDK version and no platform
259
251
  refresh is required, do not refresh `AGENTS.md` or
260
252
  `.agents/skills/mainsequence/` as a startup ritual.
261
- 15. Verify platform state with the CLI or platform tooling instead of guessing.
253
+ 11. Verify platform state with the CLI or platform tooling instead of guessing.
262
254
 
263
255
  ## Orchestrator Rule
264
256
 
@@ -276,15 +268,13 @@ project behavior exists and has been verified. The repository source card is
276
268
  not the runtime A2A Agent Card; the deployed runtime supplies its concrete
277
269
  interfaces and security declarations.
278
270
 
279
- Before the final response:
280
-
281
- - update the relevant `.agents/` project-state files whenever project understanding, verified
282
- state, open tasks, blockers, or historical record changed during the turn
283
-
284
271
  Use `.agents/skills/mainsequence/project_design/SKILL.md` as the platform
285
272
  source of truth for intent and ontology. Use
286
273
  `.agents/skills/mainsequence/sdk_project_execution/SKILL.md` for installed-SDK,
287
- CLI, filesystem, and local repository execution mechanics.
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.
288
278
 
289
279
  ## Core Working Rules
290
280
 
@@ -295,8 +285,8 @@ CLI, filesystem, and local repository execution mechanics.
295
285
  - do not hide failures
296
286
  - record the exact failing step, command, or workflow
297
287
  - when hitting a roadblock, blocker, or error, report it back to the user clearly and promptly
298
- - if local code or local docs conflict with the latest Main Sequence docs, record the discrepancy
299
- 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
300
290
  - when unsure, verify
301
291
  - if the active virtual environment is missing libraries that are already declared in
302
292
  `requirements.txt`, install those missing libraries into the virtual environment before
@@ -359,7 +349,7 @@ Rules:
359
349
 
360
350
  If something may be a Main Sequence SDK, documentation, or platform issue:
361
351
 
362
- - record what failed
352
+ - report what failed
363
353
  - explain why it may be a Main Sequence issue
364
354
  - suggest a concrete improvement
365
355
 
@@ -370,10 +360,4 @@ If something may be a Main Sequence SDK, documentation, or platform issue:
370
360
  - prefer explicit facts over vague statements
371
361
  - surface failures early
372
362
  - distinguish verified facts from assumptions
373
-
374
- ## Project-State Files Under `.agents/`
375
-
376
-
377
- Do not improvise their meaning in domain skills. Use the project bootstrap skill rules to reconcile
378
- them after material work.
379
363
  <!-- mainsequence-agent-scaffold:end -->
@@ -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
@@ -62,6 +61,9 @@ 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
 
@@ -69,11 +71,7 @@ Streamlit dashboard design and implementation failures are target-project applic
69
71
 
70
72
  1. `AGENTS.md`
71
73
  2. `.agents/skills/mainsequence/project_design/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
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.
@@ -65,6 +65,9 @@ Do not let this skill become a domain manual.
65
65
  `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
66
66
  - project audits, blocker analysis, and upstream SDK assessment:
67
67
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
68
+ - local environment repair, project authentication refresh, SDK updates,
69
+ managed skill refresh, and canonical project sync:
70
+ `.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
68
71
  - jobs, schedules, artifacts, images, resources, releases, and Streamlit dashboard deployment:
69
72
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
70
73
  - RBAC and sharing:
@@ -2062,62 +2062,6 @@ def get_project_data_node_updates(
2062
2062
  os.environ[k] = v
2063
2063
 
2064
2064
 
2065
- def sync_project_after_commit(
2066
- project_id: int | str, *, timeout: int | None = None
2067
- ) -> dict[str, Any] | None:
2068
- """
2069
- Notify the backend that a project commit has been pushed.
2070
-
2071
- Single source of truth:
2072
- - delegates request behavior and payload parsing to `Project.sync_project_after_commit()`
2073
- """
2074
- try:
2075
- project_uid = resolve_project_uid(project_id)
2076
- payload = _run_sdk_model_operation(
2077
- module_name="mainsequence.client.models_foundry",
2078
- class_name="Project",
2079
- operation=lambda ClientProject: ClientProject.sync_project_after_commit(
2080
- project_uid,
2081
- timeout=timeout,
2082
- ),
2083
- project_id_env=resolve_project_row_id(project_id),
2084
- project_uid_env=project_uid,
2085
- )
2086
- if payload is None:
2087
- return None
2088
- if isinstance(payload, dict):
2089
- return payload
2090
- if hasattr(payload, "model_dump"):
2091
- return payload.model_dump()
2092
- return {"id": getattr(payload, "id", None)}
2093
- except Exception as e:
2094
- err_name = type(e).__name__
2095
- if err_name in {"AuthenticationError", "PermissionDeniedError"}:
2096
- raise NotLoggedIn(str(e) or "Not logged in.") from e
2097
- if err_name == "NotFoundError":
2098
- raise ApiError(f"Project not found: {project_id}") from e
2099
- raise ApiError(f"Project post-commit sync failed: {e}") from e
2100
-
2101
-
2102
- def prime_sync_project_after_commit_sdk() -> None:
2103
- """
2104
- Load the SDK modules needed by `sync_project_after_commit()` before the active
2105
- virtual environment is mutated by `uv sync`.
2106
-
2107
- `project sync` runs inside the same `.venv` that it later updates. If the
2108
- environment changes during the command, a fresh `mainsequence.client` import
2109
- can fail late in the flow. Priming the relevant SDK modules first keeps the
2110
- post-commit sync path available in the current process.
2111
- """
2112
- try:
2113
- importlib.import_module("mainsequence.client")
2114
- importlib.import_module("mainsequence.client.utils")
2115
- importlib.import_module("mainsequence.client.base")
2116
- importlib.import_module("mainsequence.client.models_foundry")
2117
- except Exception as e:
2118
- raise ApiError(f"Project post-commit SDK import failed: {e}") from e
2119
-
2120
-
2121
2065
  def create_project_image(
2122
2066
  *,
2123
2067
  project_repo_hash: str,