fix: add SSH key selection to workspace tool starter + docker compose policy

tool-starter.tsx was hardcoding ssh_key_ids=[] and only showing a read-only
SSH key status. Users couldn't select keys when starting tools from workspaces.

Changes:
- tool-starter.tsx: add checkboxes for SSH key selection with repo key
  pre-selected, pass selected keys to createInstance/startInstance
- AGENTS.md: add explicit rule forbidding docker compose commands without
  user approval and proper isolation

The web container must be rebuilt to pick up the frontend changes:
  docker compose up -d --build web

Quality gates: tsc clean, pytest (19 passed, 1 skipped)
This commit is contained in:
Alex Blank
2026-06-02 15:40:20 +02:00
parent 37134b8c18
commit fc75eeb76d
3 changed files with 61 additions and 23 deletions
+5 -7
View File
@@ -187,9 +187,7 @@ class TerminalSession:
try:
data = os.read(self._master_fd, 4096)
except (OSError, IOError) as exc:
logger.debug(
"PTY read error for session %s: %s", self.session_id, exc
)
logger.debug("PTY read error for session %s: %s", self.session_id, exc)
self._handle_eof()
return
@@ -320,7 +318,9 @@ class TerminalSession:
self._websockets.clear()
for ws in dead_sockets:
try:
asyncio.create_task(ws.close(code=4001, reason="Session process exited"))
asyncio.create_task(
ws.close(code=4001, reason="Session process exited")
)
except Exception:
pass
logger.info("Session %s EOF handled, websockets closed", self.session_id)
@@ -333,9 +333,7 @@ class TerminalSession:
os.write(self._master_fd, data)
self.last_activity = time.time()
except (OSError, IOError) as exc:
logger.debug(
"PTY write error for session %s: %s", self.session_id, exc
)
logger.debug("PTY write error for session %s: %s", self.session_id, exc)
self._handle_eof()
def _set_terminal_size(self, cols: int, rows: int) -> None: