feat(session): centralize working directories and directory context
This commit is contained in:
1 parent
3d9cd9fa95
commit
79bd3d8da7
497 files changed
+5670
-1187
No files matched your search
@@ -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],
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user