mainsequence 5.0.1__tar.gz → 5.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mainsequence-5.0.1/mainsequence.egg-info → mainsequence-5.0.2}/PKG-INFO +1 -1
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/AGENTS.md +23 -39
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +9 -15
- mainsequence-5.0.2/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +200 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/sdk_project_execution/SKILL.md +3 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/api.py +0 -56
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/cli.py +13 -105
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/local_ops.py +27 -2
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_foundry.py +0 -26
- {mainsequence-5.0.1 → mainsequence-5.0.2/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/SOURCES.txt +1 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/pyproject.toml +1 -1
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli.py +10 -181
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_project_skills.py +75 -22
- {mainsequence-5.0.1 → mainsequence-5.0.2}/LICENSE +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/README.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/app_components/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/__main__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/bootstrap.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/config.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/cli/ui.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/base.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/client.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/adapter_from_api.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/response_mapping.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/table_visuals.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/tabular.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/contracts/ui.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/providers/adapter_from_api.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/bindings.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/connection_query.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/registry.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/table.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/widgets/tabular_transform.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/documents.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/command_center/workspaces/mounted_widgets.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/metatables/core.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/models_user.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/client/utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/defaults.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/logconf.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/project_skills.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/setup.cfg +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_auth_precedence.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_cli_migrations.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_client.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_table_contracts.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_command_center_tabular_transform.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_access_mixin_dimension_audit.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_node_storage_dimension_queries.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_data_node_update_flow.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_dependency_extras.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_filter_normalization.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_instrumentation.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_logconf.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_run_configuration.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_schema_names.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_secret_client_model.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_statistics.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_update_uid_guards.py +0 -0
- {mainsequence-5.0.1 → mainsequence-5.0.2}/tests/test_workspace_snapshot.py +0 -0
|
@@ -40,8 +40,8 @@ Compare the SDK value with the installed version reported by
|
|
|
40
40
|
Refresh the managed scaffold only when `PINNED_FROM.txt` is missing or its
|
|
41
41
|
`pinned_version` differs from the installed SDK version:
|
|
42
42
|
|
|
43
|
-
- `mainsequence project update AGENTS.md --path .`
|
|
44
43
|
- `mainsequence project update_agent_skills --path .`
|
|
44
|
+
- `mainsequence project update AGENTS.md --path .`
|
|
45
45
|
|
|
46
46
|
If `sdk_version` already matches the installed SDK version and no explicit
|
|
47
47
|
platform-skill refresh is needed, do not refresh `AGENTS.md` or
|
|
@@ -76,8 +76,7 @@ Core responsibilities:
|
|
|
76
76
|
- translate user business logic into reusable code under `src/` so it can be reused by APIs,
|
|
77
77
|
dashboards, jobs, and other project components instead of duplicating logic in integration
|
|
78
78
|
layers
|
|
79
|
-
-
|
|
80
|
-
for blocker and SDK/platform issue assessment
|
|
79
|
+
- use the bug auditor skill for blocker and SDK/platform issue assessment
|
|
81
80
|
|
|
82
81
|
Typical outcomes include:
|
|
83
82
|
|
|
@@ -89,7 +88,7 @@ Typical outcomes include:
|
|
|
89
88
|
Center surface before building or deploying it
|
|
90
89
|
- build reusable business logic in `src/` and keep thin integration layers in APIs, jobs, and
|
|
91
90
|
dashboards
|
|
92
|
-
-
|
|
91
|
+
- assess blockers and suspected SDK or platform issues from concrete repository and runtime evidence
|
|
93
92
|
|
|
94
93
|
Working rules for this role:
|
|
95
94
|
|
|
@@ -117,13 +116,6 @@ User-resolution rule for agents:
|
|
|
117
116
|
|
|
118
117
|
Delegation rules:
|
|
119
118
|
|
|
120
|
-
- when work is delegated or queued for later, write the task in `.agents/tasks.md` according to
|
|
121
|
-
the skill that should execute it
|
|
122
|
-
- each delegated or queued task in `.agents/tasks.md` must state:
|
|
123
|
-
- the exact task scope
|
|
124
|
-
- the owning skill
|
|
125
|
-
- the expected output, decision, or artifact
|
|
126
|
-
- the validation or evidence required before it can be marked complete
|
|
127
119
|
- if delegation is available, declare for each sub-agent:
|
|
128
120
|
- the exact task it owns
|
|
129
121
|
- the exact skill or skills it must use
|
|
@@ -190,6 +182,9 @@ Typical routing:
|
|
|
190
182
|
- project setup, local checkout, CLI environment, scaffolding, and standard
|
|
191
183
|
repository layout:
|
|
192
184
|
`.agents/skills/mainsequence/sdk_project_execution/SKILL.md`
|
|
185
|
+
- local environment repair, project authentication refresh, SDK updates,
|
|
186
|
+
managed skill refresh, and canonical project sync:
|
|
187
|
+
`.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
|
|
193
188
|
- turning an existing project into a project-backed coding agent, defining
|
|
194
189
|
project-owned skills, and authoring `.agents/agent_card.json`:
|
|
195
190
|
`.agents/skills/mainsequence/project_to_agent/SKILL.md`
|
|
@@ -234,31 +229,28 @@ For any non-trivial Main Sequence task:
|
|
|
234
229
|
|
|
235
230
|
1. Read the latest relevant Main Sequence documentation.
|
|
236
231
|
2. Compare the implementation against the latest documented behavior.
|
|
237
|
-
|
|
238
|
-
4.
|
|
239
|
-
|
|
240
|
-
7. Confirm you are in the correct project checkout, or use `--path` explicitly.
|
|
241
|
-
8. Confirm platform context with:
|
|
232
|
+
3. Confirm you are in the correct project checkout, or use `--path` explicitly.
|
|
233
|
+
4. Confirm platform context with:
|
|
242
234
|
`mainsequence project current --debug`
|
|
243
|
-
|
|
235
|
+
5. Before validations or live checks, run:
|
|
244
236
|
`mainsequence project refresh_token --path .`
|
|
245
|
-
|
|
237
|
+
6. If git push or pull is required, use:
|
|
246
238
|
`mainsequence project open-signed-terminal <PROJECT_ID>`
|
|
247
|
-
|
|
239
|
+
7. Before proceeding with non-trivial Main Sequence work, update the project SDK:
|
|
248
240
|
`mainsequence project update-sdk --path .`
|
|
249
|
-
|
|
241
|
+
8. After updating the SDK, compare `mainsequence --version` with
|
|
250
242
|
`.agents/skills/mainsequence/PINNED_FROM.txt` field `sdk_version=...`
|
|
251
243
|
(`pinned_version=...` is its compatibility alias), and verify that the
|
|
252
244
|
sentinel contains platform manifest and resource hashes.
|
|
253
|
-
|
|
245
|
+
9. If `PINNED_FROM.txt` is missing, `sdk_version` differs from the installed
|
|
254
246
|
SDK version, or a platform-skill refresh is explicitly required, refresh
|
|
255
247
|
the managed scaffold files:
|
|
256
|
-
`mainsequence project update AGENTS.md --path .`
|
|
257
248
|
`mainsequence project update_agent_skills --path .`
|
|
258
|
-
|
|
249
|
+
`mainsequence project update AGENTS.md --path .`
|
|
250
|
+
10. If `sdk_version` already matches the installed SDK version and no platform
|
|
259
251
|
refresh is required, do not refresh `AGENTS.md` or
|
|
260
252
|
`.agents/skills/mainsequence/` as a startup ritual.
|
|
261
|
-
|
|
253
|
+
11. Verify platform state with the CLI or platform tooling instead of guessing.
|
|
262
254
|
|
|
263
255
|
## Orchestrator Rule
|
|
264
256
|
|
|
@@ -276,15 +268,13 @@ project behavior exists and has been verified. The repository source card is
|
|
|
276
268
|
not the runtime A2A Agent Card; the deployed runtime supplies its concrete
|
|
277
269
|
interfaces and security declarations.
|
|
278
270
|
|
|
279
|
-
Before the final response:
|
|
280
|
-
|
|
281
|
-
- update the relevant `.agents/` project-state files whenever project understanding, verified
|
|
282
|
-
state, open tasks, blockers, or historical record changed during the turn
|
|
283
|
-
|
|
284
271
|
Use `.agents/skills/mainsequence/project_design/SKILL.md` as the platform
|
|
285
272
|
source of truth for intent and ontology. Use
|
|
286
273
|
`.agents/skills/mainsequence/sdk_project_execution/SKILL.md` for installed-SDK,
|
|
287
|
-
CLI, filesystem, and local repository execution mechanics.
|
|
274
|
+
CLI, filesystem, and local repository execution mechanics. Use
|
|
275
|
+
`.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md` for
|
|
276
|
+
repeatable environment, authentication, SDK, scaffold-refresh, and project-sync
|
|
277
|
+
routines.
|
|
288
278
|
|
|
289
279
|
## Core Working Rules
|
|
290
280
|
|
|
@@ -295,8 +285,8 @@ CLI, filesystem, and local repository execution mechanics.
|
|
|
295
285
|
- do not hide failures
|
|
296
286
|
- record the exact failing step, command, or workflow
|
|
297
287
|
- when hitting a roadblock, blocker, or error, report it back to the user clearly and promptly
|
|
298
|
-
- if local code or local docs conflict with the latest Main Sequence docs,
|
|
299
|
-
and
|
|
288
|
+
- if local code or local docs conflict with the latest Main Sequence docs, report the discrepancy
|
|
289
|
+
and the concrete next action
|
|
300
290
|
- when unsure, verify
|
|
301
291
|
- if the active virtual environment is missing libraries that are already declared in
|
|
302
292
|
`requirements.txt`, install those missing libraries into the virtual environment before
|
|
@@ -359,7 +349,7 @@ Rules:
|
|
|
359
349
|
|
|
360
350
|
If something may be a Main Sequence SDK, documentation, or platform issue:
|
|
361
351
|
|
|
362
|
-
-
|
|
352
|
+
- report what failed
|
|
363
353
|
- explain why it may be a Main Sequence issue
|
|
364
354
|
- suggest a concrete improvement
|
|
365
355
|
|
|
@@ -370,10 +360,4 @@ If something may be a Main Sequence SDK, documentation, or platform issue:
|
|
|
370
360
|
- prefer explicit facts over vague statements
|
|
371
361
|
- surface failures early
|
|
372
362
|
- distinguish verified facts from assumptions
|
|
373
|
-
|
|
374
|
-
## Project-State Files Under `.agents/`
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
Do not improvise their meaning in domain skills. Use the project bootstrap skill rules to reconcile
|
|
378
|
-
them after material work.
|
|
379
363
|
<!-- mainsequence-agent-scaffold:end -->
|
{mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
@@ -20,8 +20,7 @@ This skill is for diagnosis and assessment. Default behavior is read-only unless
|
|
|
20
20
|
## This Skill Can Do
|
|
21
21
|
|
|
22
22
|
- inspect project state and summarize completion status
|
|
23
|
-
-
|
|
24
|
-
- use repo state, logs, test output, stderr, and task files as evidence
|
|
23
|
+
- use repo state, logs, test output, and stderr as evidence
|
|
25
24
|
- classify failures into:
|
|
26
25
|
- target-project issue
|
|
27
26
|
- environment or credentials issue
|
|
@@ -62,6 +61,9 @@ This skill audits. It does not implement by default.
|
|
|
62
61
|
`.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`
|
|
63
62
|
- Streamlit dashboard deployment or release issues:
|
|
64
63
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
64
|
+
- environment repair, authentication refresh, SDK updates, managed skill
|
|
65
|
+
refresh, and project sync after the failure is classified:
|
|
66
|
+
`.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
|
|
65
67
|
|
|
66
68
|
Streamlit dashboard design and implementation failures are target-project application code issues unless the evidence points to Main Sequence deployment, resource discovery, image selection, release creation, or platform runtime behavior.
|
|
67
69
|
|
|
@@ -69,11 +71,7 @@ Streamlit dashboard design and implementation failures are target-project applic
|
|
|
69
71
|
|
|
70
72
|
1. `AGENTS.md`
|
|
71
73
|
2. `.agents/skills/mainsequence/project_design/SKILL.md`
|
|
72
|
-
3.
|
|
73
|
-
4. `.agents/status.md` when it exists
|
|
74
|
-
5. `.agents/record.md` when stable references or project ids matter
|
|
75
|
-
6. `.agents/journal.md` when repeated failures or prior investigations may be relevant
|
|
76
|
-
7. the latest relevant Main Sequence docs for the failing workflow
|
|
74
|
+
3. the latest relevant Main Sequence docs for the failing workflow
|
|
77
75
|
|
|
78
76
|
## Inputs This Skill Needs
|
|
79
77
|
|
|
@@ -101,17 +99,15 @@ For every audit, decide:
|
|
|
101
99
|
|
|
102
100
|
### 1. Stay read-only unless edits were explicitly requested
|
|
103
101
|
|
|
104
|
-
Do not modify code
|
|
102
|
+
Do not modify code or docs unless the task explicitly asks for edits.
|
|
105
103
|
|
|
106
|
-
### 2. Start with
|
|
104
|
+
### 2. Start with current evidence
|
|
107
105
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
Use them as hypotheses, not as proof.
|
|
106
|
+
Inspect the repository state, available logs, failing commands, stderr, and test output.
|
|
111
107
|
|
|
112
108
|
### 3. Use evidence, not impressions
|
|
113
109
|
|
|
114
|
-
Use repo state, logs, test output,
|
|
110
|
+
Use repo state, logs, test output, and stderr as evidence.
|
|
115
111
|
|
|
116
112
|
When reporting a blocker or failure, include:
|
|
117
113
|
|
|
@@ -127,7 +123,6 @@ Before each major investigation step, emit a short progress update that says wha
|
|
|
127
123
|
|
|
128
124
|
Especially announce when you are:
|
|
129
125
|
|
|
130
|
-
- reading `.agents/tasks.md` or `.agents/status.md`
|
|
131
126
|
- inspecting a failing command, traceback, or stderr excerpt
|
|
132
127
|
- checking the local `mainsequence` package or version
|
|
133
128
|
- inspecting or cloning the public `mainsequence-sdk` repository
|
|
@@ -184,7 +179,6 @@ When reviewing an audit, look for:
|
|
|
184
179
|
|
|
185
180
|
Do not claim audit completion until you have checked:
|
|
186
181
|
|
|
187
|
-
- `.agents/tasks.md` and `.agents/status.md` first when they exist
|
|
188
182
|
- the overall state is one of:
|
|
189
183
|
- `finished`
|
|
190
184
|
- `in_progress`
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-maintenance
|
|
3
|
+
description: Maintain an existing Main Sequence project checkout using the SDK-version-matched CLI. Use for inspecting project state, building or repairing .venv, refreshing local project authentication, updating the SDK, refreshing SDK and platform skills plus AGENTS.md, publishing changes with project sync, or diagnosing a partially completed maintenance workflow.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Main Sequence Project Maintenance
|
|
7
|
+
|
|
8
|
+
Maintain the local project through the installed Main Sequence CLI. Treat the
|
|
9
|
+
CLI as the canonical implementation of SDK-version-specific filesystem, `uv`,
|
|
10
|
+
authentication, scaffold, and Git behavior. Select and sequence commands here;
|
|
11
|
+
do not reproduce their Python implementation or replace them with ad hoc shell
|
|
12
|
+
workflows.
|
|
13
|
+
|
|
14
|
+
## Preserve The Boundary
|
|
15
|
+
|
|
16
|
+
Own:
|
|
17
|
+
|
|
18
|
+
- local project inspection and maintenance sequencing;
|
|
19
|
+
- `.venv`, SDK, managed skill, `AGENTS.md`, and Git-release workflows;
|
|
20
|
+
- precondition checks, explicit approval gates, and partial-failure diagnosis.
|
|
21
|
+
|
|
22
|
+
Do not own:
|
|
23
|
+
|
|
24
|
+
- platform ontology or Project Blueprint design;
|
|
25
|
+
- domain implementation for MetaTables, DataNodes, APIs, jobs, or releases;
|
|
26
|
+
- backend repository reconciliation;
|
|
27
|
+
- MCP authentication or access-token extraction;
|
|
28
|
+
- project-owned skills outside `.agents/skills/mainsequence/`.
|
|
29
|
+
|
|
30
|
+
Route architecture changes to `project_design`, implementation routing to
|
|
31
|
+
`sdk_project_execution`, and failure classification to
|
|
32
|
+
`maintenance/bug_auditor` when diagnosis extends beyond the maintenance
|
|
33
|
+
workflow itself.
|
|
34
|
+
|
|
35
|
+
## Inspect Before Changing State
|
|
36
|
+
|
|
37
|
+
1. Read `AGENTS.md` and the relevant repository skills.
|
|
38
|
+
2. Confirm the repository root and the user's requested maintenance outcome.
|
|
39
|
+
3. Inspect project and Git state:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
mainsequence project current --debug --json
|
|
43
|
+
mainsequence project sdk-status --path . --json
|
|
44
|
+
git status --short
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
4. Separate existing user changes from changes created by the maintenance
|
|
48
|
+
task. Never assume every uncommitted file belongs to the current task.
|
|
49
|
+
5. Read command help when the installed SDK differs from the instructions in
|
|
50
|
+
this skill. The installed CLI is authoritative for its version.
|
|
51
|
+
|
|
52
|
+
If `mainsequence` is unavailable, stop and report that the SDK CLI must be
|
|
53
|
+
installed or provided by the local development integration. Do not use an MCP
|
|
54
|
+
bearer token or an unpinned downloaded CLI as a substitute.
|
|
55
|
+
|
|
56
|
+
## Build Or Repair The Local Environment
|
|
57
|
+
|
|
58
|
+
Build the project environment with:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
mainsequence project build_local_venv --path .
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The command reads the project Python requirement, resolves `uv`, creates
|
|
65
|
+
`.venv`, and synchronizes dependencies. Do not manually parse
|
|
66
|
+
`pyproject.toml` or reconstruct those steps.
|
|
67
|
+
|
|
68
|
+
When an existing `.venv` is incompatible, show the detected mismatch and ask
|
|
69
|
+
before replacing it. Only then run:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
mainsequence project build_local_venv --path . --recreate
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Treat `.venv` as generated state, never as source code or durable project
|
|
76
|
+
documentation.
|
|
77
|
+
|
|
78
|
+
## Refresh Project Authentication
|
|
79
|
+
|
|
80
|
+
Refresh only the CLI-managed runtime authentication entries in the project
|
|
81
|
+
`.env`:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
mainsequence project refresh_token --path .
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Require normal Main Sequence CLI login first. Never print, inspect, summarize,
|
|
88
|
+
copy, or return access and refresh token values. Do not attempt to extract the
|
|
89
|
+
calling MCP host's protected bearer token. If authentication is unavailable,
|
|
90
|
+
stop and request login through the normal CLI or development integration.
|
|
91
|
+
|
|
92
|
+
## Update The Project SDK
|
|
93
|
+
|
|
94
|
+
Inspect the current status, preview the update, and then update when requested
|
|
95
|
+
or required by repository instructions:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
mainsequence project sdk-status --path . --json
|
|
99
|
+
mainsequence project update-sdk --path . --dry-run
|
|
100
|
+
mainsequence project update-sdk --path .
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`update-sdk` updates the lock and local environment. It does not publish the
|
|
104
|
+
working tree. After the SDK changes, refresh the managed agent context and run
|
|
105
|
+
the repository-specific validation required by `AGENTS.md`.
|
|
106
|
+
|
|
107
|
+
Do not automatically commit or push an SDK update unless the user also asked
|
|
108
|
+
to publish the project changes.
|
|
109
|
+
|
|
110
|
+
## Refresh Managed Skills And Instructions
|
|
111
|
+
|
|
112
|
+
Refresh the SDK-owned and platform-owned skills first, then update the managed
|
|
113
|
+
Main Sequence block in `AGENTS.md`:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
mainsequence project update_agent_skills --path .
|
|
117
|
+
mainsequence project update AGENTS.md --path .
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Verify `.agents/skills/mainsequence/PINNED_FROM.txt` after success:
|
|
121
|
+
|
|
122
|
+
- `sdk_version` must match the installed project SDK;
|
|
123
|
+
- platform manifest, ontology, and resource hashes must be present;
|
|
124
|
+
- project-owned skills outside `.agents/skills/mainsequence/` must remain
|
|
125
|
+
untouched.
|
|
126
|
+
|
|
127
|
+
The skill update is staged and atomic. If it fails, report the failing lane and
|
|
128
|
+
preserve the previous valid managed tree. Because this operation can update
|
|
129
|
+
this skill, reload the refreshed `project-maintenance/SKILL.md` before starting
|
|
130
|
+
another maintenance routine.
|
|
131
|
+
|
|
132
|
+
## Publish With Canonical Project Sync
|
|
133
|
+
|
|
134
|
+
Use project sync only when the user intends to commit, tag, and push all
|
|
135
|
+
reviewed project changes.
|
|
136
|
+
|
|
137
|
+
Before execution:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
git status --short
|
|
141
|
+
git diff --stat
|
|
142
|
+
mainsequence project sync --path . -m "<specific commit message>" --dry-run
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Review every pending file because the command stages with `git add -A`. Do not
|
|
146
|
+
continue when unrelated or unexplained changes would be included.
|
|
147
|
+
|
|
148
|
+
After review:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
mainsequence project sync --path . -m "<specific commit message>"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The canonical command always:
|
|
155
|
+
|
|
156
|
+
1. applies a patch version bump;
|
|
157
|
+
2. runs `uv lock`;
|
|
158
|
+
3. runs `uv sync`;
|
|
159
|
+
4. exports locked production requirements;
|
|
160
|
+
5. stages and commits the changes;
|
|
161
|
+
6. creates an annotated `v<version>` tag; and
|
|
162
|
+
7. pushes the branch and tag with `--follow-tags`.
|
|
163
|
+
|
|
164
|
+
Do not offer alternate bump modes, a no-push mode, or a hand-written sequence
|
|
165
|
+
of equivalent commands. Do not call `sync-after-commit` or any backend repair
|
|
166
|
+
endpoint. The GitHub branch-push webhook owns backend repository
|
|
167
|
+
reconciliation.
|
|
168
|
+
|
|
169
|
+
## Diagnose Partial Completion Before Retrying
|
|
170
|
+
|
|
171
|
+
Never rerun an entire mutating workflow blindly.
|
|
172
|
+
|
|
173
|
+
- After an environment failure, inspect `.venv`, the declared Python
|
|
174
|
+
requirement, and the exact failing `uv` output.
|
|
175
|
+
- After an SDK update failure, inspect `pyproject.toml`, `uv.lock`, the active
|
|
176
|
+
environment, and the failed command before retrying.
|
|
177
|
+
- After a skill refresh failure, keep the previous managed tree and identify
|
|
178
|
+
whether the SDK or platform lane failed.
|
|
179
|
+
- After a sync failure, inspect `git status`, `git log -1`, the current project
|
|
180
|
+
version, tags pointing at `HEAD`, the upstream branch, and remote tags before
|
|
181
|
+
deciding which step remains.
|
|
182
|
+
|
|
183
|
+
A blind sync retry may create another patch bump or collide with an existing
|
|
184
|
+
commit or tag.
|
|
185
|
+
|
|
186
|
+
## Validate And Report
|
|
187
|
+
|
|
188
|
+
Run only repository-relevant validation discovered from `AGENTS.md`, project
|
|
189
|
+
documentation, and the changed files. Report:
|
|
190
|
+
|
|
191
|
+
- the maintenance routine performed;
|
|
192
|
+
- the project path and installed SDK version;
|
|
193
|
+
- files or generated state changed;
|
|
194
|
+
- validation run and its result;
|
|
195
|
+
- whether changes remain local or were committed, tagged, and pushed;
|
|
196
|
+
- any remaining authentication, environment, Git, or webhook verification
|
|
197
|
+
gap.
|
|
198
|
+
|
|
199
|
+
Never claim backend reconciliation succeeded solely because the local push
|
|
200
|
+
succeeded. Verify backend state separately when the task requires that claim.
|
{mainsequence-5.0.1 → mainsequence-5.0.2}/agent_scaffold/skills/sdk_project_execution/SKILL.md
RENAMED
|
@@ -65,6 +65,9 @@ Do not let this skill become a domain manual.
|
|
|
65
65
|
`.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
|
|
66
66
|
- project audits, blocker analysis, and upstream SDK assessment:
|
|
67
67
|
`.agents/skills/mainsequence/maintenance/bug_auditor/SKILL.md`
|
|
68
|
+
- local environment repair, project authentication refresh, SDK updates,
|
|
69
|
+
managed skill refresh, and canonical project sync:
|
|
70
|
+
`.agents/skills/mainsequence/maintenance/project-maintenance/SKILL.md`
|
|
68
71
|
- jobs, schedules, artifacts, images, resources, releases, and Streamlit dashboard deployment:
|
|
69
72
|
`.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
|
|
70
73
|
- RBAC and sharing:
|
|
@@ -2062,62 +2062,6 @@ def get_project_data_node_updates(
|
|
|
2062
2062
|
os.environ[k] = v
|
|
2063
2063
|
|
|
2064
2064
|
|
|
2065
|
-
def sync_project_after_commit(
|
|
2066
|
-
project_id: int | str, *, timeout: int | None = None
|
|
2067
|
-
) -> dict[str, Any] | None:
|
|
2068
|
-
"""
|
|
2069
|
-
Notify the backend that a project commit has been pushed.
|
|
2070
|
-
|
|
2071
|
-
Single source of truth:
|
|
2072
|
-
- delegates request behavior and payload parsing to `Project.sync_project_after_commit()`
|
|
2073
|
-
"""
|
|
2074
|
-
try:
|
|
2075
|
-
project_uid = resolve_project_uid(project_id)
|
|
2076
|
-
payload = _run_sdk_model_operation(
|
|
2077
|
-
module_name="mainsequence.client.models_foundry",
|
|
2078
|
-
class_name="Project",
|
|
2079
|
-
operation=lambda ClientProject: ClientProject.sync_project_after_commit(
|
|
2080
|
-
project_uid,
|
|
2081
|
-
timeout=timeout,
|
|
2082
|
-
),
|
|
2083
|
-
project_id_env=resolve_project_row_id(project_id),
|
|
2084
|
-
project_uid_env=project_uid,
|
|
2085
|
-
)
|
|
2086
|
-
if payload is None:
|
|
2087
|
-
return None
|
|
2088
|
-
if isinstance(payload, dict):
|
|
2089
|
-
return payload
|
|
2090
|
-
if hasattr(payload, "model_dump"):
|
|
2091
|
-
return payload.model_dump()
|
|
2092
|
-
return {"id": getattr(payload, "id", None)}
|
|
2093
|
-
except Exception as e:
|
|
2094
|
-
err_name = type(e).__name__
|
|
2095
|
-
if err_name in {"AuthenticationError", "PermissionDeniedError"}:
|
|
2096
|
-
raise NotLoggedIn(str(e) or "Not logged in.") from e
|
|
2097
|
-
if err_name == "NotFoundError":
|
|
2098
|
-
raise ApiError(f"Project not found: {project_id}") from e
|
|
2099
|
-
raise ApiError(f"Project post-commit sync failed: {e}") from e
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
def prime_sync_project_after_commit_sdk() -> None:
|
|
2103
|
-
"""
|
|
2104
|
-
Load the SDK modules needed by `sync_project_after_commit()` before the active
|
|
2105
|
-
virtual environment is mutated by `uv sync`.
|
|
2106
|
-
|
|
2107
|
-
`project sync` runs inside the same `.venv` that it later updates. If the
|
|
2108
|
-
environment changes during the command, a fresh `mainsequence.client` import
|
|
2109
|
-
can fail late in the flow. Priming the relevant SDK modules first keeps the
|
|
2110
|
-
post-commit sync path available in the current process.
|
|
2111
|
-
"""
|
|
2112
|
-
try:
|
|
2113
|
-
importlib.import_module("mainsequence.client")
|
|
2114
|
-
importlib.import_module("mainsequence.client.utils")
|
|
2115
|
-
importlib.import_module("mainsequence.client.base")
|
|
2116
|
-
importlib.import_module("mainsequence.client.models_foundry")
|
|
2117
|
-
except Exception as e:
|
|
2118
|
-
raise ApiError(f"Project post-commit SDK import failed: {e}") from e
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
2065
|
def create_project_image(
|
|
2122
2066
|
*,
|
|
2123
2067
|
project_repo_hash: str,
|