agentstack-sdk 0.4.0__tar.gz → 0.4.1__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 (60) hide show
  1. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/PKG-INFO +1 -1
  2. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/pyproject.toml +1 -1
  3. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/services/mcp.py +23 -1
  4. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/agent.py +1 -1
  5. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/server.py +5 -3
  6. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/README.md +0 -0
  7. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/__init__.py +0 -0
  8. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/__init__.py +0 -0
  9. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/__init__.py +0 -0
  10. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/__init__.py +0 -0
  11. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/oauth/__init__.py +0 -0
  12. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/oauth/oauth.py +0 -0
  13. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/oauth/storage/__init__.py +0 -0
  14. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/oauth/storage/base.py +0 -0
  15. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/oauth/storage/memory.py +0 -0
  16. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/secrets/__init__.py +0 -0
  17. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/auth/secrets/secrets.py +0 -0
  18. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/base.py +0 -0
  19. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/exceptions.py +0 -0
  20. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/services/__init__.py +0 -0
  21. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/services/embedding.py +0 -0
  22. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/services/llm.py +0 -0
  23. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/services/platform.py +0 -0
  24. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/__init__.py +0 -0
  25. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/agent_detail.py +0 -0
  26. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/canvas.py +0 -0
  27. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/citation.py +0 -0
  28. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/form.py +0 -0
  29. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/settings.py +0 -0
  30. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/extensions/ui/trajectory.py +0 -0
  31. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/a2a/types.py +0 -0
  32. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/__init__.py +0 -0
  33. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/client.py +0 -0
  34. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/common.py +0 -0
  35. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/configuration.py +0 -0
  36. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/context.py +0 -0
  37. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/file.py +0 -0
  38. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/model_provider.py +0 -0
  39. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/provider.py +0 -0
  40. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/provider_build.py +0 -0
  41. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/types.py +0 -0
  42. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/variables.py +0 -0
  43. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/platform/vector_store.py +0 -0
  44. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/py.typed +0 -0
  45. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/__init__.py +0 -0
  46. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/app.py +0 -0
  47. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/constants.py +0 -0
  48. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/context.py +0 -0
  49. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/dependencies.py +0 -0
  50. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/store/__init__.py +0 -0
  51. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/store/context_store.py +0 -0
  52. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/store/memory_context_store.py +0 -0
  53. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/store/platform_context_store.py +0 -0
  54. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/telemetry.py +0 -0
  55. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/server/utils.py +0 -0
  56. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/util/__init__.py +0 -0
  57. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/util/file.py +0 -0
  58. {agentstack_sdk-0.4.0/src/agentstack_sdk/server → agentstack_sdk-0.4.1/src/agentstack_sdk/util}/logging.py +0 -0
  59. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/util/resource_context.py +0 -0
  60. {agentstack_sdk-0.4.0 → agentstack_sdk-0.4.1}/src/agentstack_sdk/util/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentstack-sdk
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: Agent Stack SDK
5
5
  Author: IBM Corp.
6
6
  Requires-Dist: a2a-sdk==0.3.9
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentstack-sdk"
3
- version = "0.4.0"
3
+ version = "0.4.1"
4
4
  description = "Agent Stack SDK"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "IBM Corp." }]
@@ -3,9 +3,10 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
+ import re
6
7
  from contextlib import asynccontextmanager
7
8
  from types import NoneType
8
- from typing import Annotated, Any, Literal, Self
9
+ from typing import TYPE_CHECKING, Annotated, Any, Literal, Self
9
10
 
10
11
  import a2a.types
11
12
  import pydantic
@@ -14,6 +15,10 @@ from mcp.client.streamable_http import streamablehttp_client
14
15
 
15
16
  from agentstack_sdk.a2a.extensions.auth.oauth.oauth import OAuthExtensionServer
16
17
  from agentstack_sdk.a2a.extensions.base import BaseExtensionClient, BaseExtensionServer, BaseExtensionSpec
18
+ from agentstack_sdk.util.logging import logger
19
+
20
+ if TYPE_CHECKING:
21
+ from agentstack_sdk.server.context import RunContext
17
22
 
18
23
  _TRANSPORT_TYPES = Literal["streamable_http", "stdio"]
19
24
 
@@ -95,6 +100,23 @@ class MCPServiceExtensionMetadata(pydantic.BaseModel):
95
100
 
96
101
 
97
102
  class MCPServiceExtensionServer(BaseExtensionServer[MCPServiceExtensionSpec, MCPServiceExtensionMetadata]):
103
+ def handle_incoming_message(self, message: a2a.types.Message, context: RunContext):
104
+ from agentstack_sdk.platform import get_platform_client
105
+
106
+ super().handle_incoming_message(message, context)
107
+ if not self.data:
108
+ return
109
+
110
+ platform_url = str(get_platform_client().base_url)
111
+ for fullfilment in self.data.mcp_fulfillments.values():
112
+ if fullfilment.transport.type == "streamable_http":
113
+ try:
114
+ fullfilment.transport.url = pydantic.AnyHttpUrl(
115
+ re.sub(r"^http[s]?://{platform_url}", platform_url, str(fullfilment.transport.url))
116
+ )
117
+ except Exception:
118
+ logger.warning("Platform URL substitution failed", exc_info=True)
119
+
98
120
  def parse_client_metadata(self, message: a2a.types.Message) -> MCPServiceExtensionMetadata | None:
99
121
  metadata = super().parse_client_metadata(message)
100
122
  if metadata:
@@ -41,9 +41,9 @@ from agentstack_sdk.a2a.types import ArtifactChunk, Metadata, RunYield, RunYield
41
41
  from agentstack_sdk.server.constants import _IMPLICIT_DEPENDENCY_PREFIX
42
42
  from agentstack_sdk.server.context import RunContext
43
43
  from agentstack_sdk.server.dependencies import extract_dependencies
44
- from agentstack_sdk.server.logging import logger
45
44
  from agentstack_sdk.server.store.context_store import ContextStore
46
45
  from agentstack_sdk.server.utils import cancel_task, close_queue
46
+ from agentstack_sdk.util.logging import logger
47
47
  from agentstack_sdk.util.utils import extract_messages
48
48
 
49
49
  AgentFunction: TypeAlias = Callable[[], AsyncGenerator[RunYield, RunYieldResume]]
@@ -36,12 +36,12 @@ from agentstack_sdk.platform.client import PlatformClient
36
36
  from agentstack_sdk.platform.provider import Provider
37
37
  from agentstack_sdk.server.agent import Agent, AgentFactory
38
38
  from agentstack_sdk.server.agent import agent as agent_decorator
39
- from agentstack_sdk.server.logging import configure_logger as configure_logger_func
40
- from agentstack_sdk.server.logging import logger
41
39
  from agentstack_sdk.server.store.context_store import ContextStore
42
40
  from agentstack_sdk.server.store.memory_context_store import InMemoryContextStore
43
41
  from agentstack_sdk.server.telemetry import configure_telemetry as configure_telemetry_func
44
42
  from agentstack_sdk.server.utils import cancel_task
43
+ from agentstack_sdk.util.logging import configure_logger as configure_logger_func
44
+ from agentstack_sdk.util.logging import logger
45
45
 
46
46
 
47
47
  class Server:
@@ -83,6 +83,7 @@ class Server:
83
83
  request_context_builder: RequestContextBuilder | None = None,
84
84
  host: str = "127.0.0.1",
85
85
  port: int = 10000,
86
+ url: str | None = None,
86
87
  uds: str | None = None,
87
88
  fd: int | None = None,
88
89
  loop: Literal["none", "auto", "asyncio", "uvloop"] = "auto",
@@ -138,7 +139,8 @@ class Server:
138
139
 
139
140
  context_store = context_store or InMemoryContextStore()
140
141
  self._agent = self._agent_factory(context_store)
141
- self._agent.card.url = f"http://{host}:{port}"
142
+ card_url = url and url.strip()
143
+ self._agent.card.url = card_url.rstrip("/") if card_url else f"http://{host}:{port}"
142
144
 
143
145
  self._self_registration_client = (
144
146
  self_registration_client_factory() if self_registration_client_factory else None
File without changes