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.
- agentstack_sdk/a2a/extensions/base.py +1 -1
- agentstack_sdk/a2a/extensions/services/form.py +2 -1
- agentstack_sdk/a2a/extensions/services/mcp.py +8 -13
- agentstack_sdk/a2a/extensions/ui/canvas.py +4 -1
- agentstack_sdk/a2a/extensions/ui/citation.py +1 -6
- agentstack_sdk/a2a/extensions/ui/error.py +39 -30
- agentstack_sdk/a2a/extensions/ui/trajectory.py +1 -2
- agentstack_sdk/a2a/types.py +15 -14
- agentstack_sdk/platform/__init__.py +2 -0
- agentstack_sdk/platform/context.py +2 -6
- agentstack_sdk/platform/file.py +45 -1
- agentstack_sdk/platform/user.py +49 -4
- agentstack_sdk/platform/user_feedback.py +42 -0
- agentstack_sdk/server/agent.py +289 -278
- agentstack_sdk/server/app.py +13 -2
- agentstack_sdk/server/constants.py +0 -3
- agentstack_sdk/server/context.py +0 -9
- agentstack_sdk/server/dependencies.py +5 -11
- agentstack_sdk/server/server.py +3 -1
- agentstack_sdk/util/utils.py +5 -1
- agentstack_sdk-0.5.0.dist-info/METADATA +118 -0
- {agentstack_sdk-0.4.3rc2.dist-info → agentstack_sdk-0.5.0.dist-info}/RECORD +23 -22
- agentstack_sdk-0.4.3rc2.dist-info/METADATA +0 -69
- {agentstack_sdk-0.4.3rc2.dist-info → agentstack_sdk-0.5.0.dist-info}/WHEEL +0 -0
agentstack_sdk/server/app.py
CHANGED
|
@@ -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
|
|
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(
|
|
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__ = []
|
agentstack_sdk/server/context.py
CHANGED
|
@@ -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,
|
|
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
|
|
29
|
-
extension: BaseExtensionServer[
|
|
22
|
+
class Depends:
|
|
23
|
+
extension: BaseExtensionServer[Any, Any] | None = None
|
|
30
24
|
|
|
31
25
|
def __init__(
|
|
32
26
|
self,
|
agentstack_sdk/server/server.py
CHANGED
|
@@ -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,
|
agentstack_sdk/util/utils.py
CHANGED
|
@@ -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
|
-
|
|
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
|
+
[](https://pypi.org/project/agentstack-sdk/)
|
|
30
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
31
|
+
[](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=
|
|
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=
|
|
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=
|
|
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=
|
|
28
|
-
agentstack_sdk/a2a/extensions/ui/citation.py,sha256=
|
|
29
|
-
agentstack_sdk/a2a/extensions/ui/error.py,sha256=
|
|
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=
|
|
33
|
-
agentstack_sdk/a2a/types.py,sha256=
|
|
34
|
-
agentstack_sdk/platform/__init__.py,sha256=
|
|
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=
|
|
39
|
-
agentstack_sdk/platform/file.py,sha256=
|
|
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=
|
|
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
|
|
50
|
-
agentstack_sdk/server/app.py,sha256=
|
|
51
|
-
agentstack_sdk/server/constants.py,sha256=
|
|
52
|
-
agentstack_sdk/server/context.py,sha256=
|
|
53
|
-
agentstack_sdk/server/dependencies.py,sha256=
|
|
54
|
-
agentstack_sdk/server/server.py,sha256=
|
|
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=
|
|
67
|
-
agentstack_sdk-0.
|
|
68
|
-
agentstack_sdk-0.
|
|
69
|
-
agentstack_sdk-0.
|
|
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
|
-
- ?
|
|
File without changes
|