mainsequence 9.0.18.dev61__tar.gz → 9.0.20__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-9.0.18.dev61 → mainsequence-9.0.20}/PKG-INFO +1 -1
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/agent_runtime_models.py +14 -13
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/pyproject.toml +1 -1
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/LICENSE +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/README.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/mainsequence-inference/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/maintenance/metatables_transition/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/__init__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/__main__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/_request_identity.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/bootstrap.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/api.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/cli.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/code_repository_status.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/config.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/ui.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/__init__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/_transport.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/base.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/github_issues.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/inference.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/models_user.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/observability.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/value_sets.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/code_repository_context.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/code_repository_skills.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/defaults.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/logconf.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/repository_identity_security.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/runtime_credential_exchange.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/server/__init__.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/server/caller_assertions.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/server/fastapi.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/setup.cfg +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_auth_bootstrap.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_auth_precedence.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_caller_assertions.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_canonical_api_route_contract.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_cli_auth_contract.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_cli_secure_storage.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_branch_contract.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_documentation_contract.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_runtime_context.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_skills.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_credential_repr.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_dependency_extras.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_dev_release_version.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_environment_resource_context.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_environment_response_contracts.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_fastapi_mcp.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_fastapi_request_identity.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_github_issues_client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_http_retry_budget.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_independent_context.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_inference_client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_instrumentation.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_job_client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_local_ops.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_logconf.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_notification_uid_contract.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_observability_client.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_runtime_credential_exchange.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_secret_client_model.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_source_ownership.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_ssh_utils.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_tolerant_response_reading.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_tolerant_value_sets.py +0 -0
- {mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_user_application_facts.py +0 -0
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/client/agent_runtime_models.py
RENAMED
|
@@ -38,8 +38,9 @@ DEFAULT_AGENT_RUNTIME_ACCESS_CACHE_EXPIRY_SKEW_SECONDS = 30.0
|
|
|
38
38
|
STANDARD_A2A_MESSAGE_SEND_PATH = "/api/a2a/v1/message:send"
|
|
39
39
|
STANDARD_A2A_TASKS_PATH = "/api/a2a/v1/tasks"
|
|
40
40
|
STANDARD_A2A_CONTENT_TYPE = "application/a2a+json"
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
# Public A2A v1 roles; requester/responder directions belong to the runtime binding.
|
|
42
|
+
STANDARD_A2A_REQUESTER_ROLE = "ROLE_USER"
|
|
43
|
+
STANDARD_A2A_RESPONDER_ROLE = "ROLE_AGENT"
|
|
43
44
|
STANDARD_A2A_RESPONSE_KIND_EXTENSION_URI = "https://mainsequence.ai/a2a/extensions/response-kind/v1"
|
|
44
45
|
STANDARD_A2A_OUTPUT_CONTRACT_METADATA_KEY = (
|
|
45
46
|
"https://mainsequence.ai/a2a/extensions/output-contract/v1"
|
|
@@ -112,8 +113,15 @@ class A2AMessageSendResult(BasePydanticModel):
|
|
|
112
113
|
def _require_exact_result(self) -> A2AMessageSendResult:
|
|
113
114
|
if (self.message is None) == (self.task is None):
|
|
114
115
|
raise ValueError("A2A message-send result must contain exactly one of message or task")
|
|
115
|
-
if self.message is not None
|
|
116
|
-
|
|
116
|
+
if self.message is not None:
|
|
117
|
+
if self.message.get("role") != STANDARD_A2A_RESPONDER_ROLE:
|
|
118
|
+
raise ValueError(f"A2A message result role must be {STANDARD_A2A_RESPONDER_ROLE}.")
|
|
119
|
+
message_id = self.message.get("messageId")
|
|
120
|
+
if not isinstance(message_id, str) or not message_id.strip():
|
|
121
|
+
raise ValueError("A2A message result messageId must be a non-empty string.")
|
|
122
|
+
parts = self.message.get("parts")
|
|
123
|
+
if not isinstance(parts, list) or not parts:
|
|
124
|
+
raise ValueError("A2A message result parts must be a non-empty array.")
|
|
117
125
|
return self
|
|
118
126
|
|
|
119
127
|
@property
|
|
@@ -768,10 +776,7 @@ class Agent(
|
|
|
768
776
|
"llm_provider": llm_provider,
|
|
769
777
|
"llm_model": llm_model,
|
|
770
778
|
"llm_thinking": llm_thinking,
|
|
771
|
-
"custom_id": (
|
|
772
|
-
custom_id
|
|
773
|
-
if custom_id is not None else None
|
|
774
|
-
),
|
|
779
|
+
"custom_id": (custom_id if custom_id is not None else None),
|
|
775
780
|
}
|
|
776
781
|
if resolved_session_uid and any(value is not None for value in creation_options.values()):
|
|
777
782
|
raise ValueError("Creation options require handle_unique_id, not session_uid")
|
|
@@ -801,11 +806,7 @@ class Agent(
|
|
|
801
806
|
if not isinstance(session_payload, dict):
|
|
802
807
|
raise TypeError("get_or_create_session response must be an AgentSession object")
|
|
803
808
|
session = AgentSession(**session_payload)
|
|
804
|
-
if
|
|
805
|
-
custom_id is not None
|
|
806
|
-
and session.custom_id
|
|
807
|
-
!= creation_options["custom_id"]
|
|
808
|
-
):
|
|
809
|
+
if custom_id is not None and session.custom_id != creation_options["custom_id"]:
|
|
809
810
|
raise ValueError("The returned session does not use the requested configured provider")
|
|
810
811
|
return session
|
|
811
812
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/cli/code_repository_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/repository_identity_security.py
RENAMED
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence/runtime_credential_exchange.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/mainsequence.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_canonical_api_route_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_branch_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_code_repository_runtime_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_environment_resource_context.py
RENAMED
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_environment_response_contracts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-9.0.18.dev61 → mainsequence-9.0.20}/tests/test_models_user_request_bound_auth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|