feat(session): centralize working directories and directory context

This commit is contained in:
Tianyi Cui committed 2026-10-06 01:27:54 +08:00
1 parent 3d9cd9fa95
commit 79bd3d8da7
497 files changed
+5670 -1187

No files matched your search

+10
View File
@@ -136,6 +136,16 @@ class Session:
self.harness = harness
self.id = session_id
def get_working_directory(self) -> str:
"""Read the effective directory, recovering a missing directory to the Session origin."""
self.harness.start()
return self.harness.client.get_working_directory(self.id)
def set_working_directory(self, path: str) -> str:
"""Change the effective directory while existing processes retain their own directories."""
self.harness.start()
return self.harness.client.set_working_directory(self.id, path)
def run(
self,
input: str | list[JsonObject],
+22
View File
@@ -188,6 +188,24 @@ class HarnessClient:
)
return response.messageId
def get_working_directory(self, session_id: str) -> str:
"""Read the effective directory, recovering a missing directory to the Session origin."""
response = self.request(
"session/working-directory/get",
{"sessionId": session_id},
response_model=_WorkingDirectoryResponse,
)
return response.cwd
def set_working_directory(self, session_id: str, path: str) -> str:
"""Enter an absolute or Session-relative directory without changing origin or permissions."""
response = self.request(
"session/working-directory/set",
{"sessionId": session_id, "path": path},
response_model=_WorkingDirectoryResponse,
)
return response.cwd
def request(
self,
method: str,
@@ -581,6 +599,10 @@ class _SessionPromptResponse(BaseModel):
messageId: str
class _WorkingDirectoryResponse(BaseModel):
cwd: str
class _ShutdownResponse(BaseModel):
pass