3 Commits

Author SHA1 Message Date
Thomas Marchand
a809ddd162 feat: add backend config settings and tests 2026-01-18 11:25:34 +00:00
Thomas Marchand
0353c8eeea Add workspace debug endpoints for template development
Add three new API endpoints to help debug init script issues:
- GET /api/workspaces/:id/debug - Container state info (dirs, sizes, etc.)
- GET /api/workspaces/:id/init-log - Read init script log from container
- POST /api/workspaces/:id/rerun-init - Re-run init script without rebuild

These enable faster iteration when developing workspace templates by
allowing developers to inspect container state and re-run init scripts
without waiting for full container rebuilds.
2026-01-15 12:10:58 +00:00
Thomas Marchand
c32f98f57f Clean up stuck tool detection and improve mission completion UX (#33)
* Ralph iteration 1: work in progress

* Fix mission events pagination and add update_skill MCP tool

- Increase default events limit from 1000 to 50000 to fix truncation issue
  where assistant messages at the end of long missions were being cut off
- Add update_skill MCP tool to host-mcp for agents to update skill content
  in the library, with automatic workspace syncing via backend API

* Clean up stuck tool detection and improve mission completion UX

- Remove aggressive stuck tool detection that was hijacking missions
  - Deleted TOOL_STUCK_TIMEOUT and recovery mechanism from opencode.rs
  - Frontend already shows "Agent may be stuck" warning after 60s
  - Let users control cancellation instead of auto-intervention

- Fix tool calls showing "Running" after mission completes
  - When mission status changes to non-active, mark pending tools as cancelled
  - Display cancelled tools with amber color and clear status
  - Prevents confusing "Running for X..." state when mission ends

- Improve mission completion message clarity
  - Replace truncated output with meaningful terminal_reason summary
  - Show specific reason: "Reached iteration limit", "No progress detected", etc.
  - Normal completions show no extra explanation

* Fix stuck detection and pending tool UI issues

- When mission fails (success=false), mark all pending tool calls as failed
  so subagent headers show "Failed" instead of staying "Running for X"

- Increase stall warning thresholds when tools are actively running:
  - Normal: 60s warning, 120s severe
  - With pending tools: 180s warning, 300s severe
  This prevents false "stuck" warnings during long desktop operations

* Fix queued status response for user messages

- Add respond channel to UserMessage command for accurate queue status
- Return actual queued state based on whether runner was already processing
- Fallback to status check if channel fails

* Add automatic OpenCode session cleanup to prevent memory pressure

- Add list_sessions() and delete_session() methods to OpenCode client
- Add cleanup_old_sessions() method that deletes sessions older than 1 hour
- Add background task that runs every 30 minutes to clean up old sessions
- Prevents session accumulation from causing OpenCode server memory pressure

* Fix review findings: remove test artifacts, fix blob URL leak, align failure detection

- Remove accidentally committed test files (ralph.txt, changes.txt, report.txt)
- Add LRU-style cache with URL.revokeObjectURL() cleanup for blob URLs to prevent
  memory leaks in long-running sessions
- Align streaming handler with eventsToItems by using strict equality (=== false)
  for failure detection, so undefined success doesn't incorrectly mark tools as failed

* Fix memory leak from concurrent image fetches

Revoke incoming duplicate blob URL when path is already cached
to prevent leaks during race conditions.
2026-01-14 23:23:08 -08:00