mainsequence 6.0.24__tar.gz → 6.0.26__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 (126) hide show
  1. {mainsequence-6.0.24/mainsequence.egg-info → mainsequence-6.0.26}/PKG-INFO +9 -16
  2. {mainsequence-6.0.24 → mainsequence-6.0.26}/README.md +8 -15
  3. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +1 -0
  4. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/models_helpers.py +2 -0
  5. {mainsequence-6.0.24 → mainsequence-6.0.26/mainsequence.egg-info}/PKG-INFO +9 -16
  6. {mainsequence-6.0.24 → mainsequence-6.0.26}/pyproject.toml +1 -1
  7. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_filter_normalization.py +29 -1
  8. {mainsequence-6.0.24 → mainsequence-6.0.26}/LICENSE +0 -0
  9. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/AGENTS.md +0 -0
  10. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  11. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  12. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  14. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  15. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  16. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  17. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +0 -0
  18. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  19. {mainsequence-6.0.24 → mainsequence-6.0.26}/agent_scaffold/skills/sdk_project_execution/SKILL.md +0 -0
  20. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/__init__.py +0 -0
  21. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/__main__.py +0 -0
  22. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/bootstrap.py +0 -0
  23. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/__init__.py +0 -0
  24. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/api.py +0 -0
  25. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/browser_auth.py +0 -0
  26. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/cli.py +0 -0
  27. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/config.py +0 -0
  28. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/docker_utils.py +0 -0
  29. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/doctor.py +0 -0
  30. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/local_ops.py +0 -0
  31. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/migrations.py +0 -0
  32. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/model_filters.py +0 -0
  33. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/project_status.py +0 -0
  34. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/pydantic_cli.py +0 -0
  35. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/sdk_utils.py +0 -0
  36. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/ssh_utils.py +0 -0
  37. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/cli/ui.py +0 -0
  38. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/__init__.py +0 -0
  39. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/agent_runtime_models.py +0 -0
  40. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/base.py +0 -0
  41. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/client.py +0 -0
  42. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/compute_validation.py +0 -0
  43. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  44. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  45. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  46. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  47. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/dtype_codec.py +0 -0
  48. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/exceptions.py +0 -0
  49. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/fastapi/__init__.py +0 -0
  50. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/fastapi/auth.py +0 -0
  51. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/metatables/__init__.py +0 -0
  52. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/metatables/core.py +0 -0
  53. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/models_foundry.py +0 -0
  54. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/models_user.py +0 -0
  55. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/client/utils.py +0 -0
  56. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/defaults.py +0 -0
  57. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/instrumentation/__init__.py +0 -0
  58. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/instrumentation/utils.py +0 -0
  59. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/logconf.py +0 -0
  60. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/__init__.py +0 -0
  61. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/__main__.py +0 -0
  62. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  63. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  64. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  65. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  66. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  67. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  68. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  69. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  70. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  71. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  72. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/future_registry.py +0 -0
  73. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/hashing.py +0 -0
  74. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  75. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  76. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/env.py +0 -0
  77. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/provider.py +0 -0
  78. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/registry.py +0 -0
  79. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  80. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  81. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  82. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  83. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  84. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/schema_names.py +0 -0
  85. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  86. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/project_skills.py +0 -0
  87. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/runtime_context.py +0 -0
  88. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/runtime_flags.py +0 -0
  89. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence/scaffold_skills.py +0 -0
  90. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence.egg-info/SOURCES.txt +0 -0
  91. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence.egg-info/dependency_links.txt +0 -0
  92. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence.egg-info/entry_points.txt +0 -0
  93. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence.egg-info/requires.txt +0 -0
  94. {mainsequence-6.0.24 → mainsequence-6.0.26}/mainsequence.egg-info/top_level.txt +0 -0
  95. {mainsequence-6.0.24 → mainsequence-6.0.26}/setup.cfg +0 -0
  96. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_auth_precedence.py +0 -0
  97. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_build_operations_hashing.py +0 -0
  98. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_canonical_api_route_contract.py +0 -0
  99. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_cli.py +0 -0
  100. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_cli_browser_auth.py +0 -0
  101. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_cli_migrations.py +0 -0
  102. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_client.py +0 -0
  103. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  104. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_data_node_storage_dimension_queries.py +0 -0
  105. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_data_node_update_flow.py +0 -0
  106. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_dependency_extras.py +0 -0
  107. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_duckdb_interface_dimensions.py +0 -0
  108. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_instrumentation.py +0 -0
  109. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_logconf.py +0 -0
  110. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_meta_table_migrations.py +0 -0
  111. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_meta_tables_client_models.py +0 -0
  112. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  113. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_models_user_request_bound_auth.py +0 -0
  114. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_pod_project_resolution.py +0 -0
  115. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_project_batch_jobs_from_file.py +0 -0
  116. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_project_branch_contract.py +0 -0
  117. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_project_skills.py +0 -0
  118. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_run_configuration.py +0 -0
  119. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_scaffold_skills.py +0 -0
  120. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_schema_names.py +0 -0
  121. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_secret_client_model.py +0 -0
  122. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_source_table_configuration.py +0 -0
  123. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_sqlite_interface_dimensions.py +0 -0
  124. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_update_runner_uid_runtime.py +0 -0
  125. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_update_statistics.py +0 -0
  126. {mainsequence-6.0.24 → mainsequence-6.0.26}/tests/test_update_uid_guards.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.24
3
+ Version: 6.0.26
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -85,28 +85,21 @@ Main package areas:
85
85
 
86
86
  Repository areas:
87
87
 
88
- - `docs/`: tutorials, knowledge guides, CLI docs, and generated reference docs
89
- - `examples/`: worked examples and usage patterns
88
+ - `docs/`: knowledge guides, CLI docs, and generated reference docs
90
89
  - `tests/`: automated tests
91
90
 
92
91
  ## Documentation map
93
92
 
94
- The documentation is organized into four reading modes:
93
+ The documentation is organized into three reading modes:
95
94
 
96
- 1. **Tutorial**: the guided learning path
97
- 2. **Knowledge**: deeper conceptual guides
98
- 3. **CLI**: command-focused operational documentation
99
- 4. **Reference**: generated API reference
95
+ 1. **Knowledge**: deeper conceptual guides
96
+ 2. **CLI**: command-focused operational documentation
97
+ 3. **Reference**: generated API reference
100
98
 
101
99
  Recommended entry points:
102
100
 
103
- - Tutorial:
104
- - [Setting a Project (CLI)](docs/tutorial/setting_a_project.md)
105
- - [Working With MetaTables](docs/tutorial/working_with_meta_tables.md)
106
- - [Creating a Data Node](docs/tutorial/creating_a_simple_data_node.md)
107
- - [Role-Based Access Control](docs/tutorial/role_based_access_control.md)
108
- - [Create Your First API](docs/tutorial/create_your_first_api.md)
109
- - [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
101
+ - Beginner tutorial:
102
+ - [MainSequence SDK tutorial Project](https://github.com/mainsequence-projects/mainsequence-sdk-tutorial)
110
103
  - Knowledge:
111
104
  - [Data Nodes](docs/knowledge/data_nodes.md)
112
105
  - [MetaTables](docs/knowledge/meta_tables/index.md)
@@ -220,7 +213,7 @@ black .
220
213
 
221
214
  If you are evaluating the platform:
222
215
 
223
- - start with the tutorial in `docs/tutorial/`
216
+ - start with the separate canonical tutorial Project linked above
224
217
 
225
218
  If you are building a feature and already know the area:
226
219
 
@@ -40,28 +40,21 @@ Main package areas:
40
40
 
41
41
  Repository areas:
42
42
 
43
- - `docs/`: tutorials, knowledge guides, CLI docs, and generated reference docs
44
- - `examples/`: worked examples and usage patterns
43
+ - `docs/`: knowledge guides, CLI docs, and generated reference docs
45
44
  - `tests/`: automated tests
46
45
 
47
46
  ## Documentation map
48
47
 
49
- The documentation is organized into four reading modes:
48
+ The documentation is organized into three reading modes:
50
49
 
51
- 1. **Tutorial**: the guided learning path
52
- 2. **Knowledge**: deeper conceptual guides
53
- 3. **CLI**: command-focused operational documentation
54
- 4. **Reference**: generated API reference
50
+ 1. **Knowledge**: deeper conceptual guides
51
+ 2. **CLI**: command-focused operational documentation
52
+ 3. **Reference**: generated API reference
55
53
 
56
54
  Recommended entry points:
57
55
 
58
- - Tutorial:
59
- - [Setting a Project (CLI)](docs/tutorial/setting_a_project.md)
60
- - [Working With MetaTables](docs/tutorial/working_with_meta_tables.md)
61
- - [Creating a Data Node](docs/tutorial/creating_a_simple_data_node.md)
62
- - [Role-Based Access Control](docs/tutorial/role_based_access_control.md)
63
- - [Create Your First API](docs/tutorial/create_your_first_api.md)
64
- - [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
56
+ - Beginner tutorial:
57
+ - [MainSequence SDK tutorial Project](https://github.com/mainsequence-projects/mainsequence-sdk-tutorial)
65
58
  - Knowledge:
66
59
  - [Data Nodes](docs/knowledge/data_nodes.md)
67
60
  - [MetaTables](docs/knowledge/meta_tables/index.md)
@@ -175,7 +168,7 @@ black .
175
168
 
176
169
  If you are evaluating the platform:
177
170
 
178
- - start with the tutorial in `docs/tutorial/`
171
+ - start with the separate canonical tutorial Project linked above
179
172
 
180
173
  If you are building a feature and already know the area:
181
174
 
@@ -253,6 +253,7 @@ The SDK surface also accepts:
253
253
  Do not claim there is a CLI command for `deploy_current_version` unless the local CLI actually exposes one. In this SDK, the manual detail action is available through the client model.
254
254
 
255
255
  Inspect the unified run's `state`, `phase`, `outcome`, `steps`, `logs`, and `error` fields. Do not use legacy resource-release deployment status fields or filters.
256
+ Detail responses also expose `builder_image` and `builder_runtime`; these are empty strings when the run has no static-site builder metadata.
256
257
 
257
258
  ## Review Rules
258
259
 
@@ -1292,6 +1292,8 @@ class DeploymentRun(BaseObjectOrm, BasePydanticModel):
1292
1292
  artifact_context: dict[str, Any] = Field(default_factory=dict)
1293
1293
  cleanup_context: dict[str, Any] = Field(default_factory=dict)
1294
1294
  result: dict[str, Any] = Field(default_factory=dict)
1295
+ builder_image: str = ""
1296
+ builder_runtime: str = ""
1295
1297
  steps: list[DeploymentRunStep] = Field(default_factory=list)
1296
1298
  logs: DeploymentRunLogReference
1297
1299
  error: DeploymentRunError | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.24
3
+ Version: 6.0.26
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -85,28 +85,21 @@ Main package areas:
85
85
 
86
86
  Repository areas:
87
87
 
88
- - `docs/`: tutorials, knowledge guides, CLI docs, and generated reference docs
89
- - `examples/`: worked examples and usage patterns
88
+ - `docs/`: knowledge guides, CLI docs, and generated reference docs
90
89
  - `tests/`: automated tests
91
90
 
92
91
  ## Documentation map
93
92
 
94
- The documentation is organized into four reading modes:
93
+ The documentation is organized into three reading modes:
95
94
 
96
- 1. **Tutorial**: the guided learning path
97
- 2. **Knowledge**: deeper conceptual guides
98
- 3. **CLI**: command-focused operational documentation
99
- 4. **Reference**: generated API reference
95
+ 1. **Knowledge**: deeper conceptual guides
96
+ 2. **CLI**: command-focused operational documentation
97
+ 3. **Reference**: generated API reference
100
98
 
101
99
  Recommended entry points:
102
100
 
103
- - Tutorial:
104
- - [Setting a Project (CLI)](docs/tutorial/setting_a_project.md)
105
- - [Working With MetaTables](docs/tutorial/working_with_meta_tables.md)
106
- - [Creating a Data Node](docs/tutorial/creating_a_simple_data_node.md)
107
- - [Role-Based Access Control](docs/tutorial/role_based_access_control.md)
108
- - [Create Your First API](docs/tutorial/create_your_first_api.md)
109
- - [Turn Your Project Into an Agent](docs/tutorial/project_to_agent.md)
101
+ - Beginner tutorial:
102
+ - [MainSequence SDK tutorial Project](https://github.com/mainsequence-projects/mainsequence-sdk-tutorial)
110
103
  - Knowledge:
111
104
  - [Data Nodes](docs/knowledge/data_nodes.md)
112
105
  - [MetaTables](docs/knowledge/meta_tables/index.md)
@@ -220,7 +213,7 @@ black .
220
213
 
221
214
  If you are evaluating the platform:
222
215
 
223
- - start with the tutorial in `docs/tutorial/`
216
+ - start with the separate canonical tutorial Project linked above
224
217
 
225
218
  If you are building a feature and already know the area:
226
219
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "6.0.24"
7
+ version = "6.0.26"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -2224,6 +2224,8 @@ def test_resource_release_deploy_current_version_posts_detail_action(monkeypatch
2224
2224
  "artifact_context": {},
2225
2225
  "cleanup_context": {},
2226
2226
  "result": {},
2227
+ "builder_image": "",
2228
+ "builder_runtime": "",
2227
2229
  "steps": [],
2228
2230
  "logs": {
2229
2231
  "state": "available",
@@ -2250,6 +2252,8 @@ def test_resource_release_deploy_current_version_posts_detail_action(monkeypatch
2250
2252
  assert run.state == "succeeded"
2251
2253
  assert run.phase == "completed"
2252
2254
  assert run.outcome == "deployed"
2255
+ assert run.builder_image == ""
2256
+ assert run.builder_runtime == ""
2253
2257
  assert run.logs.state == "available"
2254
2258
  assert run.error is None
2255
2259
  assert captured == {
@@ -2287,6 +2291,8 @@ def test_deployment_run_collection_and_detail_use_unified_resource_release_contr
2287
2291
  "artifact_context": {},
2288
2292
  "cleanup_context": {},
2289
2293
  "result": {},
2294
+ "builder_image": "",
2295
+ "builder_runtime": "",
2290
2296
  "steps": [],
2291
2297
  "logs": {
2292
2298
  "state": "available",
@@ -2296,6 +2302,22 @@ def test_deployment_run_collection_and_detail_use_unified_resource_release_contr
2296
2302
  "error": None,
2297
2303
  }
2298
2304
 
2305
+ collection_payload = {
2306
+ key: value
2307
+ for key, value in response_payload.items()
2308
+ if key
2309
+ not in {
2310
+ "revision_context",
2311
+ "trigger_context",
2312
+ "artifact_context",
2313
+ "cleanup_context",
2314
+ "result",
2315
+ "builder_image",
2316
+ "builder_runtime",
2317
+ "steps",
2318
+ }
2319
+ }
2320
+
2299
2321
  class FakeResponse:
2300
2322
  status_code = 200
2301
2323
 
@@ -2308,7 +2330,7 @@ def test_deployment_run_collection_and_detail_use_unified_resource_release_contr
2308
2330
  def _fake_make_request(*, s, loaders, r_type, url, payload, time_out=None):
2309
2331
  captured.append({"r_type": r_type, "url": url, "payload": payload})
2310
2332
  if url.rstrip("/") == models_helpers_mod.DeploymentRun.get_object_url():
2311
- return FakeResponse({"results": [dict(response_payload)], "next": None})
2333
+ return FakeResponse({"results": [dict(collection_payload)], "next": None})
2312
2334
  return FakeResponse(dict(response_payload))
2313
2335
 
2314
2336
  monkeypatch.setattr(
@@ -2329,6 +2351,8 @@ def test_deployment_run_collection_and_detail_use_unified_resource_release_contr
2329
2351
  assert detail.state == "succeeded"
2330
2352
  assert detail.phase == "completed"
2331
2353
  assert detail.outcome == "deployed"
2354
+ assert detail.builder_image == ""
2355
+ assert detail.builder_runtime == ""
2332
2356
  assert detail.logs.state == "available"
2333
2357
  assert detail.error is None
2334
2358
  assert captured[0]["payload"] == {
@@ -2358,6 +2382,8 @@ def test_unified_deployment_run_models_and_filters(monkeypatch):
2358
2382
  "created_at": "2026-07-19T12:00:00Z",
2359
2383
  "started_at": "2026-07-19T12:00:01Z",
2360
2384
  "finished_at": None,
2385
+ "builder_image": "us-docker.pkg.dev/platform/static-builder:latest",
2386
+ "builder_runtime": "nodejs22",
2361
2387
  "logs": {
2362
2388
  "state": "available",
2363
2389
  "url": f"/api/v1/deployment-runs/{run_uid}/logs/",
@@ -2377,6 +2403,8 @@ def test_unified_deployment_run_models_and_filters(monkeypatch):
2377
2403
 
2378
2404
  assert run.target.uid == target_uid
2379
2405
  assert run.steps == []
2406
+ assert run.builder_image == "us-docker.pkg.dev/platform/static-builder:latest"
2407
+ assert run.builder_runtime == "nodejs22"
2380
2408
  assert normalized == {
2381
2409
  "project_branch_uid": project_branch_uid,
2382
2410
  "target_type__in": ["resource_release", "static_site"],
File without changes
File without changes