acp-sdk 0.2.4__py3-none-any.whl → 0.3.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.
acp_sdk/client/client.py CHANGED
@@ -38,17 +38,20 @@ class Client:
38
38
  self,
39
39
  *,
40
40
  base_url: httpx.URL | str = "",
41
+ timeout: httpx.Timeout | None = None,
41
42
  session_id: SessionId | None = None,
42
43
  client: httpx.AsyncClient | None = None,
43
44
  instrument: bool = True,
44
45
  ) -> None:
45
- self.base_url = base_url
46
- self.session_id = session_id
47
-
48
- self._client = client or httpx.AsyncClient(base_url=self.base_url)
46
+ self._session_id = session_id
47
+ self._client = client or httpx.AsyncClient(base_url=base_url, timeout=timeout)
49
48
  if instrument:
50
49
  HTTPXClientInstrumentor.instrument_client(self._client)
51
50
 
51
+ @property
52
+ def client(self) -> httpx.AsyncClient:
53
+ return self._client
54
+
52
55
  async def __aenter__(self) -> Self:
53
56
  await self._client.__aenter__()
54
57
  return self
@@ -85,7 +88,7 @@ class Client:
85
88
  agent_name=agent,
86
89
  inputs=inputs,
87
90
  mode=RunMode.SYNC,
88
- session_id=self.session_id,
91
+ session_id=self._session_id,
89
92
  ).model_dump_json(),
90
93
  )
91
94
  self._raise_error(response)
@@ -100,7 +103,7 @@ class Client:
100
103
  agent_name=agent,
101
104
  inputs=inputs,
102
105
  mode=RunMode.ASYNC,
103
- session_id=self.session_id,
106
+ session_id=self._session_id,
104
107
  ).model_dump_json(),
105
108
  )
106
109
  self._raise_error(response)
@@ -117,7 +120,7 @@ class Client:
117
120
  agent_name=agent,
118
121
  inputs=inputs,
119
122
  mode=RunMode.STREAM,
120
- session_id=self.session_id,
123
+ session_id=self._session_id,
121
124
  ).model_dump_json(),
122
125
  ) as event_source:
123
126
  async for event in self._validate_stream(event_source):
@@ -138,7 +141,7 @@ class Client:
138
141
  async def run_resume_sync(self, *, run_id: RunId, await_resume: AwaitResume) -> Run:
139
142
  response = await self._client.post(
140
143
  f"/runs/{run_id}",
141
- json=RunResumeRequest(await_resume=await_resume, mode=RunMode.SYNC).model_dump(),
144
+ content=RunResumeRequest(await_resume=await_resume, mode=RunMode.SYNC).model_dump_json(),
142
145
  )
143
146
  self._raise_error(response)
144
147
  return RunResumeResponse.model_validate(response.json())
@@ -146,7 +149,7 @@ class Client:
146
149
  async def run_resume_async(self, *, run_id: RunId, await_resume: AwaitResume) -> Run:
147
150
  response = await self._client.post(
148
151
  f"/runs/{run_id}",
149
- json=RunResumeRequest(await_resume=await_resume, mode=RunMode.ASYNC).model_dump(),
152
+ content=RunResumeRequest(await_resume=await_resume, mode=RunMode.ASYNC).model_dump_json(),
150
153
  )
151
154
  self._raise_error(response)
152
155
  return RunResumeResponse.model_validate(response.json())
@@ -156,7 +159,7 @@ class Client:
156
159
  self._client,
157
160
  "POST",
158
161
  f"/runs/{run_id}",
159
- json=RunResumeRequest(await_resume=await_resume, mode=RunMode.STREAM).model_dump(),
162
+ content=RunResumeRequest(await_resume=await_resume, mode=RunMode.STREAM).model_dump_json(),
160
163
  ) as event_source:
161
164
  async for event in self._validate_stream(event_source):
162
165
  yield event
@@ -165,6 +168,9 @@ class Client:
165
168
  self,
166
169
  event_source: EventSource,
167
170
  ) -> AsyncIterator[Event]:
171
+ if event_source.response.is_error:
172
+ await event_source.response.aread()
173
+ self._raise_error(event_source.response)
168
174
  async for event in event_source.aiter_sse():
169
175
  event = TypeAdapter(Event).validate_json(event.data)
170
176
  yield event
@@ -176,4 +182,4 @@ class Client:
176
182
  raise ACPError(Error.model_validate(response.json()))
177
183
 
178
184
  def _set_session(self, run: Run) -> None:
179
- self.session_id = run.session_id
185
+ self._session_id = run.session_id
acp_sdk/server/errors.py CHANGED
@@ -32,7 +32,9 @@ def status_code_to_error_code(status_code: int) -> ErrorCode:
32
32
 
33
33
  async def acp_error_handler(request: Request, exc: ACPError, *, status_code: int | None = None) -> JSONResponse:
34
34
  error = exc.error
35
- return JSONResponse(status_code=status_code or error_code_to_status_code(error.code), content=error.model_dump())
35
+ return JSONResponse(
36
+ status_code=status_code or error_code_to_status_code(error.code), content=error.model_dump_json()
37
+ )
36
38
 
37
39
 
38
40
  async def http_exception_handler(request: Request, exc: StarletteHTTPException) -> JSONResponse:
@@ -1,23 +1,21 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acp-sdk
3
- Version: 0.2.4
3
+ Version: 0.3.0
4
4
  Summary: Agent Communication Protocol SDK
5
5
  Author: IBM Corp.
6
6
  Maintainer-email: Tomas Pilar <thomas7pilar@gmail.com>
7
7
  License-Expression: Apache-2.0
8
8
  Requires-Python: <4.0,>=3.11
9
+ Requires-Dist: fastapi[standard]>=0.115.8
10
+ Requires-Dist: httpx-sse>=0.4.0
11
+ Requires-Dist: httpx>=0.28.1
12
+ Requires-Dist: janus>=2.0.0
9
13
  Requires-Dist: opentelemetry-api>=1.31.1
14
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.31.1
15
+ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.52b1
16
+ Requires-Dist: opentelemetry-instrumentation-httpx>=0.52b1
17
+ Requires-Dist: opentelemetry-sdk>=1.31.1
10
18
  Requires-Dist: pydantic>=2.11.1
11
- Provides-Extra: client
12
- Requires-Dist: httpx-sse>=0.4.0; extra == 'client'
13
- Requires-Dist: httpx>=0.28.1; extra == 'client'
14
- Requires-Dist: opentelemetry-instrumentation-httpx>=0.52b1; extra == 'client'
15
- Provides-Extra: server
16
- Requires-Dist: fastapi[standard]>=0.115.8; extra == 'server'
17
- Requires-Dist: janus>=2.0.0; extra == 'server'
18
- Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.31.1; extra == 'server'
19
- Requires-Dist: opentelemetry-instrumentation-fastapi>=0.52b1; extra == 'server'
20
- Requires-Dist: opentelemetry-sdk>=1.31.1; extra == 'server'
21
19
  Description-Content-Type: text/markdown
22
20
 
23
21
  # Agent Communication Protocol SDK for Python
@@ -3,7 +3,7 @@ acp_sdk/instrumentation.py,sha256=JqSyvILN3sGAfOZrmckQq4-M_4_5alyPn95DK0o5lfA,16
3
3
  acp_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  acp_sdk/version.py,sha256=Niy83rgvigB4hL_rR-O4ySvI7dj6xnqkyOe_JTymi9s,73
5
5
  acp_sdk/client/__init__.py,sha256=Bca1DORrswxzZsrR2aUFpATuNG2xNSmYvF1Z2WJaVbc,51
6
- acp_sdk/client/client.py,sha256=5aA078pJxedVSGhhJ-NTTfjc19atSkdTyfR8LO6jgyM,6301
6
+ acp_sdk/client/client.py,sha256=lEUs0Oc7MZbKkTF2E6e8Wn3dTW5cMVj6fD8TbuEOMDk,6584
7
7
  acp_sdk/models/__init__.py,sha256=numSDBDT1QHx7n_Y3Deb5VOvKWcUBxbOEaMwQBSRHxc,151
8
8
  acp_sdk/models/errors.py,sha256=rEyaMVvQuBi7fwWe_d0PGGySYsD3FZTluQ-SkC0yhAs,444
9
9
  acp_sdk/models/models.py,sha256=Z8qgURpz18uPXpYDYmlbMQ3Du9-hrJUE3GVPf7ufdUY,3994
@@ -13,13 +13,13 @@ acp_sdk/server/agent.py,sha256=fGky5MIuknw-Gy-THqhWLt9I9-gUyNIar8qEAvZb3uQ,6195
13
13
  acp_sdk/server/app.py,sha256=qLeQ1STgX8_7cRtG-7Be6V5vS9ooBq6O89cQryqBdII,5903
14
14
  acp_sdk/server/bundle.py,sha256=VchPUW8URH83-qJo9kRQsYCBcuLKbxGXHB3sw9CK0cc,6178
15
15
  acp_sdk/server/context.py,sha256=MgnLV6qcDIhc_0BjW7r4Jj1tHts4ZuwpdTGIBnz2Mgo,1036
16
- acp_sdk/server/errors.py,sha256=fWlgVsQ5hs_AXwzc-wvy6QgoDWEMRUBlSrfJfhHHMyE,2085
16
+ acp_sdk/server/errors.py,sha256=IGtpPpb2ChtYvCac8kf_P-RkcY71gBvX0yq97uZWa-w,2104
17
17
  acp_sdk/server/logging.py,sha256=Oc8yZigCsuDnHHPsarRzu0RX3NKaLEgpELM2yovGKDI,411
18
18
  acp_sdk/server/server.py,sha256=-eT3fmnEsBUN44Spi2EP2eV0l4RAlKa8bzqxnhz16SM,5399
19
19
  acp_sdk/server/session.py,sha256=0cDr924HC5x2bBNbK9NSKVHAt5A_mi5dK8P4jP_ugq0,629
20
20
  acp_sdk/server/telemetry.py,sha256=1BUxNg-xL_Vqgs27PDWNc3HikrQW2lidAtT_FKlp_Qk,1833
21
21
  acp_sdk/server/types.py,sha256=1bqMCjwZM3JzvJ1h4aBHWzjbldMQ45HqcezBD6hUoYo,175
22
22
  acp_sdk/server/utils.py,sha256=EfrF9VCyVk3AM_ao-BIB9EzGbfTrh4V2Bz-VFr6f6Sg,351
23
- acp_sdk-0.2.4.dist-info/METADATA,sha256=JCfcw8ZueUe0WzIBTrfQMcn4yRPIShxt0woTWN0M9sk,3463
24
- acp_sdk-0.2.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
25
- acp_sdk-0.2.4.dist-info/RECORD,,
23
+ acp_sdk-0.3.0.dist-info/METADATA,sha256=7GnGZ92jFahL6u1NS9lKMg04V6zFjyprgwBUQota1iE,3265
24
+ acp_sdk-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
25
+ acp_sdk-0.3.0.dist-info/RECORD,,