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.
- {mainsequence-4.4.27 → mainsequence-4.4.29}/PKG-INFO +1 -1
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/AGENTS.md +10 -5
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +3 -3
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/connections/SKILL.md +1 -1
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +4 -4
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +4 -4
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +2 -2
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_access/exploration/SKILL.md +4 -2
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +4 -2
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +5 -3
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +35 -6
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/project_builder/SKILL.md +4 -4
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/agent_runtime_models.py +44 -4
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/SOURCES.txt +0 -1
- {mainsequence-4.4.27 → mainsequence-4.4.29}/pyproject.toml +1 -1
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_filter_normalization.py +22 -3
- mainsequence-4.4.27/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -193
- {mainsequence-4.4.27 → mainsequence-4.4.29}/LICENSE +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/README.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/__main__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/bootstrap.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/api.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/cli.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/config.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/cli/ui.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/base.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/client.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/tabular.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/contracts/ui.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/providers/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/bindings.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/registry.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/table.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/documents.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/metatables/core.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/models_user.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/client/utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/defaults.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/logconf.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/setup.cfg +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_auth_precedence.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_cli_migrations.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_client.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_table_contracts.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_command_center_tabular_transform.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_access_mixin_dimension_audit.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_node_storage_dimension_queries.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_data_node_update_flow.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_dependency_extras.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_instrumentation.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_logconf.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_run_configuration.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_schema_names.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_secret_client_model.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_statistics.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_update_uid_guards.py +0 -0
- {mainsequence-4.4.27 → mainsequence-4.4.29}/tests/test_workspace_snapshot.py +0 -0
|
@@ -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
|
|
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
|
|
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
|
-
-
|
|
208
|
-
`.agents/skills/mainsequence/
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
65
|
-
|
|
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
|
|
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
|
-
|
|
52
|
-
|
|
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
|
|
{mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
@@ -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
|
|
55
|
-
`.agents/skills/mainsequence/
|
|
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`
|
{mainsequence-4.4.27 → mainsequence-4.4.29}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
@@ -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
|
|
66
|
-
`.agents/skills/mainsequence/
|
|
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
|
|
62
|
-
`.agents/skills/mainsequence/
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
73
|
-
|
|
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="
|
|
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
|
-
|
|
427
|
-
None, description="Public UID of the backing
|
|
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(
|
|
@@ -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
|
|
@@ -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
|
-
"
|
|
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
|
-
"
|
|
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/",
|