agentstack-sdk 0.4.3rc2__py3-none-any.whl → 0.5.0__py3-none-any.whl

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.
@@ -9,7 +9,12 @@ from a2a.server.apps.jsonrpc import A2AFastAPIApplication
9
9
  from a2a.server.apps.rest import A2ARESTFastAPIApplication
10
10
  from a2a.server.events import InMemoryQueueManager, QueueManager
11
11
  from a2a.server.request_handlers import DefaultRequestHandler
12
- from a2a.server.tasks import InMemoryTaskStore, PushNotificationConfigStore, PushNotificationSender, TaskStore
12
+ from a2a.server.tasks import (
13
+ InMemoryTaskStore,
14
+ PushNotificationConfigStore,
15
+ PushNotificationSender,
16
+ TaskStore,
17
+ )
13
18
  from a2a.types import AgentInterface, TransportProtocol
14
19
  from fastapi import APIRouter, Depends, FastAPI
15
20
  from fastapi.applications import AppType
@@ -38,7 +43,13 @@ def create_app(
38
43
  task_store = task_store or InMemoryTaskStore()
39
44
  context_store = context_store or InMemoryContextStore()
40
45
  http_handler = DefaultRequestHandler(
41
- agent_executor=Executor(agent.execute, queue_manager, context_store=context_store, task_timeout=task_timeout),
46
+ agent_executor=Executor(
47
+ agent,
48
+ queue_manager,
49
+ context_store=context_store,
50
+ task_timeout=task_timeout,
51
+ task_store=task_store,
52
+ ),
42
53
  task_store=task_store,
43
54
  queue_manager=queue_manager,
44
55
  push_config_store=push_config_store,
@@ -3,10 +3,7 @@
3
3
 
4
4
  from typing import Final
5
5
 
6
- from agentstack_sdk.a2a.extensions.ui.error import ErrorExtensionParams, ErrorExtensionServer, ErrorExtensionSpec
7
-
8
6
  _IMPLICIT_DEPENDENCY_PREFIX: Final = "___server_dep"
9
7
 
10
- DEFAULT_ERROR_EXTENSION: Final = ErrorExtensionServer(ErrorExtensionSpec(ErrorExtensionParams()))
11
8
 
12
9
  __all__ = []
@@ -3,34 +3,25 @@
3
3
 
4
4
 
5
5
  from collections.abc import AsyncIterator
6
- from typing import TYPE_CHECKING
7
6
 
8
7
  import janus
9
- from a2a.server.context import ServerCallContext
10
- from a2a.server.tasks import TaskUpdater
11
8
  from a2a.types import Artifact, Message, MessageSendConfiguration, Task
12
9
  from pydantic import BaseModel, PrivateAttr
13
10
 
14
11
  from agentstack_sdk.a2a.types import RunYield, RunYieldResume
15
12
  from agentstack_sdk.server.store.context_store import ContextStoreInstance
16
13
 
17
- if TYPE_CHECKING:
18
- from agentstack_sdk.a2a.extensions.ui.error import ErrorExtensionServer
19
-
20
14
 
21
15
  class RunContext(BaseModel, arbitrary_types_allowed=True):
22
16
  configuration: MessageSendConfiguration | None = None
23
- task_updater: TaskUpdater
24
17
  task_id: str
25
18
  context_id: str
26
19
  current_task: Task | None = None
27
20
  related_tasks: list[Task] | None = None
28
- call_context: ServerCallContext | None = None
29
21
 
30
22
  _store: ContextStoreInstance | None = PrivateAttr(None)
31
23
  _yield_queue: janus.Queue[RunYield] = PrivateAttr(default_factory=janus.Queue)
32
24
  _yield_resume_queue: janus.Queue[RunYieldResume] = PrivateAttr(default_factory=janus.Queue)
33
- _error_extension: "ErrorExtensionServer | None" = PrivateAttr(None)
34
25
 
35
26
  async def store(self, data: Message | Artifact):
36
27
  if not self._store:
@@ -6,27 +6,21 @@ from collections import Counter
6
6
  from collections.abc import AsyncIterator, Callable
7
7
  from contextlib import AbstractAsyncContextManager, asynccontextmanager
8
8
  from inspect import isclass
9
- from typing import Annotated, Any, Generic, TypeAlias, Unpack, get_args, get_origin
9
+ from typing import Annotated, Any, TypeAlias, Unpack, get_args, get_origin
10
10
 
11
11
  from a2a.types import Message
12
12
  from typing_extensions import Doc
13
13
 
14
14
  from agentstack_sdk.a2a.extensions import BaseExtensionSpec
15
- from agentstack_sdk.a2a.extensions.base import (
16
- BaseExtensionServer,
17
- ExtensionSpecT,
18
- MetadataFromClientT,
19
- )
15
+ from agentstack_sdk.a2a.extensions.base import BaseExtensionServer
20
16
  from agentstack_sdk.server.context import RunContext
21
17
 
22
- Dependency: TypeAlias = (
23
- Callable[[Message, RunContext, dict], Any] | BaseExtensionServer[ExtensionSpecT, MetadataFromClientT]
24
- )
18
+ Dependency: TypeAlias = Callable[[Message, RunContext, dict[str, "Dependency"]], Any] | BaseExtensionServer[Any, Any]
25
19
 
26
20
 
27
21
  # Inspired by fastapi.Depends
28
- class Depends(Generic[ExtensionSpecT, MetadataFromClientT]):
29
- extension: BaseExtensionServer[ExtensionSpecT, MetadataFromClientT] | None = None
22
+ class Depends:
23
+ extension: BaseExtensionServer[Any, Any] | None = None
30
24
 
31
25
  def __init__(
32
26
  self,
@@ -118,6 +118,7 @@ class Server:
118
118
  backlog: int = 2048,
119
119
  timeout_keep_alive: int = 5,
120
120
  timeout_notify: int = 30,
121
+ timeout_worker_healthcheck: int = 5,
121
122
  timeout_graceful_shutdown: int | None = None,
122
123
  callback_notify: Callable[..., Awaitable[None]] | None = None,
123
124
  ssl_keyfile: str | os.PathLike[str] | None = None,
@@ -138,7 +139,7 @@ class Server:
138
139
  raise ValueError("Agent is not registered")
139
140
 
140
141
  context_store = context_store or InMemoryContextStore()
141
- self._agent = self._agent_factory(context_store)
142
+ self._agent = self._agent_factory(context_store.modify_dependencies)
142
143
  card_url = url and url.strip()
143
144
  self._agent.card.url = card_url.rstrip("/") if card_url else f"http://{host}:{port}"
144
145
 
@@ -241,6 +242,7 @@ class Server:
241
242
  timeout_keep_alive,
242
243
  timeout_notify,
243
244
  timeout_graceful_shutdown,
245
+ timeout_worker_healthcheck,
244
246
  callback_notify,
245
247
  ssl_keyfile,
246
248
  ssl_certfile,
@@ -28,7 +28,11 @@ async def parse_stream(response: httpx.Response) -> AsyncIterator[dict[str, Any]
28
28
  raise HTTPStatusError(message=error, request=response.request, response=response)
29
29
  async for line in response.aiter_lines():
30
30
  if line:
31
- yield json.loads(re.sub("^data:", "", line).strip())
31
+ data = re.sub("^data:", "", line).strip()
32
+ try:
33
+ yield json.loads(data)
34
+ except json.JSONDecodeError:
35
+ yield {"event": data}
32
36
 
33
37
 
34
38
  def extract_messages(exc: BaseException) -> list[tuple[str, str]]:
@@ -0,0 +1,118 @@
1
+ Metadata-Version: 2.3
2
+ Name: agentstack-sdk
3
+ Version: 0.5.0
4
+ Summary: Agent Stack SDK
5
+ Author: IBM Corp.
6
+ Requires-Dist: a2a-sdk==0.3.21
7
+ Requires-Dist: objprint>=0.3.0
8
+ Requires-Dist: uvicorn>=0.35.0
9
+ Requires-Dist: asyncclick>=8.1.8
10
+ Requires-Dist: sse-starlette>=2.2.1
11
+ Requires-Dist: starlette>=0.47.2
12
+ Requires-Dist: anyio>=4.9.0
13
+ Requires-Dist: opentelemetry-api>=1.35.0
14
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.35.0
15
+ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.56b0
16
+ Requires-Dist: opentelemetry-sdk>=1.35.0
17
+ Requires-Dist: tenacity>=9.1.2
18
+ Requires-Dist: janus>=2.0.0
19
+ Requires-Dist: httpx
20
+ Requires-Dist: mcp>=1.12.3
21
+ Requires-Dist: fastapi>=0.116.1
22
+ Requires-Python: >=3.11, <3.14
23
+ Description-Content-Type: text/markdown
24
+
25
+ # Agent Stack Server SDK
26
+
27
+ Python SDK for packaging agents for deployment to Agent Stack infrastructure.
28
+
29
+ [![PyPI version](https://img.shields.io/pypi/v/agentstack-sdk.svg?style=plastic)](https://pypi.org/project/agentstack-sdk/)
30
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=plastic)](https://opensource.org/licenses/Apache-2.0)
31
+ [![LF AI & Data](https://img.shields.io/badge/LF%20AI%20%26%20Data-0072C6?style=plastic&logo=linuxfoundation&logoColor=white)](https://lfaidata.foundation/projects/)
32
+
33
+ ## Overview
34
+
35
+ The `agentstack-sdk` provides Python utilities for wrapping agents built with any framework (LangChain, CrewAI, BeeAI Framework, etc.) for deployment on Agent Stack. It handles the A2A (Agent-to-Agent) protocol implementation, platform service integration, and runtime requirements so you can focus on agent logic.
36
+
37
+ ## Key Features
38
+
39
+ - **Framework-Agnostic Deployment** - Wrap agents from any framework for Agent Stack deployment
40
+ - **A2A Protocol Support** - Automatic handling of Agent-to-Agent communication
41
+ - **Platform Service Integration** - Connect to Agent Stack's managed LLM, embedding, file storage, and vector store services
42
+ - **Context Storage** - Manage data associated with conversation contexts
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ uv add agentstack-sdk
48
+ ```
49
+
50
+ ## Quickstart
51
+
52
+ ```python
53
+ import os
54
+
55
+ from a2a.types import (
56
+ Message,
57
+ )
58
+ from a2a.utils.message import get_message_text
59
+ from agentstack_sdk.server import Server
60
+ from agentstack_sdk.server.context import RunContext
61
+ from agentstack_sdk.a2a.types import AgentMessage
62
+
63
+ server = Server()
64
+
65
+ @server.agent()
66
+ async def example_agent(input: Message, context: RunContext):
67
+ """Polite agent that greets the user"""
68
+ hello_template: str = os.getenv("HELLO_TEMPLATE", "Ciao %s!")
69
+ yield AgentMessage(text=hello_template % get_message_text(input))
70
+
71
+ def run():
72
+ try:
73
+ server.run(host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000)))
74
+ except KeyboardInterrupt:
75
+ pass
76
+
77
+
78
+ if __name__ == "__main__":
79
+ run()
80
+ ```
81
+
82
+ Run the agent:
83
+
84
+ ```bash
85
+ uv run my_agent.py
86
+ ```
87
+
88
+ ## Available Extensions
89
+
90
+ The SDK includes extension support for:
91
+
92
+ - **Citations** - Source attribution (`CitationExtensionServer`, `CitationExtensionSpec`)
93
+ - **Trajectory** - Agent decision logging (`TrajectoryExtensionServer`, `TrajectoryExtensionSpec`)
94
+ - **Settings** - User-configurable agent parameters (`SettingsExtensionServer`, `SettingsExtensionSpec`)
95
+ - **LLM Services** - Platform-managed language models (`LLMServiceExtensionServer`, `LLMServiceExtensionSpec`)
96
+ - **Agent Details** - Metadata and UI enhancements (`AgentDetail`)
97
+ - **And more** - See [Documentation](https://agentstack.beeai.dev/stable/agent-development/overview)
98
+
99
+ Each extension provides both server-side handlers and A2A protocol specifications for seamless integration with Agent Stack's UI and infrastructure.
100
+
101
+ ## Resources
102
+
103
+ - [Agent Stack Documentation](https://agentstack.beeai.dev)
104
+ - [GitHub Repository](https://github.com/i-am-bee/agentstack)
105
+ - [PyPI Package](https://pypi.org/project/agentstack-sdk/)
106
+
107
+ ## Contributing
108
+
109
+ Contributions are welcome! Please see the [Contributing Guide](https://github.com/i-am-bee/agentstack/blob/main/CONTRIBUTING.md) for details.
110
+
111
+ ## Support
112
+
113
+ - [GitHub Issues](https://github.com/i-am-bee/agentstack/issues)
114
+ - [GitHub Discussions](https://github.com/i-am-bee/agentstack/discussions)
115
+
116
+ ---
117
+
118
+ Developed by contributors to the BeeAI project, this initiative is part of the [Linux Foundation AI & Data program](https://lfaidata.foundation/projects/). Its development follows open, collaborative, and community-driven practices.
@@ -9,49 +9,50 @@ agentstack_sdk/a2a/extensions/auth/oauth/storage/base.py,sha256=QNvijmaYW3LmTrhT
9
9
  agentstack_sdk/a2a/extensions/auth/oauth/storage/memory.py,sha256=HWEKqgfMtq3ZJPQrYhYF-Qb3DzUlOfHWHYCladz15QQ,1236
10
10
  agentstack_sdk/a2a/extensions/auth/secrets/__init__.py,sha256=K0Dknv6Hpt3CAnqCyRGIs4a6s_6Z0pHLsyERo9jUMGc,117
11
11
  agentstack_sdk/a2a/extensions/auth/secrets/secrets.py,sha256=7M1qM_n5q4o6cQHYisOFEm3gqZnkSfQfy1mX6eqbHy8,2581
12
- agentstack_sdk/a2a/extensions/base.py,sha256=oVUbxJrxVi3_iAOvY2ttNkiDvCf_KM830QVL7249_NU,6711
12
+ agentstack_sdk/a2a/extensions/base.py,sha256=SGaUOWeK5jnIPQ-Nf3wtf3bsqccFhmrW8yfaoBWZtcA,6723
13
13
  agentstack_sdk/a2a/extensions/common/__init__.py,sha256=3lg8P9ASBFHDipP1oZ3IcPqCAwVFtWr3LMBJzpT0Yqo,114
14
14
  agentstack_sdk/a2a/extensions/common/form.py,sha256=tbDD3V-ZW90TjXXkyf3SCQd3zJ3tvbJfJA5cbJuPdH0,3792
15
15
  agentstack_sdk/a2a/extensions/exceptions.py,sha256=k4_OFuglnm3XaAr9tl47dNXLLkIhjOQVLohIQ7ieC0M,369
16
16
  agentstack_sdk/a2a/extensions/services/__init__.py,sha256=9njkm58sMs_sMQwKGTMkPU-I7c7T99BWy30fcw4nCoI,201
17
17
  agentstack_sdk/a2a/extensions/services/embedding.py,sha256=q1tFdYmzG3OQU2MdEVHxwlo_JbnP9IMKWREJ2rzk3n4,3560
18
- agentstack_sdk/a2a/extensions/services/form.py,sha256=0jE9iBXXbChD0Uw5l7QnhdE5-wHSBWuDXg717AF96hM,1678
18
+ agentstack_sdk/a2a/extensions/services/form.py,sha256=BmZ-Cqwp4o-j1zgCneuZ_9-1vCOm1OkQMJZLc_Rp1qc,1707
19
19
  agentstack_sdk/a2a/extensions/services/llm.py,sha256=GQa389qPYqPctG9kDQlRIaOYnMrHAkhOWwJmoDpm5Pw,3459
20
- agentstack_sdk/a2a/extensions/services/mcp.py,sha256=VW7Tkmpya-NsW4YW1SAwR3rYiF6Me9iWF45yUPh5i7k,7193
20
+ agentstack_sdk/a2a/extensions/services/mcp.py,sha256=ZbKi1Bg98ZxgjzyTbDm5p16p6cOmFHilSDkNtkHureQ,6914
21
21
  agentstack_sdk/a2a/extensions/services/platform.py,sha256=k21SrAhohZ5RdyEkPJxORRSb1ZkAWpUdaxLa01ip9EA,4539
22
22
  agentstack_sdk/a2a/extensions/tools/__init__.py,sha256=PWVZLGvw9ZESBfBbSFJuFNcW1SHkCbZi0pj5yt5Uw2g,140
23
23
  agentstack_sdk/a2a/extensions/tools/call.py,sha256=JwnlA6K9QJFC0Ca4zSMa2jHDlT0QgcMSu-gJNKejIiU,4288
24
24
  agentstack_sdk/a2a/extensions/tools/exceptions.py,sha256=6SmMOjm9ayicfIkdFd0X_vwY7Tqn6M7dNiSF9jpeVeg,148
25
25
  agentstack_sdk/a2a/extensions/ui/__init__.py,sha256=KhRMd8465ROmbV3TQpNq5YliTeA2fNcrP9usEOCgAPI,245
26
26
  agentstack_sdk/a2a/extensions/ui/agent_detail.py,sha256=OGKToMFq2FnXI0dRmjXpdaOM3BUPU2YJbA4IZZXr93E,1607
27
- agentstack_sdk/a2a/extensions/ui/canvas.py,sha256=t0WQQ3001cIWeeTTZjn6Ci8byuLpbr4ZSFb5Loev374,2030
28
- agentstack_sdk/a2a/extensions/ui/citation.py,sha256=zGtOLXDmYwtYg9KyxmNI4fpMVqg2tmeIXfS-ZNYSV_g,2825
29
- agentstack_sdk/a2a/extensions/ui/error.py,sha256=OXSJ1ia0x5Fj1YLyb9alKD5C5bbdtty_ANHtoTGDkJw,6930
27
+ agentstack_sdk/a2a/extensions/ui/canvas.py,sha256=g7t5luQS2HgsuGoTD3uk9pEHkVIb2duxsgQGEcEQl90,2226
28
+ agentstack_sdk/a2a/extensions/ui/citation.py,sha256=TdkIXummv_g9eEuDQfnC4ZjI-BE4umTvctp1471OpdE,2761
29
+ agentstack_sdk/a2a/extensions/ui/error.py,sha256=YSOkzbh_58g7WzwQPCvjwAGOuanCKnakbgLc7TDF3Io,7357
30
30
  agentstack_sdk/a2a/extensions/ui/form_request.py,sha256=e_sGlJzbwzrCYPMqhiXsMbkhc7OK_H3QH5_yiG9w6Wo,1849
31
31
  agentstack_sdk/a2a/extensions/ui/settings.py,sha256=uZu_8u29gAu1H85twFb_LCRBO0jeaEiLgfamaFNUPGM,1814
32
- agentstack_sdk/a2a/extensions/ui/trajectory.py,sha256=FfodRCooxWRBiMoVt2IrjGw1j-kbtvZlS89URgYczcQ,2367
33
- agentstack_sdk/a2a/types.py,sha256=03z5ptCOD1o0tSbBYz0bQxkSl_NzUFTDyHpIG8RMm1M,3912
34
- agentstack_sdk/platform/__init__.py,sha256=wJqkUg6WFbs31gKg7N5o6rnOx3ToXoAcxMP8yAw7Q8M,277
32
+ agentstack_sdk/a2a/extensions/ui/trajectory.py,sha256=G66rIpr2VTe1UvbK82EgLXwFtUC3QfbyN_uLQGUU8jA,2334
33
+ agentstack_sdk/a2a/types.py,sha256=ubACz2cJulTLrrws9iyDIzEb3rz4cLlT_J7kczdkPfM,3998
34
+ agentstack_sdk/platform/__init__.py,sha256=jFlxr6P-6DJZVt1W8Xt1suISJpodD_EWX92GmcFLXwM,326
35
35
  agentstack_sdk/platform/client.py,sha256=UovbmuWGqhWum1mnoijpKKOTMMzYo21eVBVIOB2HgvA,4182
36
36
  agentstack_sdk/platform/common.py,sha256=p6w4l49NaFp7LsjEBDAwghX6FliNChOeO7IHP_-TnXA,750
37
37
  agentstack_sdk/platform/configuration.py,sha256=YfOasb6LxE9LN6sMZPEU07Q61F7uIhiU3DIQFRaqinU,1690
38
- agentstack_sdk/platform/context.py,sha256=uPw5-2fAZUfTMSfbMaz81zPBQRaMmoDXlfmjbVusyis,10829
39
- agentstack_sdk/platform/file.py,sha256=deBOIm1XRYI7NRzvHenKJFiz6zLoQXzKaCUmKqkUfRo,10925
38
+ agentstack_sdk/platform/context.py,sha256=YWDzYB99zXcCFYZlr8h78vZPi4vWDZMU5HS3LxlfVzo,10733
39
+ agentstack_sdk/platform/file.py,sha256=lOqMwMKHKGWFy5P1huQ6DLRTiHU0KexX-s2qF3FIRxw,13062
40
40
  agentstack_sdk/platform/model_provider.py,sha256=hv5UbFUFQ23IlalH5W-nCTvnUCrxBtZF4UrkeNWnwFE,4588
41
41
  agentstack_sdk/platform/provider.py,sha256=1juAfYc39sVwZ8ZbYz1ohVnzzRacJx6Junvo-7GgVmY,9071
42
42
  agentstack_sdk/platform/provider_build.py,sha256=Vn2XDdMGgQWvChWJmg9nxYFVecp42A1jXzURkFgSEQQ,7317
43
43
  agentstack_sdk/platform/types.py,sha256=3OHERUoli6t9rlCiaZ2YfN26GXqMQzDFQx_UluCZVYA,1502
44
- agentstack_sdk/platform/user.py,sha256=NCM8W1J6R6X0HHc8lEXNIBWHHAhsW7xye5Zk6jo5FTI,771
44
+ agentstack_sdk/platform/user.py,sha256=ZxTPJYPGxcRtRQJpxPPf2ylz3Erngu2vSMuia1oJ04Q,2148
45
+ agentstack_sdk/platform/user_feedback.py,sha256=IfMzZsaFKpWCPz5MjppDsFLLMM-iVQUBGugz0_FmrqY,1305
45
46
  agentstack_sdk/platform/variables.py,sha256=VW7eHO_V6B5I-vvqNgUangkcuUXDcjFIrxUSSfX5cHw,1637
46
47
  agentstack_sdk/platform/vector_store.py,sha256=h98RKGuN1SvmfL_bxf3WCLvY1IeQ00Wf7NTP6yr05qg,8695
47
48
  agentstack_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
49
  agentstack_sdk/server/__init__.py,sha256=vc06L5ILofytmLJC9hJUzA9LakUYUNYGiBoSXNs9hQc,152
49
- agentstack_sdk/server/agent.py,sha256=-KQT1T4dMnAyrcPWMNWWAw0IsQrJwPUyhWz1Z5keNMQ,28863
50
- agentstack_sdk/server/app.py,sha256=KoRMua1zvzBjM7lerMkmJs8zNkuLGMTF6Z4k6P3d6ho,2917
51
- agentstack_sdk/server/constants.py,sha256=BrRdyydYLqQ4rPSSAQ7tV3pXka9QJRU9P6romIfxek8,401
52
- agentstack_sdk/server/context.py,sha256=1UEybeCLil6OLfIzHRS9IIEN8wnkZtpFvqfeuceU-zQ,2285
53
- agentstack_sdk/server/dependencies.py,sha256=8YCiblph8sgS92aOWSrSVM4Qc5vbdH7vEsBRX-sdme0,4928
54
- agentstack_sdk/server/server.py,sha256=NKD8kRbgY0lH89CJ3pmMURq-kS7BfhdUiB_IOA6qke4,15137
50
+ agentstack_sdk/server/agent.py,sha256=YnWe6Nl4VyarmN70fe7QuKWc7q3tYZ26RM07yKZ5Bow,28716
51
+ agentstack_sdk/server/app.py,sha256=pLyf4CyG8PWYuNDUO0FE99XyDjjc9HFj8ii3PrWDGd8,3024
52
+ agentstack_sdk/server/constants.py,sha256=huQAP351AeNt536tB-axJSseHMHfyDKwJdlackjLGnw,188
53
+ agentstack_sdk/server/context.py,sha256=pAXdZ3CUESqUuquosPxIR9TOGAohqh01tiv6rhYRjD0,1915
54
+ agentstack_sdk/server/dependencies.py,sha256=FHH2vdJtQTAfso7p6eDiDM2IH-xYMxdKUu412YhpSvA,4776
55
+ agentstack_sdk/server/server.py,sha256=U3o6YSCmlebxSAxZN_apW-yQ4Bq1A8h5uzQgbeZ8d5Y,15242
55
56
  agentstack_sdk/server/store/__init__.py,sha256=jr8otByt8HFY9OWptuWdpq4WHE7A1srCSRXZV066FrI,94
56
57
  agentstack_sdk/server/store/context_store.py,sha256=tXQWI3q1xDOJWySAFuv4-79xxDSu94tPBzGeuR8YUzU,833
57
58
  agentstack_sdk/server/store/memory_context_store.py,sha256=R6zyuKG2QCOQUyoFOj8q3XAfuwONMrFHLn2Ku9YoCW8,1697
@@ -63,7 +64,7 @@ agentstack_sdk/util/file.py,sha256=rm5b47tHTmJBsHlqGcUqFCP0Bz5HKXPHWW_h-IpG9pw,9
63
64
  agentstack_sdk/util/httpx.py,sha256=g6WKgkGCLc40wZA2CPYO_R2P-nav6QP1XmVlgkh9wYY,491
64
65
  agentstack_sdk/util/logging.py,sha256=hGLkjw-P3GefiUQmDmcz7BZQxfT2Y44XlLyAMNxZXMo,2136
65
66
  agentstack_sdk/util/resource_context.py,sha256=OmjEXvrLQA6nBkVSBt0n24hNNxJkucd-N32haxJ4Mno,1093
66
- agentstack_sdk/util/utils.py,sha256=YQ5rsO-zMeQhn8jTNR8KJ7lDBsxmdFoG_V6QlETqT2U,1376
67
- agentstack_sdk-0.4.3rc2.dist-info/WHEEL,sha256=M6du7VZflc4UPsGphmOXHANdgk8zessdJG0DBUuoA-U,78
68
- agentstack_sdk-0.4.3rc2.dist-info/METADATA,sha256=XWXwBydiT6Zy9YN9qWy1iIo4l9bdBDp-iXihvWmrslI,2067
69
- agentstack_sdk-0.4.3rc2.dist-info/RECORD,,
67
+ agentstack_sdk/util/utils.py,sha256=1Pe6VXcC0El1wKjzJ_vJj_9_lgOEiJ2EEVV-aoPj9Jk,1500
68
+ agentstack_sdk-0.5.0.dist-info/WHEEL,sha256=M6du7VZflc4UPsGphmOXHANdgk8zessdJG0DBUuoA-U,78
69
+ agentstack_sdk-0.5.0.dist-info/METADATA,sha256=WFjdnOb1uf9cZEJvxtzSNilfU1Fuf9wW5HwbuJCCbkg,4368
70
+ agentstack_sdk-0.5.0.dist-info/RECORD,,
@@ -1,69 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: agentstack-sdk
3
- Version: 0.4.3rc2
4
- Summary: Agent Stack SDK
5
- Author: IBM Corp.
6
- Requires-Dist: a2a-sdk==0.3.9
7
- Requires-Dist: objprint>=0.3.0
8
- Requires-Dist: uvicorn>=0.35.0
9
- Requires-Dist: asyncclick>=8.1.8
10
- Requires-Dist: sse-starlette>=2.2.1
11
- Requires-Dist: starlette>=0.47.2
12
- Requires-Dist: anyio>=4.9.0
13
- Requires-Dist: opentelemetry-api>=1.35.0
14
- Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.35.0
15
- Requires-Dist: opentelemetry-instrumentation-fastapi>=0.56b0
16
- Requires-Dist: opentelemetry-sdk>=1.35.0
17
- Requires-Dist: tenacity>=9.1.2
18
- Requires-Dist: janus>=2.0.0
19
- Requires-Dist: httpx
20
- Requires-Dist: mcp>=1.12.3
21
- Requires-Dist: fastapi>=0.116.1
22
- Requires-Python: >=3.11, <3.14
23
- Description-Content-Type: text/markdown
24
-
25
- # Agent Stack SDK
26
-
27
- ## Examples
28
-
29
- The examples connect to the Agent Stack for LLM inteference.
30
-
31
- Run using:
32
-
33
- ```bash
34
- uv run examples/agent.py
35
- ```
36
-
37
- Connect to the agent using the CLI:
38
-
39
- ```bash
40
- uv run examples/cli.py
41
- ```
42
-
43
- ## Plan
44
-
45
- - `agentstack_sdk`
46
- - `a2a`:
47
- - `extensions`: Shared definitions for A2A extensions
48
- - `services`: Dependency injection extensions for external services
49
- - `llm`
50
- - `embedding`
51
- - `docling`
52
- - `file_store`
53
- - `vector_store`
54
- - `ui`: User interface extensions for Agent Stack UI
55
- - `trajectory`
56
- - `citations`
57
- - `history`: store and allow requesting the full history of the context
58
- - `server`
59
- - `context_storage`: store data associated with context_id
60
- - `wrapper`: conveniently build A2A agents -- opinionated on how tasks work, `yield`-semantics, autowired
61
- services
62
- - `services`: clients for external services
63
- - `llm`: OpenAI-compatible chat LLM
64
- - `embedding`: OpenAI-compatible embedding
65
- - `text_extraction`: Docling-compatible text extraction
66
- - `file_store`: S3-compatible file storage
67
- - `vector_store`: some vector store?
68
- - `client`
69
- - ?