mainsequence 8.1.20.dev13__tar.gz → 8.1.20.dev15__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-8.1.20.dev13/mainsequence.egg-info → mainsequence-8.1.20.dev15}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/agent_runtime_models.py +50 -42
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/github_issues.py +8 -3
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/metatables/core.py +6 -5
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/models_foundry.py +3 -2
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/models_helpers.py +73 -51
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/models_user.py +4 -3
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/observability.py +14 -9
- mainsequence-8.1.20.dev15/mainsequence/client/value_sets.py +164 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence.egg-info/SOURCES.txt +2 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/pyproject.toml +1 -1
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_code_repository_branch_contract.py +14 -3
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_filter_normalization.py +19 -6
- mainsequence-8.1.20.dev15/tests/test_tolerant_value_sets.py +273 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/LICENSE +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/MANIFEST.in +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/README.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/__main__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/bootstrap.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/api.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/cli.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/code_repository_status.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/config.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/cli/ui.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/base.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/client.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/code_repository_context.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/defaults.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/logconf.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/repository_identity_security.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/setup.cfg +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_auth_precedence.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_canonical_api_route_contract.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_cli.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_cli_migrations.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_client.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_code_repository_documentation_contract.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_code_repository_runtime_context.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_dependency_extras.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_dev_release_version.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_environment_resource_context.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_environment_response_contracts.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_github_issues_client.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_instrumentation.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_local_ops.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_logconf.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_notification_uid_contract.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_observability_client.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_schema_names.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_secret_client_model.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_access_dimension_audit.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_dimension_queries.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_update_configuration.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_update_configuration_client.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_update_flow.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_time_index_table_update_hard_cut.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_tolerant_response_reading.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_update_statistics.py +0 -0
- {mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/tests/test_update_uid_guards.py +0 -0
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/agent_runtime_models.py
RENAMED
|
@@ -6,7 +6,6 @@ import json
|
|
|
6
6
|
import pathlib
|
|
7
7
|
import time
|
|
8
8
|
import uuid
|
|
9
|
-
from enum import Enum
|
|
10
9
|
from typing import Any, ClassVar, Literal
|
|
11
10
|
|
|
12
11
|
import requests
|
|
@@ -31,6 +30,7 @@ from .observability import (
|
|
|
31
30
|
PublicLogLevel,
|
|
32
31
|
)
|
|
33
32
|
from .utils import make_request, serialize_to_json
|
|
33
|
+
from .value_sets import OpenStrEnum, OpenValueSet
|
|
34
34
|
|
|
35
35
|
DEFAULT_AGENT_SESSION_LONG_REQUEST_TIMEOUT = (5.0, 900.0)
|
|
36
36
|
DEFAULT_AGENT_RUNTIME_ACCESS_CACHE_TTL_SECONDS = 60.0
|
|
@@ -50,7 +50,7 @@ MIN_RUNTIME_INTERACTION_RETRY_SECONDS = 0.5
|
|
|
50
50
|
MAX_RUNTIME_INTERACTION_RETRY_SECONDS = 30.0
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
class AgentSessionStatus(
|
|
53
|
+
class AgentSessionStatus(OpenStrEnum):
|
|
54
54
|
PENDING = "pending"
|
|
55
55
|
RUNNING = "running"
|
|
56
56
|
COMPLETED = "completed"
|
|
@@ -58,7 +58,7 @@ class AgentSessionStatus(str, Enum):
|
|
|
58
58
|
CANCELED = "canceled"
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
class A2AResponseKind(
|
|
61
|
+
class A2AResponseKind(OpenStrEnum):
|
|
62
62
|
MESSAGE = "message"
|
|
63
63
|
TASK = "task"
|
|
64
64
|
|
|
@@ -121,12 +121,12 @@ class A2AMessageSendResult(BasePydanticModel):
|
|
|
121
121
|
return A2AResponseKind.TASK if self.task is not None else A2AResponseKind.MESSAGE
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
class AgentHarnessKind(
|
|
124
|
+
class AgentHarnessKind(OpenStrEnum):
|
|
125
125
|
PI = "pi"
|
|
126
126
|
TAU = "tau"
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
class AgentHarnessProtocol(
|
|
129
|
+
class AgentHarnessProtocol(OpenStrEnum):
|
|
130
130
|
PI_CHECKPOINT_V1 = "pi-checkpoint-v1"
|
|
131
131
|
TAU_SESSION_V1 = "tau-session-v1"
|
|
132
132
|
|
|
@@ -136,13 +136,15 @@ class AgentRuntimeUpdateRemediation(BasePydanticModel):
|
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
class AgentRuntimeUpdate(BasePydanticModel):
|
|
139
|
-
state:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
139
|
+
state: OpenValueSet[
|
|
140
|
+
Literal[
|
|
141
|
+
"current",
|
|
142
|
+
"update_required",
|
|
143
|
+
"updating",
|
|
144
|
+
"update_failed",
|
|
145
|
+
"not_deployed",
|
|
146
|
+
"unknown",
|
|
147
|
+
]
|
|
146
148
|
]
|
|
147
149
|
needs_redeploy: bool | None
|
|
148
150
|
remediation: AgentRuntimeUpdateRemediation | None
|
|
@@ -279,7 +281,7 @@ class AgentRuntimeInteractionNotice(BasePydanticModel):
|
|
|
279
281
|
class AgentRuntimeInteractionAction(BasePydanticModel):
|
|
280
282
|
model_config = ConfigDict(extra="allow")
|
|
281
283
|
|
|
282
|
-
type: Literal["update_agent_runtime", "retry_runtime_wake"]
|
|
284
|
+
type: OpenValueSet[Literal["update_agent_runtime", "retry_runtime_wake"]]
|
|
283
285
|
label: str
|
|
284
286
|
confirmation_message: str
|
|
285
287
|
interaction_revision: str
|
|
@@ -299,16 +301,18 @@ class AgentRuntimeInteractionOperation(BasePydanticModel):
|
|
|
299
301
|
class AgentRuntimeInteraction(BasePydanticModel):
|
|
300
302
|
model_config = ConfigDict(extra="allow")
|
|
301
303
|
|
|
302
|
-
state:
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
304
|
+
state: OpenValueSet[
|
|
305
|
+
Literal[
|
|
306
|
+
"ready",
|
|
307
|
+
"warning",
|
|
308
|
+
"checking",
|
|
309
|
+
"starting",
|
|
310
|
+
"waking",
|
|
311
|
+
"update_required",
|
|
312
|
+
"updating",
|
|
313
|
+
"update_failed",
|
|
314
|
+
"unavailable",
|
|
315
|
+
]
|
|
312
316
|
]
|
|
313
317
|
can_submit: bool
|
|
314
318
|
notice: AgentRuntimeInteractionNotice | None
|
|
@@ -324,29 +328,33 @@ class AgentRuntimePresenceReplicas(BasePydanticModel):
|
|
|
324
328
|
|
|
325
329
|
class AgentRuntimePresenceWake(BasePydanticModel):
|
|
326
330
|
operation_uid: str
|
|
327
|
-
state:
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
331
|
+
state: OpenValueSet[
|
|
332
|
+
Literal[
|
|
333
|
+
"requested",
|
|
334
|
+
"in_progress",
|
|
335
|
+
"serving",
|
|
336
|
+
"failed",
|
|
337
|
+
"expired",
|
|
338
|
+
"superseded",
|
|
339
|
+
]
|
|
334
340
|
]
|
|
335
341
|
requested_at: str
|
|
336
342
|
deadline_at: str
|
|
337
343
|
|
|
338
344
|
|
|
339
345
|
class AgentRuntimePresence(BasePydanticModel):
|
|
340
|
-
phase:
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
346
|
+
phase: OpenValueSet[
|
|
347
|
+
Literal[
|
|
348
|
+
"not_deployed",
|
|
349
|
+
"observing",
|
|
350
|
+
"idle",
|
|
351
|
+
"provisioning",
|
|
352
|
+
"pulling_image",
|
|
353
|
+
"starting",
|
|
354
|
+
"serving",
|
|
355
|
+
"redeploying",
|
|
356
|
+
"failed",
|
|
357
|
+
]
|
|
350
358
|
]
|
|
351
359
|
replicas: AgentRuntimePresenceReplicas
|
|
352
360
|
detail: str
|
|
@@ -361,7 +369,7 @@ class AgentSessionRuntimeAccess(BasePydanticModel):
|
|
|
361
369
|
None,
|
|
362
370
|
description="Canonical public UID of the coding-agent service that owns the runtime.",
|
|
363
371
|
)
|
|
364
|
-
mode: Literal["token", "unavailable"] = Field(
|
|
372
|
+
mode: OpenValueSet[Literal["token", "unavailable"]] = Field(
|
|
365
373
|
"token",
|
|
366
374
|
description="Runtime access mode returned by the backend.",
|
|
367
375
|
)
|
|
@@ -862,7 +870,7 @@ class TauAgentSessionInsightsSession(BasePydanticModel):
|
|
|
862
870
|
agent_session_id: str = Field(..., alias="agentSessionId")
|
|
863
871
|
session_id: str | None = Field(None, alias="sessionId")
|
|
864
872
|
thread_id: str | None = Field(None, alias="threadId")
|
|
865
|
-
status: Literal["running", "completed", "error"]
|
|
873
|
+
status: OpenValueSet[Literal["running", "completed", "error"]]
|
|
866
874
|
started_at: datetime.datetime | None = Field(None, alias="startedAt")
|
|
867
875
|
updated_at: datetime.datetime | None = Field(None, alias="updatedAt")
|
|
868
876
|
last_error: str | None = Field(None, alias="lastError")
|
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/github_issues.py
RENAMED
|
@@ -11,11 +11,16 @@ from . import utils as client_utils
|
|
|
11
11
|
from .base import BasePydanticModel
|
|
12
12
|
from .exceptions import raise_for_response
|
|
13
13
|
from .utils import make_request
|
|
14
|
+
from .value_sets import OpenValueSet
|
|
14
15
|
|
|
15
16
|
GitHubIssueState = Literal["open", "closed"]
|
|
16
17
|
GitHubIssueStateReason = Literal["completed", "not_planned", "reopened"]
|
|
17
|
-
GitHubIssueOperationType =
|
|
18
|
-
|
|
18
|
+
GitHubIssueOperationType = OpenValueSet[
|
|
19
|
+
Literal["create_issue", "update_issue", "create_comment"]
|
|
20
|
+
]
|
|
21
|
+
GitHubIssueOperationStatus = OpenValueSet[
|
|
22
|
+
Literal["pending", "succeeded", "failed", "unknown"]
|
|
23
|
+
]
|
|
19
24
|
|
|
20
25
|
_IDEMPOTENCY_KEY_PATTERN = re.compile(r"^[A-Za-z0-9._:-]+$")
|
|
21
26
|
|
|
@@ -115,7 +120,7 @@ class _GitHubIssueProjection(BasePydanticModel):
|
|
|
115
120
|
issue_number: int
|
|
116
121
|
html_url: str
|
|
117
122
|
title: str
|
|
118
|
-
state: GitHubIssueState
|
|
123
|
+
state: OpenValueSet[GitHubIssueState]
|
|
119
124
|
state_reason: str | None
|
|
120
125
|
created_at: datetime.datetime
|
|
121
126
|
updated_at: datetime.datetime
|
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/metatables/core.py
RENAMED
|
@@ -61,6 +61,7 @@ from ..utils import (
|
|
|
61
61
|
make_request,
|
|
62
62
|
serialize_to_json,
|
|
63
63
|
)
|
|
64
|
+
from ..value_sets import OpenValueSet
|
|
64
65
|
|
|
65
66
|
DUCK_DB = "duck_db"
|
|
66
67
|
SQLITE = "sqlite"
|
|
@@ -1059,7 +1060,7 @@ class MetaTableCascadeDeletedMetaTable(BasePydanticModel):
|
|
|
1059
1060
|
meta_table_uid: str
|
|
1060
1061
|
physical_schema: str | None = None
|
|
1061
1062
|
physical_table_name: str | None = None
|
|
1062
|
-
management_mode: MetaTableManagementMode
|
|
1063
|
+
management_mode: OpenValueSet[MetaTableManagementMode]
|
|
1063
1064
|
physical_table_drop_scheduled: bool
|
|
1064
1065
|
physical_table_drop_cascade: bool
|
|
1065
1066
|
schema_management_protection_overridden: bool
|
|
@@ -1109,7 +1110,7 @@ class DataSource(BasePydanticModel, BaseObjectOrm):
|
|
|
1109
1110
|
)
|
|
1110
1111
|
class_type: str | None = None
|
|
1111
1112
|
status: str | None = None
|
|
1112
|
-
storage_access_mode: StorageAccessMode | None = Field(
|
|
1113
|
+
storage_access_mode: OpenValueSet[StorageAccessMode] | None = Field(
|
|
1113
1114
|
default="read_write",
|
|
1114
1115
|
description="Runtime storage access gate: read_write, read_only, or disabled.",
|
|
1115
1116
|
)
|
|
@@ -1369,9 +1370,9 @@ class MetaTable(
|
|
|
1369
1370
|
namespace: str | None = None
|
|
1370
1371
|
description: str | None = None
|
|
1371
1372
|
labels: list[str] = Field(default_factory=list)
|
|
1372
|
-
management_mode: MetaTableManagementMode
|
|
1373
|
-
provisioning_status: Literal["reserved", "active"] = "active"
|
|
1374
|
-
schema_management_mode: MetaTableSchemaManagementMode = "backend_managed"
|
|
1373
|
+
management_mode: OpenValueSet[MetaTableManagementMode]
|
|
1374
|
+
provisioning_status: OpenValueSet[Literal["reserved", "active"]] = "active"
|
|
1375
|
+
schema_management_mode: OpenValueSet[MetaTableSchemaManagementMode] = "backend_managed"
|
|
1375
1376
|
schema_management: dict[str, Any] = Field(default_factory=dict)
|
|
1376
1377
|
migration_package: str | None = None
|
|
1377
1378
|
migration_namespace: str | None = None
|
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/models_foundry.py
RENAMED
|
@@ -30,6 +30,7 @@ from .metatables import DataSource as _DataSource
|
|
|
30
30
|
from .utils import (
|
|
31
31
|
make_request,
|
|
32
32
|
)
|
|
33
|
+
from .value_sets import OpenValueSet
|
|
33
34
|
|
|
34
35
|
if TYPE_CHECKING:
|
|
35
36
|
from .github_issues import GitHubIssueMutationResult, GitHubIssuePage, GitHubIssueState
|
|
@@ -508,7 +509,7 @@ class CodeRepositoryBranch(BasePydanticModel, BaseObjectOrm):
|
|
|
508
509
|
github_repository_binding_uid: str | None = None
|
|
509
510
|
latest_git_version: str = ""
|
|
510
511
|
is_initialized: bool
|
|
511
|
-
provisioning_status: Literal["CREATING", "READY", "FAILED"]
|
|
512
|
+
provisioning_status: OpenValueSet[Literal["CREATING", "READY", "FAILED"]]
|
|
512
513
|
provisioning_job_run_uid: str | None
|
|
513
514
|
provisioning_error_code: str
|
|
514
515
|
provisioning_error_detail: str
|
|
@@ -726,7 +727,7 @@ class GitHubRepositoryBinding(BasePydanticModel, BaseObjectOrm):
|
|
|
726
727
|
|
|
727
728
|
|
|
728
729
|
class CodeRepositoryImageSourceProvenance(BasePydanticModel):
|
|
729
|
-
verification_state: Literal["verified", "unverified", "building", "failed"]
|
|
730
|
+
verification_state: OpenValueSet[Literal["verified", "unverified", "building", "failed"]]
|
|
730
731
|
code_repository_uid: str | None = None
|
|
731
732
|
code_repository_branch_uid: str | None = None
|
|
732
733
|
github_repository_binding_uid: str | None = None
|
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/models_helpers.py
RENAMED
|
@@ -5,7 +5,6 @@ import json
|
|
|
5
5
|
import time
|
|
6
6
|
from collections.abc import Collection
|
|
7
7
|
from decimal import Decimal
|
|
8
|
-
from enum import Enum
|
|
9
8
|
from pathlib import PurePosixPath
|
|
10
9
|
from typing import Any, ClassVar, Literal
|
|
11
10
|
from uuid import UUID
|
|
@@ -41,6 +40,7 @@ from .observability import (
|
|
|
41
40
|
PublicLogLevel,
|
|
42
41
|
)
|
|
43
42
|
from .utils import make_request
|
|
43
|
+
from .value_sets import OpenStrEnum, OpenValueSet
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
def get_model_class(model_class: str):
|
|
@@ -1156,27 +1156,34 @@ class CodeRepositoryResource(CurrentCodeRepositoryBranchCollectionMixin, BaseObj
|
|
|
1156
1156
|
)
|
|
1157
1157
|
|
|
1158
1158
|
|
|
1159
|
-
class ResourceReleaseKind(
|
|
1159
|
+
class ResourceReleaseKind(OpenStrEnum):
|
|
1160
|
+
"""The backend's canonical release-kind vocabulary.
|
|
1161
|
+
|
|
1162
|
+
Open (ADR 0033): a kind a later backend adds is read as sent, rather than
|
|
1163
|
+
failing the release that carries it and the listing that release is in.
|
|
1164
|
+
"""
|
|
1165
|
+
|
|
1160
1166
|
AGENT = "agent"
|
|
1161
1167
|
FAST_API = "fastapi"
|
|
1168
|
+
HARNESS_AGENT = "harness_agent"
|
|
1162
1169
|
STATIC_SITE = "static_site"
|
|
1163
1170
|
|
|
1164
1171
|
|
|
1165
1172
|
class ResourceReleaseRuntimeRouting(BasePydanticModel):
|
|
1166
|
-
state: Literal["routable", "unavailable"]
|
|
1173
|
+
state: OpenValueSet[Literal["routable", "unavailable"]]
|
|
1167
1174
|
active_revision_uid: str | None = None
|
|
1168
1175
|
|
|
1169
1176
|
|
|
1170
1177
|
class ResourceReleaseRuntimeNotice(BasePydanticModel):
|
|
1171
1178
|
code: str
|
|
1172
|
-
severity: Literal["info", "warning", "error"]
|
|
1179
|
+
severity: OpenValueSet[Literal["info", "warning", "error"]]
|
|
1173
1180
|
title: str
|
|
1174
1181
|
message: str
|
|
1175
1182
|
|
|
1176
1183
|
|
|
1177
1184
|
class ResourceReleaseRuntimeOperation(BasePydanticModel):
|
|
1178
1185
|
uid: str
|
|
1179
|
-
status: Literal["queued", "running", "succeeded", "failed", "superseded"]
|
|
1186
|
+
status: OpenValueSet[Literal["queued", "running", "succeeded", "failed", "superseded"]]
|
|
1180
1187
|
created_at: datetime.datetime
|
|
1181
1188
|
started_at: datetime.datetime | None = None
|
|
1182
1189
|
finished_at: datetime.datetime | None = None
|
|
@@ -1184,7 +1191,7 @@ class ResourceReleaseRuntimeOperation(BasePydanticModel):
|
|
|
1184
1191
|
|
|
1185
1192
|
|
|
1186
1193
|
class ResourceReleaseRuntimeAdmission(BasePydanticModel):
|
|
1187
|
-
state: Literal["ready", "waking", "unavailable"]
|
|
1194
|
+
state: OpenValueSet[Literal["ready", "waking", "unavailable"]]
|
|
1188
1195
|
can_request: bool
|
|
1189
1196
|
notice: ResourceReleaseRuntimeNotice | None = None
|
|
1190
1197
|
operation: ResourceReleaseRuntimeOperation | None = None
|
|
@@ -1198,24 +1205,28 @@ class ResourceReleaseRuntimeReplicas(BasePydanticModel):
|
|
|
1198
1205
|
|
|
1199
1206
|
class ResourceReleaseRuntimeWake(BasePydanticModel):
|
|
1200
1207
|
operation_uid: str
|
|
1201
|
-
state:
|
|
1202
|
-
|
|
1208
|
+
state: OpenValueSet[
|
|
1209
|
+
Literal[
|
|
1210
|
+
"requested", "in_progress", "serving", "failed", "expired", "superseded"
|
|
1211
|
+
]
|
|
1203
1212
|
]
|
|
1204
1213
|
requested_at: datetime.datetime
|
|
1205
1214
|
deadline_at: datetime.datetime
|
|
1206
1215
|
|
|
1207
1216
|
|
|
1208
1217
|
class ResourceReleaseRuntimePresence(BasePydanticModel):
|
|
1209
|
-
phase:
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1218
|
+
phase: OpenValueSet[
|
|
1219
|
+
Literal[
|
|
1220
|
+
"not_deployed",
|
|
1221
|
+
"idle",
|
|
1222
|
+
"observing",
|
|
1223
|
+
"provisioning",
|
|
1224
|
+
"pulling_image",
|
|
1225
|
+
"starting",
|
|
1226
|
+
"serving",
|
|
1227
|
+
"redeploying",
|
|
1228
|
+
"failed",
|
|
1229
|
+
]
|
|
1219
1230
|
]
|
|
1220
1231
|
replicas: ResourceReleaseRuntimeReplicas
|
|
1221
1232
|
detail: str
|
|
@@ -1225,7 +1236,9 @@ class ResourceReleaseRuntimePresence(BasePydanticModel):
|
|
|
1225
1236
|
|
|
1226
1237
|
class ResourceReleaseRuntimeAccess(BasePydanticModel):
|
|
1227
1238
|
resource_release_uid: str
|
|
1228
|
-
release_kind:
|
|
1239
|
+
# The canonical vocabulary ResourceRelease.release_kind reads (#119): this
|
|
1240
|
+
# payload names a release kind, so it names it the same way.
|
|
1241
|
+
release_kind: ResourceReleaseKind
|
|
1229
1242
|
routing: ResourceReleaseRuntimeRouting
|
|
1230
1243
|
runtime_access: ResourceReleaseRuntimeAdmission
|
|
1231
1244
|
runtime_presence: ResourceReleaseRuntimePresence
|
|
@@ -1512,11 +1525,14 @@ class ResourceRelease(
|
|
|
1512
1525
|
normalized_release_kind = release_kind.value
|
|
1513
1526
|
else:
|
|
1514
1527
|
normalized_release_kind = Job._normalize_str(release_kind)
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1528
|
+
# What the SDK sends stays closed (ADR 0033). ResourceReleaseKind reads an
|
|
1529
|
+
# undeclared kind out of a response, but iterating it yields only the kinds
|
|
1530
|
+
# this release declares, so a kind built here is still checked against them.
|
|
1531
|
+
allowed_release_kinds = {kind.value for kind in ResourceReleaseKind}
|
|
1532
|
+
if normalized_release_kind not in allowed_release_kinds:
|
|
1533
|
+
raise ValueError(
|
|
1534
|
+
"release_kind must be one of: " + ", ".join(sorted(allowed_release_kinds)) + "."
|
|
1535
|
+
)
|
|
1520
1536
|
|
|
1521
1537
|
normalized_compute = Job._validate_and_normalize_compute_fields(
|
|
1522
1538
|
cpu_request=cpu_request,
|
|
@@ -1617,26 +1633,30 @@ class DeploymentRunStep(BaseModel):
|
|
|
1617
1633
|
sequence: PositiveInt
|
|
1618
1634
|
key: str
|
|
1619
1635
|
name: str = ""
|
|
1620
|
-
kind:
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1636
|
+
kind: OpenValueSet[
|
|
1637
|
+
Literal[
|
|
1638
|
+
"source",
|
|
1639
|
+
"image_build",
|
|
1640
|
+
"validation",
|
|
1641
|
+
"runtime_deploy",
|
|
1642
|
+
"runtime_readiness",
|
|
1643
|
+
"publish",
|
|
1644
|
+
"cleanup",
|
|
1645
|
+
"orchestration",
|
|
1646
|
+
]
|
|
1629
1647
|
]
|
|
1630
1648
|
required: bool = True
|
|
1631
|
-
state:
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1649
|
+
state: OpenValueSet[
|
|
1650
|
+
Literal[
|
|
1651
|
+
"pending",
|
|
1652
|
+
"running",
|
|
1653
|
+
"succeeded",
|
|
1654
|
+
"failed",
|
|
1655
|
+
"cancelled",
|
|
1656
|
+
"skipped",
|
|
1657
|
+
"blocked",
|
|
1658
|
+
"superseded",
|
|
1659
|
+
]
|
|
1640
1660
|
]
|
|
1641
1661
|
outcome: str = ""
|
|
1642
1662
|
artifact_context: dict[str, Any] = Field(default_factory=dict)
|
|
@@ -1658,12 +1678,14 @@ class DeploymentRunBillingComponents(BasePydanticModel):
|
|
|
1658
1678
|
image_registry_service: Decimal | None = Field(max_digits=18, decimal_places=6)
|
|
1659
1679
|
|
|
1660
1680
|
|
|
1661
|
-
DeploymentRunPricingState =
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1681
|
+
DeploymentRunPricingState = OpenValueSet[
|
|
1682
|
+
Literal[
|
|
1683
|
+
"priced",
|
|
1684
|
+
"partial",
|
|
1685
|
+
"pending",
|
|
1686
|
+
"unavailable",
|
|
1687
|
+
"failed",
|
|
1688
|
+
]
|
|
1667
1689
|
]
|
|
1668
1690
|
|
|
1669
1691
|
|
|
@@ -1700,14 +1722,14 @@ class DeploymentRunLogEntry(BaseModel):
|
|
|
1700
1722
|
timestamp: datetime.datetime | None = None
|
|
1701
1723
|
step_uid: str | None = None
|
|
1702
1724
|
source: str
|
|
1703
|
-
stream: Literal["stdout", "stderr"]
|
|
1704
|
-
level: Literal["debug", "info", "warning", "error"]
|
|
1725
|
+
stream: OpenValueSet[Literal["stdout", "stderr"]]
|
|
1726
|
+
level: OpenValueSet[Literal["debug", "info", "warning", "error"]]
|
|
1705
1727
|
text: str = ""
|
|
1706
1728
|
|
|
1707
1729
|
|
|
1708
1730
|
class DeploymentRunLogSource(BaseModel):
|
|
1709
1731
|
source: str
|
|
1710
|
-
state: Literal["pending", "available", "partial", "expired", "unavailable"]
|
|
1732
|
+
state: OpenValueSet[Literal["pending", "available", "partial", "expired", "unavailable"]]
|
|
1711
1733
|
|
|
1712
1734
|
|
|
1713
1735
|
class DeploymentRunLogPage(BaseModel):
|
|
@@ -22,6 +22,7 @@ from .utils import (
|
|
|
22
22
|
DEFAULT_TIMEOUT,
|
|
23
23
|
make_request,
|
|
24
24
|
)
|
|
25
|
+
from .value_sets import OpenValueSet
|
|
25
26
|
|
|
26
27
|
_CURRENT_AUTH_HEADERS: ContextVar[Mapping[str, Any] | None] = ContextVar(
|
|
27
28
|
"_CURRENT_AUTH_HEADERS",
|
|
@@ -528,7 +529,7 @@ class Notification(DetailActionObjectMixin, BasePydanticModel, UserApiBaseObject
|
|
|
528
529
|
title="Notification UID",
|
|
529
530
|
description="Stable public unique identifier of the notification.",
|
|
530
531
|
)
|
|
531
|
-
source: Literal["system", "organization"] | None = Field(
|
|
532
|
+
source: OpenValueSet[Literal["system", "organization"]] | None = Field(
|
|
532
533
|
None,
|
|
533
534
|
title="Notification Source",
|
|
534
535
|
description="Source scope of the notification.",
|
|
@@ -544,7 +545,7 @@ class Notification(DetailActionObjectMixin, BasePydanticModel, UserApiBaseObject
|
|
|
544
545
|
title="Source Organization UID",
|
|
545
546
|
description="Public UID of the organization that owns the notification.",
|
|
546
547
|
)
|
|
547
|
-
type: Literal["UR", "IM", "IN"] = Field(
|
|
548
|
+
type: OpenValueSet[Literal["UR", "IM", "IN"]] = Field(
|
|
548
549
|
"IN",
|
|
549
550
|
title="Notification Type",
|
|
550
551
|
description="Stored notification priority code.",
|
|
@@ -914,7 +915,7 @@ class ShareableAccessState(BasePydanticModel):
|
|
|
914
915
|
description="Backend object type identifier for the shareable object.",
|
|
915
916
|
examples=["tdag.constant"],
|
|
916
917
|
)
|
|
917
|
-
access_level: Literal["view", "edit"] = Field(
|
|
918
|
+
access_level: OpenValueSet[Literal["view", "edit"]] = Field(
|
|
918
919
|
...,
|
|
919
920
|
title="Access Level",
|
|
920
921
|
description="Permission level represented by this access-state payload.",
|
{mainsequence-8.1.20.dev13 → mainsequence-8.1.20.dev15}/mainsequence/client/observability.py
RENAMED
|
@@ -10,6 +10,7 @@ from pydantic import ConfigDict, Field
|
|
|
10
10
|
from .base import BasePydanticModel
|
|
11
11
|
from .exceptions import ApiError, raise_for_response
|
|
12
12
|
from .utils import make_request
|
|
13
|
+
from .value_sets import OpenValueSet
|
|
13
14
|
|
|
14
15
|
PublicLogLevel = Literal[
|
|
15
16
|
"debug",
|
|
@@ -55,7 +56,7 @@ class OwnerLogRow(BasePydanticModel):
|
|
|
55
56
|
time: int | float | None = None
|
|
56
57
|
timestamp: str | None = None
|
|
57
58
|
severity: str | None = None
|
|
58
|
-
level: PublicLogLevel | None = None
|
|
59
|
+
level: OpenValueSet[PublicLogLevel] | None = None
|
|
59
60
|
source: str | None = None
|
|
60
61
|
event: str | None = None
|
|
61
62
|
event_id: str | None = None
|
|
@@ -110,16 +111,18 @@ class OwnerLogPage(BasePydanticModel):
|
|
|
110
111
|
class EnvironmentLogSearchRow(OwnerLogRow):
|
|
111
112
|
"""One sanitized row returned by an Environment-scoped collection search."""
|
|
112
113
|
|
|
113
|
-
owner_type:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
owner_type: OpenValueSet[
|
|
115
|
+
Literal[
|
|
116
|
+
"deployment_run",
|
|
117
|
+
"job_run",
|
|
118
|
+
"resource_release",
|
|
119
|
+
"agent",
|
|
120
|
+
"agent_session",
|
|
121
|
+
]
|
|
119
122
|
]
|
|
120
123
|
owner_uid: str
|
|
121
124
|
occurred_at: datetime.datetime
|
|
122
|
-
level: PublicLogLevel
|
|
125
|
+
level: OpenValueSet[PublicLogLevel]
|
|
123
126
|
|
|
124
127
|
|
|
125
128
|
class EnvironmentLogSearchPage(BasePydanticModel):
|
|
@@ -134,7 +137,9 @@ class EnvironmentLogSearchPage(BasePydanticModel):
|
|
|
134
137
|
result_limit: int = Field(ge=0)
|
|
135
138
|
next_cursor: str | None = None
|
|
136
139
|
truncated: bool
|
|
137
|
-
truncation_reason:
|
|
140
|
+
truncation_reason: (
|
|
141
|
+
OpenValueSet[Literal["page_limit", "result_limit", "candidate_limit"]] | None
|
|
142
|
+
) = None
|
|
138
143
|
rows: list[EnvironmentLogSearchRow] = Field(default_factory=list)
|
|
139
144
|
|
|
140
145
|
|