Bash tool had no default timeout, so commands like `npx serve` would
block the agent loop forever. This caused the randomtrends sandbox
thread to die - the LLM started a dev server, the shell never exited,
and the entire session hung with no way to recover.
Two safeguards:
- Default 120s timeout when LLM does not specify one
- 30s no-output timeout that kills processes that go silent
Both are configurable via BashToolOptions and can be disabled by
setting to 0. The LLM can still pass explicit higher timeouts for
long builds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Delete the dormant companion-os web-ui workspace and clean up the workspace, build, lint, and lockfile references that still pointed at it.
Fixes#253
Co-authored-by: Codex <noreply@openai.com>
Move the gateway runtime files into a dedicated core/gateway module and fix follow-up issues in session deletion, history import batching, message IDs, and legacy thread parsing.
Fixes#253
Co-authored-by: Codex <noreply@openai.com>
Add a Convex-backed durable chat layer for companion threads, recover gateway sessions from persisted Pi session files after eviction, and start splitting gateway runtime internals into focused modules.
Co-authored-by: Codex <noreply@openai.com>
- Copy all pi-mono source into apps/companion-os/
- Update Dockerfile to COPY pre-built binary instead of downloading from GitHub Releases
- Update deploy-staging.yml to build pi from source (bun compile) before Docker build
- Add apps/companion-os/** to path triggers
- No more cross-repo dispatch needed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>