Skip to content

Commit 58bf353

Browse files
committed
Revert "fix: allow omitting mcpServers in session requests"
This reverts commit 73499a8.
1 parent f241344 commit 58bf353

File tree

7 files changed

+16
-191
lines changed

7 files changed

+16
-191
lines changed

scripts/gen_schema.py

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,16 @@
22
from __future__ import annotations
33

44
import ast
5-
import contextlib
65
import json
76
import re
87
import subprocess
98
import sys
10-
import tempfile
119
import textwrap
1210
from collections.abc import Callable
1311
from dataclasses import dataclass
1412
from pathlib import Path
1513

1614
ROOT = Path(__file__).resolve().parents[1]
17-
if str(ROOT) not in sys.path:
18-
sys.path.append(str(ROOT))
19-
20-
from scripts.schema_patches import apply_schema_patches # noqa: E402
21-
2215
SCHEMA_DIR = ROOT / "schema"
2316
SCHEMA_JSON = SCHEMA_DIR / "schema.json"
2417
VERSION_FILE = SCHEMA_DIR / "VERSION"
@@ -143,23 +136,12 @@ def generate_schema() -> None:
143136
)
144137
sys.exit(1)
145138

146-
schema_payload = json.loads(SCHEMA_JSON.read_text(encoding="utf-8"))
147-
schema_payload, patch_warnings = apply_schema_patches(schema_payload)
148-
for warning in patch_warnings:
149-
print(f"Warning: {warning.message}", file=sys.stderr)
150-
151-
patched_schema_path: Path | None = None
152-
with tempfile.NamedTemporaryFile("w", suffix=".json", delete=False, encoding="utf-8") as handle:
153-
json.dump(schema_payload, handle, indent=2)
154-
handle.write("\n")
155-
patched_schema_path = Path(handle.name)
156-
157139
cmd = [
158140
sys.executable,
159141
"-m",
160142
"datamodel_code_generator",
161143
"--input",
162-
str(patched_schema_path),
144+
str(SCHEMA_JSON),
163145
"--input-file-type",
164146
"jsonschema",
165147
"--output",
@@ -173,15 +155,10 @@ def generate_schema() -> None:
173155
"--snake-case-field",
174156
]
175157

176-
try:
177-
subprocess.check_call(cmd) # noqa: S603
178-
warnings = postprocess_generated_schema(SCHEMA_OUT)
179-
for warning in warnings:
180-
print(f"Warning: {warning}", file=sys.stderr)
181-
finally:
182-
if patched_schema_path is not None:
183-
with contextlib.suppress(OSError):
184-
patched_schema_path.unlink()
158+
subprocess.check_call(cmd) # noqa: S603
159+
warnings = postprocess_generated_schema(SCHEMA_OUT)
160+
for warning in warnings:
161+
print(f"Warning: {warning}", file=sys.stderr)
185162

186163

187164
def postprocess_generated_schema(output_path: Path) -> list[str]:

scripts/schema_patches.py

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/acp/client/connection.py

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545

4646
__all__ = ["ClientSideConnection"]
4747
_CLIENT_CONNECTION_ERROR = "ClientSideConnection requires asyncio StreamWriter/StreamReader"
48-
_MISSING = object()
4948

5049

5150
@final
@@ -94,10 +93,7 @@ async def initialize(
9493

9594
@param_model(NewSessionRequest)
9695
async def new_session(
97-
self,
98-
cwd: str,
99-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
100-
**kwargs: Any,
96+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], **kwargs: Any
10197
) -> NewSessionResponse:
10298
return await request_model(
10399
self._conn,
@@ -108,27 +104,12 @@ async def new_session(
108104

109105
@param_model(LoadSessionRequest)
110106
async def load_session(
111-
self,
112-
cwd: str,
113-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | str | None = None,
114-
session_id: str | object = _MISSING,
115-
**kwargs: Any,
107+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], session_id: str, **kwargs: Any
116108
) -> LoadSessionResponse:
117-
if session_id is _MISSING:
118-
if isinstance(mcp_servers, str):
119-
session_id = mcp_servers
120-
mcp_servers = None
121-
else:
122-
raise TypeError("load_session() missing required argument: 'session_id'")
123109
return await request_model_from_dict(
124110
self._conn,
125111
AGENT_METHODS["session_load"],
126-
LoadSessionRequest(
127-
cwd=cwd,
128-
mcp_servers=cast(list[HttpMcpServer | SseMcpServer | McpServerStdio] | None, mcp_servers),
129-
session_id=cast(str, session_id),
130-
field_meta=kwargs or None,
131-
),
112+
LoadSessionRequest(cwd=cwd, mcp_servers=mcp_servers, session_id=session_id, field_meta=kwargs or None),
132113
LoadSessionResponse,
133114
)
134115

src/acp/interfaces.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -154,19 +154,12 @@ async def initialize(
154154

155155
@param_model(NewSessionRequest)
156156
async def new_session(
157-
self,
158-
cwd: str,
159-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
160-
**kwargs: Any,
157+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], **kwargs: Any
161158
) -> NewSessionResponse: ...
162159

163160
@param_model(LoadSessionRequest)
164161
async def load_session(
165-
self,
166-
cwd: str,
167-
session_id: str,
168-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
169-
**kwargs: Any,
162+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], session_id: str, **kwargs: Any
170163
) -> LoadSessionResponse | None: ...
171164

172165
@param_model(ListSessionsRequest)

src/acp/schema.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,12 +1410,12 @@ class NewSessionRequest(BaseModel):
14101410
]
14111411
# List of MCP (Model Context Protocol) servers the agent should connect to.
14121412
mcp_servers: Annotated[
1413-
Optional[List[Union[HttpMcpServer, SseMcpServer, McpServerStdio]]],
1413+
List[Union[HttpMcpServer, SseMcpServer, McpServerStdio]],
14141414
Field(
14151415
alias="mcpServers",
14161416
description="List of MCP (Model Context Protocol) servers the agent should connect to.",
14171417
),
1418-
] = None
1418+
]
14191419

14201420

14211421
class PermissionOption(BaseModel):
@@ -2073,12 +2073,12 @@ class LoadSessionRequest(BaseModel):
20732073
cwd: Annotated[str, Field(description="The working directory for this session.")]
20742074
# List of MCP servers to connect to for this session.
20752075
mcp_servers: Annotated[
2076-
Optional[List[Union[HttpMcpServer, SseMcpServer, McpServerStdio]]],
2076+
List[Union[HttpMcpServer, SseMcpServer, McpServerStdio]],
20772077
Field(
20782078
alias="mcpServers",
20792079
description="List of MCP servers to connect to for this session.",
20802080
),
2081-
] = None
2081+
]
20822082
# The ID of the session to load.
20832083
session_id: Annotated[str, Field(alias="sessionId", description="The ID of the session to load.")]
20842084

tests/conftest.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -243,19 +243,12 @@ async def initialize(
243243
return InitializeResponse(protocol_version=protocol_version, agent_capabilities=None, auth_methods=[])
244244

245245
async def new_session(
246-
self,
247-
cwd: str,
248-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
249-
**kwargs: Any,
246+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], **kwargs: Any
250247
) -> NewSessionResponse:
251248
return NewSessionResponse(session_id="test-session-123")
252249

253250
async def load_session(
254-
self,
255-
cwd: str,
256-
session_id: str,
257-
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
258-
**kwargs: Any,
251+
self, cwd: str, mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio], session_id: str, **kwargs: Any
259252
) -> LoadSessionResponse | None:
260253
return LoadSessionResponse()
261254

tests/real_user/test_issue_55_mcp_servers_optional.py

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)