mainsequence 4.4.27__tar.gz → 4.4.29__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 (161) hide show
  1. {mainsequence-4.4.27 → mainsequence-4.4.29}/PKG-INFO +1 -1
  2. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/AGENTS.md +10 -5
  3. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +3 -3
  4. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/connections/SKILL.md +1 -1
  5. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +4 -4
  6. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +4 -4
  7. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +2 -2
  8. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_access/exploration/SKILL.md +4 -2
  9. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +4 -2
  10. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +5 -3
  11. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +35 -6
  12. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/project_builder/SKILL.md +4 -4
  13. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/agent_runtime_models.py +44 -4
  14. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/PKG-INFO +1 -1
  15. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/SOURCES.txt +0 -1
  16. {mainsequence-4.4.27 → mainsequence-4.4.29}/pyproject.toml +1 -1
  17. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_filter_normalization.py +22 -3
  18. mainsequence-4.4.27/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -193
  19. {mainsequence-4.4.27 → mainsequence-4.4.29}/LICENSE +0 -0
  20. {mainsequence-4.4.27 → mainsequence-4.4.29}/README.md +0 -0
  21. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
  22. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
  23. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  24. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
  25. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
  26. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  27. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  28. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  29. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  30. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  31. {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
  32. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/__init__.py +0 -0
  33. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/__main__.py +0 -0
  34. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/bootstrap.py +0 -0
  35. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/__init__.py +0 -0
  36. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/api.py +0 -0
  37. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/browser_auth.py +0 -0
  38. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/cli.py +0 -0
  39. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/config.py +0 -0
  40. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/docker_utils.py +0 -0
  41. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/doctor.py +0 -0
  42. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/local_ops.py +0 -0
  43. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/migrations.py +0 -0
  44. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/model_filters.py +0 -0
  45. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/project_status.py +0 -0
  46. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/pydantic_cli.py +0 -0
  47. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/sdk_utils.py +0 -0
  48. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/ssh_utils.py +0 -0
  49. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/ui.py +0 -0
  50. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/__init__.py +0 -0
  51. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/base.py +0 -0
  52. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/client.py +0 -0
  53. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/__init__.py +0 -0
  54. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/app_component.py +0 -0
  55. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/connections.py +0 -0
  56. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/__init__.py +0 -0
  57. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
  58. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
  59. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
  60. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/tabular.py +0 -0
  61. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/ui.py +0 -0
  62. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/data_models.py +0 -0
  63. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/providers/__init__.py +0 -0
  64. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
  65. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/__init__.py +0 -0
  66. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/bindings.py +0 -0
  67. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
  68. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/registry.py +0 -0
  69. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/table.py +0 -0
  70. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
  71. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspace.py +0 -0
  72. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  73. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
  74. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/documents.py +0 -0
  75. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
  76. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/compute_validation.py +0 -0
  77. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  78. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  79. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  80. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  81. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/dtype_codec.py +0 -0
  82. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/exceptions.py +0 -0
  83. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/fastapi/__init__.py +0 -0
  84. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/fastapi/auth.py +0 -0
  85. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/metatables/__init__.py +0 -0
  86. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/metatables/core.py +0 -0
  87. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_foundry.py +0 -0
  88. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_helpers.py +0 -0
  89. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_user.py +0 -0
  90. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/utils.py +0 -0
  91. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/defaults.py +0 -0
  92. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/instrumentation/__init__.py +0 -0
  93. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/instrumentation/utils.py +0 -0
  94. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/logconf.py +0 -0
  95. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/__init__.py +0 -0
  96. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/__main__.py +0 -0
  97. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  98. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  99. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  100. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  101. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  102. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  103. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  104. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  105. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  106. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  107. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/future_registry.py +0 -0
  108. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/hashing.py +0 -0
  109. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  110. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  111. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/env.py +0 -0
  112. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/provider.py +0 -0
  113. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/registry.py +0 -0
  114. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  115. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  116. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  117. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  118. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  119. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/schema_names.py +0 -0
  120. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  121. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/runtime_flags.py +0 -0
  122. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/scaffold_skills.py +0 -0
  123. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/dependency_links.txt +0 -0
  124. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/entry_points.txt +0 -0
  125. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/requires.txt +0 -0
  126. {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/top_level.txt +0 -0
  127. {mainsequence-4.4.27 → mainsequence-4.4.29}/setup.cfg +0 -0
  128. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_auth_precedence.py +0 -0
  129. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_build_operations_hashing.py +0 -0
  130. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli.py +0 -0
  131. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli_browser_auth.py +0 -0
  132. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli_migrations.py +0 -0
  133. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_client.py +0 -0
  134. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_app_component_models.py +0 -0
  135. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_data_models.py +0 -0
  136. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_models.py +0 -0
  137. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_table_contracts.py +0 -0
  138. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_tabular_transform.py +0 -0
  139. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  140. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_node_storage_dimension_queries.py +0 -0
  141. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_node_update_flow.py +0 -0
  142. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_dependency_extras.py +0 -0
  143. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_duckdb_interface_dimensions.py +0 -0
  144. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_instrumentation.py +0 -0
  145. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_logconf.py +0 -0
  146. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_table_migrations.py +0 -0
  147. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_tables_client_models.py +0 -0
  148. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  149. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_models_user_request_bound_auth.py +0 -0
  150. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_pod_project_resolution.py +0 -0
  151. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_project_batch_jobs_from_file.py +0 -0
  152. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_run_configuration.py +0 -0
  153. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_scaffold_skills.py +0 -0
  154. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_schema_names.py +0 -0
  155. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_secret_client_model.py +0 -0
  156. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_source_table_configuration.py +0 -0
  157. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_sqlite_interface_dimensions.py +0 -0
  158. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_runner_uid_runtime.py +0 -0
  159. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_statistics.py +0 -0
  160. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_uid_guards.py +0 -0
  161. {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_workspace_snapshot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.27
3
+ Version: 4.4.29
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -53,7 +53,8 @@ Core responsibilities:
53
53
  - for data publishing and data pipelines, use `DataNode`s and `MetaTable`s
54
54
  - for serving application or widget-facing surfaces, use `FastAPI`
55
55
  - for visualization, confirm the delivery target with the user:
56
- - if they want something quick for testing or iteration, use Streamlit
56
+ - if they want a Streamlit app, treat app design and implementation as project-owned code and
57
+ use Main Sequence skills only for platform deployment and release verification
57
58
  - if they want reusable components and a more structured product surface, use Command Center
58
59
  - for scheduled execution, releases, and backend operations, use jobs, images, resources, and
59
60
  other platform objects through the proper platform skills
@@ -72,8 +73,8 @@ Typical outcomes include:
72
73
  - build a `MetaTable` to record operational or application data
73
74
  - build a `FastAPI` API that reads project data and returns widget-ready or
74
75
  application-ready responses
75
- - confirm whether a visualization should be a quick Streamlit surface or a reusable Command Center
76
- surface before building it
76
+ - confirm whether a visualization should be a project-owned Streamlit app or a reusable Command
77
+ Center surface before building or deploying it
77
78
  - build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
78
79
  dashboards
79
80
  - keep the repository auditable through maintenance, journaling, and bug reporting
@@ -204,8 +205,12 @@ Typical routing:
204
205
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
205
206
  - RBAC, sharing, constants, secrets, and access verification:
206
207
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
207
- - dashboards:
208
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
208
+ - Streamlit dashboard deployment and release verification:
209
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
210
+
211
+ Streamlit dashboard design and implementation are app-owned project work, not a separate Main
212
+ Sequence scaffold skill. Route only deployment of an already-authored Streamlit dashboard to
213
+ orchestration and releases.
209
214
 
210
215
  ## Mandatory Startup Sequence
211
216
 
@@ -39,7 +39,7 @@ This skill must not claim ownership of:
39
39
  - workspace document creation or mutation
40
40
  - AppComponent custom form design
41
41
  - job creation, scheduling, image pinning, or releases
42
- - Streamlit dashboard implementation
42
+ - Streamlit dashboard design or implementation
43
43
  - non-FastAPI API framework choices for Main Sequence project APIs
44
44
 
45
45
  ## Route Adjacent Work
@@ -62,8 +62,8 @@ This skill must not claim ownership of:
62
62
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
63
63
  - Jobs, images, resources, and releases:
64
64
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
65
- - Streamlit dashboards:
66
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
65
+
66
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence platform skill. Route Streamlit deployment only through orchestration and releases.
67
67
 
68
68
  ## Read First
69
69
 
@@ -45,7 +45,7 @@ This skill must not claim ownership of:
45
45
  - AppComponent custom forms or action contracts
46
46
  - generic FastAPI endpoint design
47
47
  - backend resource and release creation
48
- - Streamlit dashboards
48
+ - Streamlit dashboard design or implementation
49
49
 
50
50
  ## Route Adjacent Work
51
51
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: command-center-app-components
3
- description: Use this skill when the task is about AppComponent widgets in a Main Sequence project. This skill owns AppComponent generated request forms, response-side editable-form and notification UI contracts, dynamic request/response binding contracts, and the boundary between AppComponent responses and widget-facing output contracts, including requiring generic tabular consumers to receive core.tabular_frame@v1 instead of ad hoc AppComponent JSON. Before changing AppComponent payloads or contracts, verify the target widget in the Command Center registry through the CLI. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only if the first two still leave something unresolved. Main Sequence is platform-first: if an AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the AppComponent is considered usable from Command Center. Resource and release creation belong to the orchestration-and-releases skill. It does not own workspace layout, generic FastAPI design, or Streamlit dashboards.
3
+ description: Use this skill when the task is about AppComponent widgets in a Main Sequence project. This skill owns AppComponent generated request forms, response-side editable-form and notification UI contracts, dynamic request/response binding contracts, and the boundary between AppComponent responses and widget-facing output contracts, including requiring generic tabular consumers to receive core.tabular_frame@v1 instead of ad hoc AppComponent JSON. Before changing AppComponent payloads or contracts, verify the target widget in the Command Center registry through the CLI. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only if the first two still leave something unresolved. Main Sequence is platform-first: if an AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the AppComponent is considered usable from Command Center. Resource and release creation belong to the orchestration-and-releases skill. It does not own workspace layout, generic FastAPI design, or Streamlit dashboard design or implementation.
4
4
  ---
5
5
 
6
6
  # Command Center AppComponents
@@ -40,7 +40,7 @@ This skill must not claim ownership of:
40
40
  - generic FastAPI route architecture
41
41
  - tabular or operational data producer design
42
42
  - MetaTable schema design
43
- - Streamlit dashboard implementation
43
+ - Streamlit dashboard design or implementation
44
44
  - scheduling, image pinning, resources, or releases
45
45
 
46
46
  ## Route Adjacent Work
@@ -61,8 +61,8 @@ This skill must not claim ownership of:
61
61
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
62
62
  - Jobs, images, resources, and releases:
63
63
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
64
- - Streamlit dashboards:
65
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
64
+
65
+ Streamlit dashboard implementation is app-owned project code, not an AppComponent or Main Sequence platform skill. Route Streamlit dashboard deployment or release verification to orchestration and releases.
66
66
 
67
67
  ## Read First
68
68
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: command-center-workspace-builder
3
- description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces after the workspace design is known. This skill owns workspace documents, widget instance payload resolution, safe mutation, shared versus user state, widget-scoped mutation, connection-backed source widget mounting, and grounding those decisions against the richer widget-type registry contract plus the SDK command_center client models. Use workspace_design first when the task is still about deciding which widgets, layout, narrative, or visualization strategy should express the user intent; use command-center-connections first when source data or query contracts are unresolved. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only when the first two still leave instance payload questions unresolved. Main Sequence is platform-first: if a mounted widget or AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the workspace flow is considered usable. Resource and release creation belong to the orchestration-and-releases skill. It does not own AppComponent form contracts, API implementation, workspace design, or Streamlit dashboards.
3
+ description: Use this skill when the task is about creating, updating, validating, or reviewing Main Sequence Command Center workspaces after the workspace design is known. This skill owns workspace documents, widget instance payload resolution, safe mutation, shared versus user state, widget-scoped mutation, connection-backed source widget mounting, and grounding those decisions against the richer widget-type registry contract plus the SDK command_center client models. Use workspace_design first when the task is still about deciding which widgets, layout, narrative, or visualization strategy should express the user intent; use command-center-connections first when source data or query contracts are unresolved. Source order is strict: registry detail first, SDK client models second, local Main Sequence repository docs/models third only when the first two still leave instance payload questions unresolved. Main Sequence is platform-first: if a mounted widget or AppComponent depends on a project API, that API must already exist as a FastAPI project resource and have a corresponding FastAPI ResourceRelease before the workspace flow is considered usable. Resource and release creation belong to the orchestration-and-releases skill. It does not own AppComponent form contracts, API implementation, workspace design, or Streamlit dashboard design or implementation.
4
4
  ---
5
5
 
6
6
  # Command Center Workspace Builder
@@ -42,7 +42,7 @@ This skill must not claim ownership of:
42
42
  - AppComponent custom input forms
43
43
  - widget-facing API response contracts
44
44
  - generic FastAPI or backend API implementation
45
- - Streamlit dashboard implementation
45
+ - Streamlit dashboard design or implementation
46
46
  - tabular or operational data producer design
47
47
  - MetaTable schema design
48
48
 
@@ -66,11 +66,11 @@ This skill must not claim ownership of:
66
66
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
67
67
  - Jobs, images, resources, and releases:
68
68
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
69
- - Streamlit dashboards:
70
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
71
69
  - MetaTables:
72
70
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
73
71
 
72
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence workspace skill. Route Streamlit dashboard deployment or release verification to orchestration and releases.
73
+
74
74
  ## Read First
75
75
 
76
76
  0. If widget selection, layout narrative, or visualization strategy is not already decided, use:
@@ -48,8 +48,8 @@ This skill must not claim ownership of:
48
48
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
49
49
  - Jobs, images, resources, and releases:
50
50
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
51
- - Streamlit dashboards:
52
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
51
+
52
+ Streamlit dashboard design and implementation are app-owned project work, not a Main Sequence Command Center or platform scaffold skill. Route only Streamlit dashboard deployment or release verification to orchestration and releases.
53
53
 
54
54
  ## Read First
55
55
 
@@ -51,13 +51,15 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
51
51
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
52
52
  - FastAPI or application-facing implementation:
53
53
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
54
- - Streamlit dashboards:
55
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
54
+ - Streamlit dashboard deployment:
55
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
56
56
  - Command Center surfaces:
57
57
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
58
58
  - blocker and failure analysis:
59
59
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
60
60
 
61
+ Streamlit dashboard implementation is app-owned project code, not a Main Sequence scaffold skill.
62
+
61
63
  ## Read First
62
64
 
63
65
  1. `AGENTS.md`
@@ -62,8 +62,10 @@ This skill audits. It does not implement by default.
62
62
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
63
63
  - RBAC and access issues:
64
64
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
65
- - dashboard domain issues:
66
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
65
+ - Streamlit dashboard deployment or release issues:
66
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
67
+
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
 
@@ -45,7 +45,7 @@ This skill must not claim ownership of:
45
45
  - DataNode producer implementation
46
46
  - MetaTable schema design
47
47
  - FastAPI route design
48
- - Streamlit dashboard implementation
48
+ - Streamlit dashboard design or implementation
49
49
  - workspace document structure
50
50
 
51
51
  ## Route Adjacent Work
@@ -58,11 +58,13 @@ This skill must not claim ownership of:
58
58
  `.agents/skills/mainsequence/data_publishing/meta_tables/SKILL.md`
59
59
  - APIs and FastAPI:
60
60
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
61
- - Streamlit dashboards:
62
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
61
+ - Streamlit dashboard deployment:
62
+ `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
63
63
  - Command Center workspaces:
64
64
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
65
65
 
66
+ Streamlit dashboard implementation is app-owned project code. This skill only reasons about access to deployed resources such as `ResourceRelease`.
67
+
66
68
  ## Read First
67
69
 
68
70
  1. `docs/tutorial/role_based_access_control.md`
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mainsequence-orchestration-and-releases
3
- description: Use this skill when the task is about operational execution in a Main Sequence project. This skill owns jobs, schedules, batch scheduling files, project images, run inspection, project resources, releases, and Artifacts as operational inputs. It does not own DataNode producer design, MetaTable schema design, API route contracts, or RBAC policy.
3
+ description: Use this skill when the task is about operational execution in a Main Sequence project. This skill owns jobs, schedules, batch scheduling files, project images, run inspection, project resources, releases, Streamlit dashboard deployment, and Artifacts as operational inputs. It does not own DataNode producer design, MetaTable schema design, API route contracts, Streamlit dashboard design, or RBAC policy.
4
4
  ---
5
5
 
6
6
  # Main Sequence Orchestration And Releases
@@ -16,6 +16,7 @@ This skill is for:
16
16
  - images
17
17
  - project resources
18
18
  - releases
19
+ - Streamlit dashboard deployment as `streamlit_dashboard` releases
19
20
  - operational logs and run inspection
20
21
  - Artifacts as job inputs or outputs
21
22
 
@@ -30,6 +31,7 @@ This skill is for:
30
31
  - freeze jobs to a project image
31
32
  - inspect job runs and logs
32
33
  - reason about project resources and resource releases
34
+ - create or review Streamlit dashboard deployment through project resources and `streamlit_dashboard` releases
33
35
  - review Artifact-based workflows in operational pipelines
34
36
 
35
37
  ## This Skill Must Not Claim
@@ -41,6 +43,7 @@ This skill must not claim ownership of:
41
43
  - FastAPI route contracts
42
44
  - RBAC or sharing policy
43
45
  - Streamlit dashboard implementation details
46
+ - Streamlit layout, styling, sidebar/session behavior, page structure, or UI helper design
44
47
 
45
48
  ## Route Adjacent Work
46
49
 
@@ -54,20 +57,22 @@ This skill must not claim ownership of:
54
57
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
55
58
  - RBAC and sharing:
56
59
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
57
- - Streamlit dashboards:
58
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
59
60
 
60
61
  ## Read First
61
62
 
62
63
  1. `docs/tutorial/scheduling_jobs.md`
63
64
  2. `docs/knowledge/infrastructure/scheduling_jobs.md`
64
65
  3. `docs/knowledge/infrastructure/artifacts.md`
66
+ 4. `docs/tutorial/dashboards/streamlit/streamlit_integration_2.md` when deploying or verifying a Streamlit dashboard
67
+ 5. `docs/knowledge/dashboards/streamlit/index.md` when deployment metadata or SDK/dashboard boundary questions matter
65
68
 
66
- If the task touches deployed dashboards or APIs, also read the relevant domain skill/docs before changing the operational workflow.
69
+ If the task touches deployed FastAPI APIs, also read the relevant API skill/docs before changing the operational workflow.
70
+
71
+ If the task asks to design, build, style, or restructure a Streamlit app, do not treat that as Main Sequence platform skill work. Streamlit implementation is app-owned project code. This skill only owns deployment and verification of an already-authored dashboard.
67
72
 
68
73
  If the task is about publishing a Command Center-facing API mainly to test AppComponent UX, bindings, or request/response contracts, read:
69
74
 
70
- 4. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
75
+ 6. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
71
76
 
72
77
  Do that before building an image or creating a FastAPI `ResourceRelease`.
73
78
 
@@ -78,6 +83,7 @@ Before changing orchestration or release behavior, collect or infer:
78
83
  - the execution target:
79
84
  - `execution_path`
80
85
  - app entrypoint
86
+ - Streamlit `app.py` resource path when deploying a dashboard
81
87
  - whether the job is:
82
88
  - manual
83
89
  - interval
@@ -89,8 +95,10 @@ Before changing orchestration or release behavior, collect or infer:
89
95
  - whether the workflow is:
90
96
  - direct CLI/client job creation
91
97
  - repository-managed batch scheduling
98
+ - Streamlit dashboard release creation
92
99
  - whether Artifact inputs or outputs are part of the run
93
100
  - whether the job should be reproducible against a pinned image
101
+ - for Streamlit dashboard deployment, the `README.md` resource next to `app.py`
94
102
 
95
103
  If the execution target or image strategy is unclear, stop before scheduling anything.
96
104
 
@@ -104,6 +112,7 @@ For every non-trivial orchestration task, decide:
104
112
  4. Is strict batch sync appropriate or dangerous?
105
113
  5. Does the workflow depend on Artifacts?
106
114
  6. Is the task actually a release/resource problem instead of only a job problem?
115
+ 7. For Streamlit dashboard deployment, do the selected app resource, README resource, and project image all refer to the intended pushed commit?
107
116
 
108
117
  ## Build Rules
109
118
 
@@ -175,7 +184,25 @@ For deployed dashboards, APIs, or agents:
175
184
  - the release must exist
176
185
  - the release must point at the intended image or resource version
177
186
 
178
- ### 6.1 Do not publish an API just to test AppComponent contracts
187
+ ### 6.1 Streamlit dashboard deployment is a release workflow
188
+
189
+ Main Sequence owns the deployment boundary for Streamlit dashboards, not the dashboard UI design.
190
+
191
+ For Streamlit dashboard deployment:
192
+
193
+ - the dashboard `app.py` must already exist in the repository
194
+ - the dashboard `README.md` must exist next to `app.py`
195
+ - both files must be committed and pushed
196
+ - the project image must be built from the intended pushed commit
197
+ - `mainsequence project project_resource list` must discover the dashboard app and README resources
198
+ - create the release with `mainsequence project project_resource create_dashboard`
199
+ - the dashboard release kind is `streamlit_dashboard`
200
+
201
+ Do not prescribe Streamlit page layout, styling, sidebar/session patterns, or helper/component architecture. Those are application-owned implementation details.
202
+
203
+ Validate the deployment path, not the Streamlit design.
204
+
205
+ ### 6.2 Do not publish an API just to test AppComponent contracts
179
206
 
180
207
  If the goal is to validate Command Center AppComponent UX, request rendering, response rendering, published outputs, or downstream bindings, do not jump straight to:
181
208
 
@@ -203,6 +230,7 @@ When reviewing an orchestration task, look for:
203
230
  - unsafe use of `--strict`
204
231
  - workflows depending on laptop-specific file paths instead of Artifacts
205
232
  - image or release work being used as a substitute for predeployment AppComponent/API contract validation
233
+ - Streamlit dashboard deployment work drifting into app design or UI implementation ownership
206
234
  - tasks that are really resource/release problems rather than simple job problems
207
235
 
208
236
  ## Validation Checklist
@@ -219,6 +247,7 @@ Do not claim success until you have checked:
219
247
  - the job exists after creation or sync
220
248
  - runs and logs were inspected when execution success matters
221
249
  - resources and releases were verified when deployment success matters
250
+ - Streamlit dashboard releases use the intended app resource, README resource, image, and `streamlit_dashboard` release kind
222
251
  - Command Center-facing API publishing is not being used just to test AppComponent UX that should have been validated first in `mock-json` mode
223
252
 
224
253
  If the workflow uses `scheduled_jobs.yaml`, also check:
@@ -42,7 +42,7 @@ This skill must not claim ownership of:
42
42
  - jobs, schedules, images, resources, or releases
43
43
  - RBAC or sharing semantics
44
44
  - domain assets, translation tables, or construction logic
45
- - Streamlit dashboard implementation
45
+ - Streamlit dashboard design or implementation
46
46
  - pricing-runtime semantics
47
47
 
48
48
  Do not let this skill become a domain manual.
@@ -65,12 +65,12 @@ Do not let this skill become a domain manual.
65
65
  `.agents/skills/mainsequence/maintenance/local_journal/SKILL.md`
66
66
  - project status audits, blocker analysis, and upstream SDK assessment:
67
67
  `.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
68
- - jobs, schedules, artifacts, images, resources, and releases:
68
+ - jobs, schedules, artifacts, images, resources, releases, and Streamlit dashboard deployment:
69
69
  `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
70
70
  - RBAC and sharing:
71
71
  `.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
72
- - Streamlit dashboards:
73
- `.agents/skills/mainsequence/dashboards/streamlit/SKILL.md`
72
+
73
+ Streamlit dashboard design and implementation are app-owned project work, not a separate Main Sequence scaffold skill. Route only platform deployment of an already-authored Streamlit dashboard to orchestration and releases.
74
74
 
75
75
  ## Read First
76
76
 
@@ -10,7 +10,7 @@ from enum import Enum
10
10
  from typing import Any, ClassVar
11
11
 
12
12
  import requests
13
- from pydantic import ConfigDict, Field
13
+ from pydantic import ConfigDict, Field, model_validator
14
14
 
15
15
  from .base import BaseObjectOrm, BasePydanticModel, ShareableObjectMixin
16
16
  from .exceptions import ApiError, raise_for_response
@@ -118,6 +118,10 @@ class AgentRuntimeImageDrift(BasePydanticModel):
118
118
  None,
119
119
  description="Additional backend detail when drift information is unavailable or degraded.",
120
120
  )
121
+ catalog_state: dict[str, Any] | None = Field(
122
+ None,
123
+ description="Platform catalog freshness state returned by the backend, when available.",
124
+ )
121
125
 
122
126
 
123
127
  class AgentRuntimePaths(BasePydanticModel):
@@ -165,9 +169,13 @@ class AgentSessionRuntimeAccess(BasePydanticModel):
165
169
  default_factory=AgentRuntimePaths,
166
170
  description="Runtime-relative paths returned by the control plane.",
167
171
  )
172
+ service_runtime_uid: str | None = Field(
173
+ None,
174
+ description="Public UID of the linked service runtime, when the backend has one.",
175
+ )
168
176
  knative_service_runtime_uid: str | None = Field(
169
177
  None,
170
- description="Public UID of the linked Knative service runtime, when the backend has one.",
178
+ description="Deprecated alias for service_runtime_uid kept for older SDK callers.",
171
179
  )
172
180
  image_drift: AgentRuntimeImageDrift | None = Field(
173
181
  None,
@@ -180,6 +188,20 @@ class AgentSessionRuntimeAccess(BasePydanticModel):
180
188
  return None
181
189
  return self.image_drift.model_dump()
182
190
 
191
+ @model_validator(mode="after")
192
+ def _mirror_service_runtime_uid(self) -> AgentSessionRuntimeAccess:
193
+ if (
194
+ self.service_runtime_uid is None
195
+ and self.knative_service_runtime_uid is not None
196
+ ):
197
+ self.service_runtime_uid = self.knative_service_runtime_uid
198
+ elif (
199
+ self.knative_service_runtime_uid is None
200
+ and self.service_runtime_uid is not None
201
+ ):
202
+ self.knative_service_runtime_uid = self.service_runtime_uid
203
+ return self
204
+
183
205
 
184
206
  def _join_runtime_url(rpc_url: str, runtime_path: str) -> str:
185
207
  if not isinstance(rpc_url, str) or not rpc_url.strip():
@@ -423,9 +445,27 @@ class CodingAgentService(BaseObjectOrm, BasePydanticModel):
423
445
  related_job_uid: str | None = Field(
424
446
  None, description="Public UID of the backing job, if attached."
425
447
  )
426
- knative_service_runtime_uid: str | None = Field(
427
- None, description="Public UID of the backing Knative service runtime, if attached."
448
+ service_runtime_uid: str | None = Field(
449
+ None, description="Public UID of the backing service runtime, if attached."
428
450
  )
451
+ knative_service_runtime_uid: str | None = Field(
452
+ None,
453
+ description="Deprecated alias for service_runtime_uid kept for older SDK callers.",
454
+ )
455
+
456
+ @model_validator(mode="after")
457
+ def _mirror_service_runtime_uid(self) -> CodingAgentService:
458
+ if (
459
+ self.service_runtime_uid is None
460
+ and self.knative_service_runtime_uid is not None
461
+ ):
462
+ self.service_runtime_uid = self.knative_service_runtime_uid
463
+ elif (
464
+ self.knative_service_runtime_uid is None
465
+ and self.service_runtime_uid is not None
466
+ ):
467
+ self.knative_service_runtime_uid = self.service_runtime_uid
468
+ return self
429
469
 
430
470
  @classmethod
431
471
  def _post_collection_action(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.27
3
+ Version: 4.4.29
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -13,7 +13,6 @@ agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md
13
13
  agent_scaffold/skills/command_center/workspace_analysis/SKILL.md
14
14
  agent_scaffold/skills/command_center/workspace_builder/SKILL.md
15
15
  agent_scaffold/skills/command_center/workspace_design/SKILL.md
16
- agent_scaffold/skills/dashboards/streamlit/SKILL.md
17
16
  agent_scaffold/skills/data_access/exploration/SKILL.md
18
17
  agent_scaffold/skills/data_publishing/data_nodes/SKILL.md
19
18
  agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "4.4.27"
7
+ version = "4.4.29"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1445,7 +1445,7 @@ def test_agent_runtime_models_deserialize_backend_uid_payloads():
1445
1445
  "is_ready": True,
1446
1446
  "image_drift": {"has_drift": False, "checks": []},
1447
1447
  "related_job_uid": "job-uid",
1448
- "knative_service_runtime_uid": "runtime-uid",
1448
+ "service_runtime_uid": "runtime-uid",
1449
1449
  "automatic_deployment": True,
1450
1450
  }
1451
1451
  )
@@ -1453,7 +1453,8 @@ def test_agent_runtime_models_deserialize_backend_uid_payloads():
1453
1453
  assert service.agent_uid == agent_uid
1454
1454
  assert service.agent_type == "project-executor"
1455
1455
  assert service.scope["project_uid"] == "project-uid"
1456
-
1456
+ assert service.service_runtime_uid == "runtime-uid"
1457
+ assert service.knative_service_runtime_uid == "runtime-uid"
1457
1458
 
1458
1459
 
1459
1460
  def test_agent_session_runtime_access_uses_session_uid_route(monkeypatch):
@@ -1473,7 +1474,7 @@ def test_agent_session_runtime_access_uses_session_uid_route(monkeypatch):
1473
1474
  "rpc_url": "https://runtime.main-sequence.app/rpc",
1474
1475
  "token": "tok-secret",
1475
1476
  "is_ready": True,
1476
- "knative_service_runtime_uid": "70c6efb9-8e80-4051-ad3a-f432b2c37f5a",
1477
+ "service_runtime_uid": "70c6efb9-8e80-4051-ad3a-f432b2c37f5a",
1477
1478
  "image_drift": {
1478
1479
  "agent_kind": "astro_orchestrator",
1479
1480
  "available": True,
@@ -1499,6 +1500,21 @@ def test_agent_session_runtime_access_uses_session_uid_route(monkeypatch):
1499
1500
  }
1500
1501
  ],
1501
1502
  "detail": None,
1503
+ "catalog_state": {
1504
+ "image_prefix": "astro",
1505
+ "tag": "latest",
1506
+ "ttl_seconds": 3600,
1507
+ "last_synced_at": "2026-07-17T10:00:00+00:00",
1508
+ "status": "fresh",
1509
+ "fresh": True,
1510
+ "refresh_required": False,
1511
+ "detail": "",
1512
+ "catalog_image_registry_id": 11,
1513
+ "catalog_image_registry_uid": "registry-uid",
1514
+ "catalog_image_id": 42,
1515
+ "latest_pinned_uri": "registry.example/astro@sha256:expected",
1516
+ "age_seconds": 12.5,
1517
+ },
1502
1518
  },
1503
1519
  }
1504
1520
 
@@ -1515,10 +1531,13 @@ def test_agent_session_runtime_access_uses_session_uid_route(monkeypatch):
1515
1531
 
1516
1532
  assert access.coding_agent_service_id == "svc-12"
1517
1533
  assert access.is_ready is True
1534
+ assert access.service_runtime_uid == "70c6efb9-8e80-4051-ad3a-f432b2c37f5a"
1518
1535
  assert access.knative_service_runtime_uid == "70c6efb9-8e80-4051-ad3a-f432b2c37f5a"
1519
1536
  assert access.image_drift is not None
1520
1537
  assert access.image_drift.agent_kind == "astro_orchestrator"
1521
1538
  assert access.image_drift.checks[0].key == "orchestrator_image"
1539
+ assert access.image_drift.catalog_state is not None
1540
+ assert access.image_drift.catalog_state["refresh_required"] is False
1522
1541
  assert captured == {
1523
1542
  "r_type": "POST",
1524
1543
  "url": f"{agent_models_mod.AgentSession.get_object_url()}/{session_uid}/resolve_runtime_access/",