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.
Files changed (105) hide show
  1. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/PKG-INFO +1 -1
  2. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/agent_runtime_models.py +13 -14
  3. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/PKG-INFO +1 -1
  4. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/pyproject.toml +1 -1
  5. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/LICENSE +0 -0
  6. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/README.md +0 -0
  7. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/AGENTS.md +0 -0
  8. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  9. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  10. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/mainsequence-inference/SKILL.md +0 -0
  11. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  12. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
  13. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/maintenance/metatables_transition/SKILL.md +0 -0
  14. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  15. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  16. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
  17. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/__init__.py +0 -0
  18. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/__main__.py +0 -0
  19. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/_request_identity.py +0 -0
  20. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/bootstrap.py +0 -0
  21. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/__init__.py +0 -0
  22. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/api.py +0 -0
  23. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/browser_auth.py +0 -0
  24. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/cli.py +0 -0
  25. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/code_repository_status.py +0 -0
  26. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/config.py +0 -0
  27. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/docker_utils.py +0 -0
  28. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/doctor.py +0 -0
  29. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/local_ops.py +0 -0
  30. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/model_filters.py +0 -0
  31. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/pydantic_cli.py +0 -0
  32. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/sdk_utils.py +0 -0
  33. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/ssh_utils.py +0 -0
  34. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/cli/ui.py +0 -0
  35. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/__init__.py +0 -0
  36. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/_transport.py +0 -0
  37. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/base.py +0 -0
  38. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/client.py +0 -0
  39. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/compute_validation.py +0 -0
  40. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/exceptions.py +0 -0
  41. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/github_issues.py +0 -0
  42. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/inference.py +0 -0
  43. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/models_foundry.py +0 -0
  44. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/models_helpers.py +0 -0
  45. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/models_user.py +0 -0
  46. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/observability.py +0 -0
  47. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/utils.py +0 -0
  48. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/client/value_sets.py +0 -0
  49. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/code_repository_context.py +0 -0
  50. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/code_repository_skills.py +0 -0
  51. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/defaults.py +0 -0
  52. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/instrumentation/__init__.py +0 -0
  53. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/instrumentation/utils.py +0 -0
  54. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/logconf.py +0 -0
  55. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/repository_identity_security.py +0 -0
  56. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/runtime_credential_exchange.py +0 -0
  57. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/runtime_flags.py +0 -0
  58. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/scaffold_skills.py +0 -0
  59. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/server/__init__.py +0 -0
  60. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/server/caller_assertions.py +0 -0
  61. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence/server/fastapi.py +0 -0
  62. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/SOURCES.txt +0 -0
  63. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/dependency_links.txt +0 -0
  64. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/entry_points.txt +0 -0
  65. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/requires.txt +0 -0
  66. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/mainsequence.egg-info/top_level.txt +0 -0
  67. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/setup.cfg +0 -0
  68. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_auth_bootstrap.py +0 -0
  69. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_auth_precedence.py +0 -0
  70. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_caller_assertions.py +0 -0
  71. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_canonical_api_route_contract.py +0 -0
  72. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_cli_auth_contract.py +0 -0
  73. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_cli_browser_auth.py +0 -0
  74. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_cli_secure_storage.py +0 -0
  75. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_client.py +0 -0
  76. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_code_repository_branch_contract.py +0 -0
  77. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_code_repository_documentation_contract.py +0 -0
  78. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_code_repository_runtime_context.py +0 -0
  79. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_code_repository_skills.py +0 -0
  80. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_credential_repr.py +0 -0
  81. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_dependency_extras.py +0 -0
  82. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_dev_release_version.py +0 -0
  83. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_environment_resource_context.py +0 -0
  84. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_environment_response_contracts.py +0 -0
  85. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_fastapi_mcp.py +0 -0
  86. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_fastapi_request_identity.py +0 -0
  87. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_github_issues_client.py +0 -0
  88. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_http_retry_budget.py +0 -0
  89. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_independent_context.py +0 -0
  90. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_inference_client.py +0 -0
  91. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_instrumentation.py +0 -0
  92. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_job_client.py +0 -0
  93. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_local_ops.py +0 -0
  94. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_logconf.py +0 -0
  95. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_models_user_request_bound_auth.py +0 -0
  96. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_notification_uid_contract.py +0 -0
  97. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_observability_client.py +0 -0
  98. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_runtime_credential_exchange.py +0 -0
  99. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_scaffold_skills.py +0 -0
  100. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_secret_client_model.py +0 -0
  101. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_source_ownership.py +0 -0
  102. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_ssh_utils.py +0 -0
  103. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_tolerant_response_reading.py +0 -0
  104. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_tolerant_value_sets.py +0 -0
  105. {mainsequence-9.0.20 → mainsequence-9.0.20.dev62}/tests/test_user_application_facts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 9.0.20
3
+ Version: 9.0.20.dev62
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -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
- # 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"
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
- 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.")
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": (custom_id if custom_id is not None else None),
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 custom_id is not None and session.custom_id != creation_options["custom_id"]:
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 9.0.20
3
+ Version: 9.0.20.dev62
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "9.0.20"
7
+ version = "9.0.20.dev62"
8
8
  description = "Main Sequence SDK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"