acp-sdk 1.0.0rc1__py3-none-any.whl → 1.0.0rc2__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.
@@ -1 +1 @@
1
- from acp_sdk.client.client import Client
1
+ from acp_sdk.client.client import Client as Client
acp_sdk/client/client.py CHANGED
@@ -1,10 +1,11 @@
1
+ from collections.abc import AsyncIterator
1
2
  from types import TracebackType
2
- from typing import AsyncIterator
3
+ from typing import Self
3
4
 
4
5
  import httpx
5
6
  from httpx_sse import EventSource, aconnect_sse
6
-
7
7
  from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
8
+ from pydantic import TypeAdapter
8
9
 
9
10
  from acp_sdk.models import (
10
11
  Agent,
@@ -13,9 +14,9 @@ from acp_sdk.models import (
13
14
  AgentsListResponse,
14
15
  AwaitResume,
15
16
  Message,
17
+ Run,
16
18
  RunCancelResponse,
17
19
  RunCreateRequest,
18
- Run,
19
20
  RunCreateResponse,
20
21
  RunEvent,
21
22
  RunId,
@@ -23,23 +24,20 @@ from acp_sdk.models import (
23
24
  RunResumeRequest,
24
25
  RunResumeResponse,
25
26
  )
26
- from pydantic import TypeAdapter
27
27
 
28
28
 
29
29
  class Client:
30
- def __init__(
31
- self, *, base_url: httpx.URL | str = "", client: httpx.AsyncClient | None = None
32
- ):
30
+ def __init__(self, *, base_url: httpx.URL | str = "", client: httpx.AsyncClient | None = None) -> None:
33
31
  self.base_url = base_url
34
32
 
35
33
  self._client = self._init_client(client)
36
34
 
37
- def _init_client(self, client: httpx.AsyncClient | None = None):
35
+ def _init_client(self, client: httpx.AsyncClient | None = None) -> Self:
38
36
  client = client or httpx.AsyncClient(base_url=self.base_url)
39
37
  HTTPXClientInstrumentor.instrument_client(client)
40
38
  return client
41
39
 
42
- async def __aenter__(self):
40
+ async def __aenter__(self) -> Self:
43
41
  await self._client.__aenter__()
44
42
  return self
45
43
 
@@ -48,7 +46,7 @@ class Client:
48
46
  exc_type: type[BaseException] | None = None,
49
47
  exc_value: BaseException | None = None,
50
48
  traceback: TracebackType | None = None,
51
- ):
49
+ ) -> None:
52
50
  await self._client.__aexit__(exc_type, exc_value, traceback)
53
51
 
54
52
  async def agents(self) -> AsyncIterator[Agent]:
@@ -63,31 +61,23 @@ class Client:
63
61
  async def run_sync(self, *, agent: AgentName, input: Message) -> Run:
64
62
  response = await self._client.post(
65
63
  "/runs",
66
- json=RunCreateRequest(
67
- agent_name=agent, input=input, mode=RunMode.SYNC
68
- ).model_dump(),
64
+ json=RunCreateRequest(agent_name=agent, input=input, mode=RunMode.SYNC).model_dump(),
69
65
  )
70
66
  return RunCreateResponse.model_validate(response.json())
71
67
 
72
68
  async def run_async(self, *, agent: AgentName, input: Message) -> Run:
73
69
  response = await self._client.post(
74
70
  "/runs",
75
- json=RunCreateRequest(
76
- agent_name=agent, input=input, mode=RunMode.ASYNC
77
- ).model_dump(),
71
+ json=RunCreateRequest(agent_name=agent, input=input, mode=RunMode.ASYNC).model_dump(),
78
72
  )
79
73
  return RunCreateResponse.model_validate(response.json())
80
74
 
81
- async def run_stream(
82
- self, *, agent: AgentName, input: Message
83
- ) -> AsyncIterator[RunEvent]:
75
+ async def run_stream(self, *, agent: AgentName, input: Message) -> AsyncIterator[RunEvent]:
84
76
  async with aconnect_sse(
85
77
  self._client,
86
78
  "POST",
87
79
  "/runs",
88
- json=RunCreateRequest(
89
- agent_name=agent, input=input, mode=RunMode.STREAM
90
- ).model_dump(),
80
+ json=RunCreateRequest(agent_name=agent, input=input, mode=RunMode.STREAM).model_dump(),
91
81
  ) as event_source:
92
82
  async for event in self._validate_stream(event_source):
93
83
  yield event
@@ -114,9 +104,7 @@ class Client:
114
104
  )
115
105
  return RunResumeResponse.model_validate(response.json())
116
106
 
117
- async def run_resume_stream(
118
- self, *, run_id: RunId, await_: AwaitResume
119
- ) -> AsyncIterator[RunEvent]:
107
+ async def run_resume_stream(self, *, run_id: RunId, await_: AwaitResume) -> AsyncIterator[RunEvent]:
120
108
  async with aconnect_sse(
121
109
  self._client,
122
110
  "POST",
acp_sdk/models.py CHANGED
@@ -1,6 +1,7 @@
1
- from enum import Enum
2
- from typing import Annotated, Literal, Union
3
1
  import uuid
2
+ from collections.abc import Iterator
3
+ from enum import Enum
4
+ from typing import Any, Literal, Union
4
5
 
5
6
  from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel
6
7
 
@@ -40,24 +41,19 @@ MessagePart = Union[TextMessagePart, ImageMessagePart, ArtifactMessagePart]
40
41
  class Message(RootModel):
41
42
  root: list[MessagePart]
42
43
 
43
- def __init__(self, *items: MessagePart):
44
+ def __init__(self, *items: MessagePart) -> None:
44
45
  super().__init__(root=list(items))
45
46
 
46
- def __iter__(self):
47
+ def __iter__(self) -> Iterator[MessagePart]:
47
48
  return iter(self.root)
48
49
 
49
- def __getitem__(self, item):
50
- return self.root[item]
51
-
52
50
  def __add__(self, other: "Message") -> "Message":
53
51
  if not isinstance(other, Message):
54
52
  raise TypeError(f"Cannot concatenate Message with {type(other).__name__}")
55
53
  return Message(*(self.root + other.root))
56
54
 
57
- def __str__(self):
58
- return "".join(
59
- str(part) for part in self.root if isinstance(part, TextMessagePart)
60
- )
55
+ def __str__(self) -> str:
56
+ return "".join(str(part) for part in self.root if isinstance(part, TextMessagePart))
61
57
 
62
58
 
63
59
  AgentName = str
@@ -107,8 +103,8 @@ class Run(BaseModel):
107
103
 
108
104
  def model_dump_json(
109
105
  self,
110
- **kwargs,
111
- ):
106
+ **kwargs: dict[str, Any],
107
+ ) -> str:
112
108
  return super().model_dump_json(
113
109
  by_alias=True,
114
110
  **kwargs,
@@ -128,8 +124,8 @@ class AwaitEvent(BaseModel):
128
124
 
129
125
  def model_dump_json(
130
126
  self,
131
- **kwargs,
132
- ):
127
+ **kwargs: dict[str, Any],
128
+ ) -> str:
133
129
  return super().model_dump_json(
134
130
  by_alias=True,
135
131
  **kwargs,
@@ -1,2 +1,2 @@
1
- from acp_sdk.server.server import create_app
2
- from acp_sdk.server.agent import Agent
1
+ from acp_sdk.server.agent import Agent as Agent
2
+ from acp_sdk.server.server import create_app as create_app
acp_sdk/server/agent.py CHANGED
@@ -1,11 +1,11 @@
1
1
  import abc
2
- from typing import AsyncGenerator
2
+ from collections.abc import AsyncGenerator
3
3
 
4
4
  from acp_sdk.models import (
5
5
  AgentName,
6
- Message,
7
6
  Await,
8
7
  AwaitResume,
8
+ Message,
9
9
  SessionId,
10
10
  )
11
11
  from acp_sdk.server.context import Context
@@ -21,9 +21,7 @@ class Agent(abc.ABC):
21
21
  return ""
22
22
 
23
23
  @abc.abstractmethod
24
- def run(
25
- self, input: Message, *, context: Context
26
- ) -> AsyncGenerator[Message | Await, AwaitResume]:
24
+ def run(self, input: Message, *, context: Context) -> AsyncGenerator[Message | Await, AwaitResume]:
27
25
  pass
28
26
 
29
27
  async def session(self, session_id: SessionId | None) -> SessionId | None:
acp_sdk/server/bundle.py CHANGED
@@ -1,15 +1,16 @@
1
1
  import asyncio
2
2
  import logging
3
+ from collections.abc import AsyncGenerator
3
4
 
4
5
  from opentelemetry import trace
5
6
  from pydantic import ValidationError
6
7
 
7
- from acp_sdk.server.agent import Agent
8
8
  from acp_sdk.models import (
9
9
  ACPError,
10
10
  AnyModel,
11
11
  Await,
12
12
  AwaitEvent,
13
+ AwaitResume,
13
14
  CancelledEvent,
14
15
  CompletedEvent,
15
16
  CreatedEvent,
@@ -19,17 +20,17 @@ from acp_sdk.models import (
19
20
  Message,
20
21
  MessageEvent,
21
22
  Run,
22
- AwaitResume,
23
23
  RunEvent,
24
24
  RunStatus,
25
25
  )
26
+ from acp_sdk.server.agent import Agent
26
27
  from acp_sdk.server.context import Context
27
28
 
28
29
  logger = logging.getLogger("uvicorn.error")
29
30
 
30
31
 
31
32
  class RunBundle:
32
- def __init__(self, *, agent: Agent, run: Run, task: asyncio.Task | None = None):
33
+ def __init__(self, *, agent: Agent, run: Run, task: asyncio.Task | None = None) -> None:
33
34
  self.agent = agent
34
35
  self.run = run
35
36
  self.task = task
@@ -40,20 +41,19 @@ class RunBundle:
40
41
  self.await_queue: asyncio.Queue[AwaitResume] = asyncio.Queue(maxsize=1)
41
42
  self.await_or_terminate_event = asyncio.Event()
42
43
 
43
- async def stream(self):
44
- try:
45
- while True:
46
- event = await self.stream_queue.get()
47
- yield event
48
- self.stream_queue.task_done()
49
- except asyncio.QueueShutDown:
50
- pass
44
+ async def stream(self) -> AsyncGenerator[RunEvent]:
45
+ while True:
46
+ event = await self.stream_queue.get()
47
+ if event is None:
48
+ break
49
+ yield event
50
+ self.stream_queue.task_done()
51
51
 
52
- async def emit(self, event: RunEvent):
52
+ async def emit(self, event: RunEvent) -> None:
53
53
  await self.stream_queue.put(event)
54
54
 
55
55
  async def await_(self) -> AwaitResume:
56
- self.stream_queue.shutdown()
56
+ await self.stream_queue.put(None)
57
57
  self.await_queue.empty()
58
58
  self.await_or_terminate_event.set()
59
59
  self.await_or_terminate_event.clear()
@@ -61,14 +61,14 @@ class RunBundle:
61
61
  self.await_queue.task_done()
62
62
  return resume
63
63
 
64
- async def resume(self, resume: AwaitResume):
64
+ async def resume(self, resume: AwaitResume) -> None:
65
65
  self.stream_queue = asyncio.Queue()
66
66
  await self.await_queue.put(resume)
67
67
 
68
- async def join(self):
68
+ async def join(self) -> None:
69
69
  await self.await_or_terminate_event.wait()
70
70
 
71
- async def execute(self, input: Message):
71
+ async def execute(self, input: Message) -> None:
72
72
  with trace.get_tracer(__name__).start_as_current_span("execute"):
73
73
  run_logger = logging.LoggerAdapter(logger, {"run_id": self.run.run_id})
74
74
 
@@ -77,9 +77,7 @@ class RunBundle:
77
77
  self.run.session_id = await self.agent.session(self.run.session_id)
78
78
  run_logger.info("Session loaded")
79
79
 
80
- generator = self.agent.run(
81
- input=input, context=Context(session_id=self.run.session_id)
82
- )
80
+ generator = self.agent.run(input=input, context=Context(session_id=self.run.session_id))
83
81
  run_logger.info("Run started")
84
82
 
85
83
  self.run.status = RunStatus.IN_PROGRESS
@@ -130,4 +128,4 @@ class RunBundle:
130
128
  run_logger.exception("Run failed")
131
129
  finally:
132
130
  self.await_or_terminate_event.set()
133
- self.stream_queue.shutdown()
131
+ await self.stream_queue.put(None)
acp_sdk/server/context.py CHANGED
@@ -2,5 +2,5 @@ from acp_sdk.models import SessionId
2
2
 
3
3
 
4
4
  class Context:
5
- def __init__(self, *, session_id: SessionId | None = None):
5
+ def __init__(self, *, session_id: SessionId | None = None) -> None:
6
6
  self.session_id = session_id
acp_sdk/server/server.py CHANGED
@@ -1,17 +1,16 @@
1
1
  import asyncio
2
2
 
3
- from acp_sdk.server.telemetry import configure_telemetry
4
- from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
5
-
6
3
  from fastapi import FastAPI, HTTPException, status
7
4
  from fastapi.responses import JSONResponse, StreamingResponse
5
+ from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
8
6
 
9
- from acp_sdk.server.agent import Agent
10
7
  from acp_sdk.models import (
11
- AgentName,
12
8
  Agent as AgentModel,
13
- AgentsListResponse,
9
+ )
10
+ from acp_sdk.models import (
11
+ AgentName,
14
12
  AgentReadResponse,
13
+ AgentsListResponse,
15
14
  Run,
16
15
  RunCancelResponse,
17
16
  RunCreateRequest,
@@ -23,7 +22,9 @@ from acp_sdk.models import (
23
22
  RunResumeResponse,
24
23
  RunStatus,
25
24
  )
25
+ from acp_sdk.server.agent import Agent
26
26
  from acp_sdk.server.bundle import RunBundle
27
+ from acp_sdk.server.telemetry import configure_telemetry
27
28
  from acp_sdk.server.utils import stream_sse
28
29
 
29
30
 
@@ -34,36 +35,33 @@ def create_app(*agents: Agent) -> FastAPI:
34
35
  FastAPIInstrumentor.instrument_app(app)
35
36
 
36
37
  agents: dict[AgentName, Agent] = {agent.name: agent for agent in agents}
37
- runs: dict[RunId, RunBundle] = dict()
38
+ runs: dict[RunId, RunBundle] = {}
38
39
 
39
- def find_run_bundle(run_id: RunId):
40
- bundle = runs.get(run_id, None)
40
+ def find_run_bundle(run_id: RunId) -> RunBundle:
41
+ bundle = runs.get(run_id)
41
42
  if not bundle:
42
43
  raise HTTPException(status_code=404, detail=f"Run {run_id} not found")
43
44
  return bundle
44
45
 
45
- def find_agent(agent_name: AgentName):
46
+ def find_agent(agent_name: AgentName) -> Agent:
46
47
  agent = agents.get(agent_name, None)
47
48
  if not agent:
48
49
  raise HTTPException(status_code=404, detail=f"Agent {agent_name} not found")
49
50
  return agent
50
51
 
51
52
  @app.get("/agents")
52
- async def list() -> AgentsListResponse:
53
+ async def list_agents() -> AgentsListResponse:
53
54
  return AgentsListResponse(
54
- agents=[
55
- AgentModel(name=agent.name, description=agent.description)
56
- for agent in agents.values()
57
- ]
55
+ agents=[AgentModel(name=agent.name, description=agent.description) for agent in agents.values()]
58
56
  )
59
57
 
60
58
  @app.get("/agents/{name}")
61
- async def read(name: AgentName) -> AgentReadResponse:
59
+ async def read_agent(name: AgentName) -> AgentReadResponse:
62
60
  agent = find_agent(name)
63
61
  return AgentModel(name=agent.name, description=agent.description)
64
62
 
65
63
  @app.post("/runs")
66
- async def create(request: RunCreateRequest) -> RunCreateResponse:
64
+ async def create_run(request: RunCreateRequest) -> RunCreateResponse:
67
65
  agent = find_agent(request.agent_name)
68
66
  bundle = RunBundle(
69
67
  agent=agent,
@@ -94,12 +92,12 @@ def create_app(*agents: Agent) -> FastAPI:
94
92
  raise NotImplementedError()
95
93
 
96
94
  @app.get("/runs/{run_id}")
97
- async def read(run_id: RunId) -> RunReadResponse:
95
+ async def read_run(run_id: RunId) -> RunReadResponse:
98
96
  bundle = find_run_bundle(run_id)
99
97
  return bundle.run
100
98
 
101
99
  @app.post("/runs/{run_id}")
102
- async def resume(run_id: RunId, request: RunResumeRequest) -> RunResumeResponse:
100
+ async def resume_run(run_id: RunId, request: RunResumeRequest) -> RunResumeResponse:
103
101
  bundle = find_run_bundle(run_id)
104
102
  bundle.stream_queue = asyncio.Queue() # TODO improve
105
103
  await bundle.await_queue.put(request.await_)
@@ -121,7 +119,7 @@ def create_app(*agents: Agent) -> FastAPI:
121
119
  raise NotImplementedError()
122
120
 
123
121
  @app.post("/runs/{run_id}/cancel")
124
- async def cancel(run_id: RunId) -> RunCancelResponse:
122
+ async def cancel_run(run_id: RunId) -> RunCancelResponse:
125
123
  bundle = find_run_bundle(run_id)
126
124
  if bundle.run.status.is_terminal:
127
125
  raise HTTPException(
@@ -130,8 +128,6 @@ def create_app(*agents: Agent) -> FastAPI:
130
128
  )
131
129
  bundle.task.cancel()
132
130
  bundle.run.status = RunStatus.CANCELLING
133
- return JSONResponse(
134
- status_code=status.HTTP_202_ACCEPTED, content=bundle.run.model_dump()
135
- )
131
+ return JSONResponse(status_code=status.HTTP_202_ACCEPTED, content=bundle.run.model_dump())
136
132
 
137
133
  return app
@@ -1,22 +1,23 @@
1
1
  import logging
2
2
  from importlib.metadata import version
3
+ from typing import Any
3
4
 
4
5
  from opentelemetry import trace
6
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
5
7
  from opentelemetry.sdk.resources import (
6
- Resource,
7
8
  SERVICE_NAME,
8
9
  SERVICE_NAMESPACE,
9
10
  SERVICE_VERSION,
11
+ Resource,
10
12
  )
11
13
  from opentelemetry.sdk.trace import TracerProvider
12
14
  from opentelemetry.sdk.trace.export import BatchSpanProcessor, SpanExportResult
13
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
14
15
 
15
16
  logger = logging.getLogger("uvicorn.error")
16
17
 
17
18
 
18
19
  class SilentOTLPSpanExporter(OTLPSpanExporter):
19
- def export(self, spans):
20
+ def export(self, spans: Any) -> SpanExportResult:
20
21
  try:
21
22
  return super().export(spans)
22
23
  except Exception as e:
@@ -24,7 +25,7 @@ class SilentOTLPSpanExporter(OTLPSpanExporter):
24
25
  return SpanExportResult.FAILURE
25
26
 
26
27
 
27
- def configure_telemetry():
28
+ def configure_telemetry() -> None:
28
29
  current_provider = trace.get_tracer_provider()
29
30
 
30
31
  # Detect default provider and override
acp_sdk/server/utils.py CHANGED
@@ -1,12 +1,14 @@
1
+ from collections.abc import AsyncGenerator
2
+
1
3
  from pydantic import BaseModel
2
4
 
3
5
  from acp_sdk.server.bundle import RunBundle
4
6
 
5
7
 
6
- def encode_sse(model: BaseModel):
8
+ def encode_sse(model: BaseModel) -> str:
7
9
  return f"data: {model.model_dump_json()}\n\n"
8
10
 
9
11
 
10
- async def stream_sse(bundle: RunBundle):
12
+ async def stream_sse(bundle: RunBundle) -> AsyncGenerator[str]:
11
13
  async for event in bundle.stream():
12
14
  yield encode_sse(event)
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acp-sdk
3
- Version: 1.0.0rc1
3
+ Version: 1.0.0rc2
4
4
  Summary: Agent Communication Protocol SDK
5
- Requires-Python: <4.0,>=3.13
5
+ Requires-Python: <4.0,>=3.11
6
6
  Requires-Dist: opentelemetry-api>=1.31.1
7
7
  Requires-Dist: pydantic>=2.11.1
8
8
  Provides-Extra: client
@@ -0,0 +1,15 @@
1
+ acp_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ acp_sdk/models.py,sha256=atSddtsQvNfiEIKHTckMwzahlTaOyyjuX6rrtD1Dft8,4345
3
+ acp_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ acp_sdk/client/__init__.py,sha256=Bca1DORrswxzZsrR2aUFpATuNG2xNSmYvF1Z2WJaVbc,51
5
+ acp_sdk/client/client.py,sha256=os14f1Q4TAMoXuhjpbrh67bBYpQS7KyT4H7a-WFN07Q,4489
6
+ acp_sdk/server/__init__.py,sha256=iClvo3yLpMKLoUTTR9JeL_eR7R9YLFFcHTyFpg4xWfg,107
7
+ acp_sdk/server/agent.py,sha256=yo31fL0H7boaHllICXAiXApHgBLD8fJfs1osJWUheuI,682
8
+ acp_sdk/server/bundle.py,sha256=R3D5cPSoId6CZrs-ag3aUuxiK6sVdLw2EmOdMl3SoGg,4892
9
+ acp_sdk/server/context.py,sha256=oILWXHNTXq3mLX0RM7jiIKMC19dEiw7AYy6X0L6OUXg,163
10
+ acp_sdk/server/server.py,sha256=XvIznmda5UjjOUP37XRHDwKzVf-seKjVwkfshbKRuCo,4446
11
+ acp_sdk/server/telemetry.py,sha256=rM22-0_SXtJn9T_xDmXalATAR1cwV8COJDY6EAg0jeE,1439
12
+ acp_sdk/server/utils.py,sha256=EfrF9VCyVk3AM_ao-BIB9EzGbfTrh4V2Bz-VFr6f6Sg,351
13
+ acp_sdk-1.0.0rc2.dist-info/METADATA,sha256=vGTZlnl6Ucgg4iPLxItlrAu446pJYitlKMLBuYNgEUI,1350
14
+ acp_sdk-1.0.0rc2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ acp_sdk-1.0.0rc2.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- acp_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- acp_sdk/models.py,sha256=0B_jdMxM7sYO9USTZzM1hvCS-qsO6lUKfqLTpGdkRQQ,4315
3
- acp_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- acp_sdk/client/__init__.py,sha256=h3uraY7H5vbtiz5i3N9kIpjF_bu7Nor6LJu_li-aiVc,41
5
- acp_sdk/client/client.py,sha256=EDcV6DhnDFJF58zAyzi4cgoNkb3znMSw7dZkiN7KKbY,4557
6
- acp_sdk/server/__init__.py,sha256=2bgh6BqT6I0w9GmN8GWdHa52HL64ZpbcICbxKZbInNY,84
7
- acp_sdk/server/agent.py,sha256=G3gmUDzb_msK0w4EuUe8hTbZRFCb8xy-bqpVFIAx9sU,687
8
- acp_sdk/server/bundle.py,sha256=cZmd39uYkykKOyQpVcXHtH_-N2y9PJX9jWEvO9bzlA8,4841
9
- acp_sdk/server/context.py,sha256=h8SY0-1DMHAMluOMni981EXXM2kAuBQcqrofK-qyi4s,155
10
- acp_sdk/server/server.py,sha256=dUZ-aDsNzSHnEeY3vOtbixrgr86JT2JUkTue6_9IVak,4443
11
- acp_sdk/server/telemetry.py,sha256=ZxiZUJm9PuZoc6rIl0MvaQkzIX3E4ENiwsxxqDZtfRo,1383
12
- acp_sdk/server/utils.py,sha256=VoqEZ1fZ7_NYSKmDIwBz2UwSL17NKTZ5k760ALgimE4,277
13
- acp_sdk-1.0.0rc1.dist-info/METADATA,sha256=0ddoScvUqT8HuRpVgBFNdtxQt8gxzyMU7ujyimZ5s1c,1350
14
- acp_sdk-1.0.0rc1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
- acp_sdk-1.0.0rc1.dist-info/RECORD,,