mainsequence 6.0.46__tar.gz → 6.0.47__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 (131) hide show
  1. {mainsequence-6.0.46 → mainsequence-6.0.47}/PKG-INFO +1 -1
  2. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/agent_runtime_models.py +49 -0
  3. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/PKG-INFO +1 -1
  4. {mainsequence-6.0.46 → mainsequence-6.0.47}/pyproject.toml +1 -1
  5. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_filter_normalization.py +21 -0
  6. {mainsequence-6.0.46 → mainsequence-6.0.47}/LICENSE +0 -0
  7. {mainsequence-6.0.46 → mainsequence-6.0.47}/README.md +0 -0
  8. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/AGENTS.md +0 -0
  9. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  10. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  11. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  12. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  13. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  14. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  15. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  16. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +0 -0
  17. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  18. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  19. {mainsequence-6.0.46 → mainsequence-6.0.47}/agent_scaffold/skills/sdk_project_execution/SKILL.md +0 -0
  20. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/__init__.py +0 -0
  21. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/__main__.py +0 -0
  22. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/bootstrap.py +0 -0
  23. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/__init__.py +0 -0
  24. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/api.py +0 -0
  25. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/browser_auth.py +0 -0
  26. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/cli.py +0 -0
  27. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/config.py +0 -0
  28. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/docker_utils.py +0 -0
  29. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/doctor.py +0 -0
  30. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/local_ops.py +0 -0
  31. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/migrations.py +0 -0
  32. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/model_filters.py +0 -0
  33. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/project_status.py +0 -0
  34. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/pydantic_cli.py +0 -0
  35. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/sdk_utils.py +0 -0
  36. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/ssh_utils.py +0 -0
  37. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/cli/ui.py +0 -0
  38. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/__init__.py +0 -0
  39. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/base.py +0 -0
  40. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/client.py +0 -0
  41. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/compute_validation.py +0 -0
  42. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  43. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  44. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  45. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  46. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/dtype_codec.py +0 -0
  47. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/exceptions.py +0 -0
  48. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/metatables/__init__.py +0 -0
  49. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/metatables/core.py +0 -0
  50. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/models_foundry.py +0 -0
  51. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/models_helpers.py +0 -0
  52. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/models_user.py +0 -0
  53. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/client/utils.py +0 -0
  54. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/defaults.py +0 -0
  55. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/instrumentation/__init__.py +0 -0
  56. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/instrumentation/utils.py +0 -0
  57. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/logconf.py +0 -0
  58. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/__init__.py +0 -0
  59. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/__main__.py +0 -0
  60. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  61. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  62. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  63. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  64. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  65. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  66. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  67. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  68. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  69. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  70. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/future_registry.py +0 -0
  71. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/hashing.py +0 -0
  72. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  73. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  74. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/env.py +0 -0
  75. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/provider.py +0 -0
  76. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/registry.py +0 -0
  77. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  78. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  79. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  80. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  81. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  82. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/schema_names.py +0 -0
  83. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  84. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/project_context.py +0 -0
  85. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/project_skills.py +0 -0
  86. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/runtime_flags.py +0 -0
  87. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence/scaffold_skills.py +0 -0
  88. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/SOURCES.txt +0 -0
  89. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/dependency_links.txt +0 -0
  90. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/entry_points.txt +0 -0
  91. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/requires.txt +0 -0
  92. {mainsequence-6.0.46 → mainsequence-6.0.47}/mainsequence.egg-info/top_level.txt +0 -0
  93. {mainsequence-6.0.46 → mainsequence-6.0.47}/setup.cfg +0 -0
  94. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_auth_precedence.py +0 -0
  95. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_build_operations_hashing.py +0 -0
  96. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_canonical_api_route_contract.py +0 -0
  97. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_cli.py +0 -0
  98. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_cli_browser_auth.py +0 -0
  99. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_cli_migrations.py +0 -0
  100. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_client.py +0 -0
  101. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  102. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_data_node_storage_dimension_queries.py +0 -0
  103. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_data_node_update_flow.py +0 -0
  104. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_dependency_extras.py +0 -0
  105. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_duckdb_interface_dimensions.py +0 -0
  106. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_environment_resource_context.py +0 -0
  107. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_environment_response_contracts.py +0 -0
  108. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_instrumentation.py +0 -0
  109. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_local_ops.py +0 -0
  110. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_logconf.py +0 -0
  111. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_meta_table_migrations.py +0 -0
  112. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_meta_tables_client_models.py +0 -0
  113. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  114. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_models_user_request_bound_auth.py +0 -0
  115. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_notification_uid_contract.py +0 -0
  116. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_pod_project_resolution.py +0 -0
  117. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_project_batch_jobs_from_file.py +0 -0
  118. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_project_branch_contract.py +0 -0
  119. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_project_runtime_context.py +0 -0
  120. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_project_skills.py +0 -0
  121. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_run_configuration.py +0 -0
  122. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_scaffold_skills.py +0 -0
  123. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_scheduler_client_model.py +0 -0
  124. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_schema_names.py +0 -0
  125. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_secret_client_model.py +0 -0
  126. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_source_table_configuration.py +0 -0
  127. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_sqlite_interface_dimensions.py +0 -0
  128. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_ssh_utils.py +0 -0
  129. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_update_runner_uid_runtime.py +0 -0
  130. {mainsequence-6.0.46 → mainsequence-6.0.47}/tests/test_update_statistics.py +0 -0
  131. {mainsequence-6.0.46 → mainsequence-6.0.47}/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.46
3
+ Version: 6.0.47
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -14,6 +14,7 @@ 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
17
+ from .models_helpers import AutomaticRedeploymentPolicy
17
18
  from .utils import make_request, serialize_to_json
18
19
 
19
20
  DEFAULT_AGENT_SESSION_LONG_REQUEST_TIMEOUT = (5.0, 900.0)
@@ -566,6 +567,10 @@ class CodingAgentService(BaseObjectOrm, BasePydanticModel):
566
567
  }
567
568
 
568
569
  uid: str | None = Field(None, description="Public UID of the coding-agent service.")
570
+ harness: AgentHarnessKind = Field(
571
+ ...,
572
+ description="Runtime harness deployed by this coding-agent service.",
573
+ )
569
574
  agent_uid: str | None = Field(None, description="Public UID of the owning Agent.")
570
575
  agent_type: str | None = Field(
571
576
  None,
@@ -586,12 +591,56 @@ class CodingAgentService(BaseObjectOrm, BasePydanticModel):
586
591
  image_drift: dict[str, Any] | None = Field(
587
592
  None, description="Runtime image drift status payload."
588
593
  )
594
+ llm_provider: str | None = Field(
595
+ ...,
596
+ description="Read-only LLM provider projected from the owning Agent.",
597
+ )
598
+ llm_model: str | None = Field(
599
+ ...,
600
+ description="Read-only LLM model projected from the owning Agent.",
601
+ )
602
+ llm_thinking: str | None = Field(
603
+ ...,
604
+ description="Read-only thinking level projected from the owning Agent.",
605
+ )
606
+ cpu_request: str | None = Field(
607
+ ...,
608
+ description="Read-only CPU request projected from the backing Job.",
609
+ )
610
+ cpu_limit: str | None = Field(
611
+ ...,
612
+ description="Read-only CPU limit projected from the backing Job.",
613
+ )
614
+ memory_request: str | None = Field(
615
+ ...,
616
+ description="Read-only memory request projected from the backing Job.",
617
+ )
618
+ memory_limit: str | None = Field(
619
+ ...,
620
+ description="Read-only memory limit projected from the backing Job.",
621
+ )
622
+ gpu_request: str | None = Field(
623
+ ...,
624
+ description="Read-only GPU request projected from the backing Job.",
625
+ )
626
+ gpu_type: str | None = Field(
627
+ ...,
628
+ description="Read-only GPU type projected from the backing Job.",
629
+ )
630
+ spot: bool | None = Field(
631
+ ...,
632
+ description="Read-only spot scheduling flag projected from the backing Job.",
633
+ )
589
634
  related_job_uid: str | None = Field(
590
635
  None, description="Public UID of the backing job, if attached."
591
636
  )
592
637
  service_runtime_uid: str | None = Field(
593
638
  None, description="Public UID of the backing service runtime, if attached."
594
639
  )
640
+ automatic_redeployment_policy: AutomaticRedeploymentPolicy | None = Field(
641
+ ...,
642
+ description="Automatic redeployment policy for a Project Executor service.",
643
+ )
595
644
 
596
645
  @classmethod
597
646
  def _post_collection_action(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.46
3
+ Version: 6.0.47
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "6.0.46"
7
+ version = "6.0.47"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -1855,6 +1855,7 @@ def test_agent_runtime_models_deserialize_backend_uid_payloads():
1855
1855
  service = agent_models_mod.CodingAgentService.model_validate(
1856
1856
  {
1857
1857
  "uid": service_uid,
1858
+ "harness": "tau",
1858
1859
  "agent_uid": agent_uid,
1859
1860
  "agent_type": "project-executor",
1860
1861
  "scope": {
@@ -1863,16 +1864,36 @@ def test_agent_runtime_models_deserialize_backend_uid_payloads():
1863
1864
  },
1864
1865
  "is_ready": True,
1865
1866
  "image_drift": {"has_drift": False, "checks": []},
1867
+ "llm_provider": "openai",
1868
+ "llm_model": "gpt-5.4",
1869
+ "llm_thinking": "medium",
1870
+ "cpu_request": "250m",
1871
+ "cpu_limit": "1000m",
1872
+ "memory_request": "512Mi",
1873
+ "memory_limit": "2Gi",
1874
+ "gpu_request": None,
1875
+ "gpu_type": None,
1876
+ "spot": False,
1866
1877
  "related_job_uid": "job-uid",
1867
1878
  "service_runtime_uid": "runtime-uid",
1868
1879
  "automatic_deployment": True,
1880
+ "automatic_redeployment_policy": {
1881
+ "tag_regex": None,
1882
+ "policy_revision": 1,
1883
+ },
1869
1884
  }
1870
1885
  )
1871
1886
  assert service.uid == service_uid
1872
1887
  assert service.agent_uid == agent_uid
1873
1888
  assert service.agent_type == "project-executor"
1889
+ assert service.harness is agent_models_mod.AgentHarnessKind.TAU
1874
1890
  assert service.scope["project_branch_uid"] == "project-branch-uid"
1891
+ assert service.llm_model == "gpt-5.4"
1892
+ assert service.cpu_request == "250m"
1893
+ assert service.spot is False
1875
1894
  assert service.service_runtime_uid == "runtime-uid"
1895
+ assert service.automatic_redeployment_policy is not None
1896
+ assert service.automatic_redeployment_policy.policy_revision == 1
1876
1897
 
1877
1898
 
1878
1899
  def test_agent_scope_projection_is_required_but_nullable():
File without changes
File without changes
File without changes