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