feat(sessions): SandboxFleet integration — fleet primary, k8s fallback #61

Merged
rock merged 2 commits from feat/sessions-sandbox-fleet-integration into main 2026-09-29 08:14:01 +00:00
Owner

Wires sandbox resource to live SandboxFleet controller. Fleet primary path, SandboxManager fallback. NetworkPolicy port 8788 added.

Wires sandbox resource to live SandboxFleet controller. Fleet primary path, SandboxManager fallback. NetworkPolicy port 8788 added.
rock added 2 commits 2026-09-29 08:11:00 +00:00
FleetClient calls tool-definition-controller:8788 /sessions/{id}/assign
as the primary sandbox create path. Falls back to direct k8s SandboxManager
if fleet controller is unreachable.

handleSandboxCreate:
  1. fleet.Assign() → podSvcDns from pre-warmed fleet pod (fast, no wait)
  2. fallback: sandbox.CreateOrResume() → dedicated pod (slow, 30s wait)

handleSandboxDelete: fleet.Release() + sandbox.Delete() both run (non-fatal).
updateSandboxSummary: extracted helper, updates session memory_entity with
  pod_name / svc_dns / last_active_at.

NetworkPolicy: added port 8788 to poimen egress (fleet controller REST API).

Response adds fleet:true field when served by fleet.
r.Context() is cancelled when HTTP handler returns; fetchEntitySummary
returns nil on cancelled context. Two fixes:
1. Detached request with context.Background() for the goroutine call
2. Nil guard on current before map assignment
rock force-pushed feat/sessions-sandbox-fleet-integration from 8749c650ea to da361f2a21 2026-09-29 08:11:00 +00:00 Compare
rock merged commit 3068c68730 into main 2026-09-29 08:14:01 +00:00
rock deleted branch feat/sessions-sandbox-fleet-integration 2026-09-29 08:14:02 +00:00
Sign in to join this conversation.