MCPcopy Create free account
hub / github.com/ByteYellow/AgentProvenance / CreateSessionFromWorkspace

Method CreateSessionFromWorkspace

internal/control/service.go:156–236  ·  view source on GitHub ↗
(req WorkspaceSessionRequest)

Source from the content-addressed store, hash-verified

154}
155
156func (s Service) CreateSessionFromWorkspace(req WorkspaceSessionRequest) (string, error) {
157 if req.TaskPath == "" {
158 return "", fmt.Errorf("task path is required")
159 }
160 if req.WorkspacePath == "" {
161 return "", fmt.Errorf("workspace path is required")
162 }
163 task, raw, err := LoadTask(req.TaskPath)
164 if err != nil {
165 return "", err
166 }
167 runID := req.RunID
168 if runID == "" {
169 runID = task.RunID
170 }
171 if runID == "" {
172 runID = ids.New("run")
173 }
174 sessionID := ids.New("sbx")
175 leaseID := ids.New("lease")
176 now := time.Now().UTC().Format(time.RFC3339Nano)
177 if _, err := s.DB.Exec(`INSERT INTO leases (id, run_id, task_path, task_yaml, status, created_at, updated_at)
178 VALUES (?, ?, ?, ?, 'allocated', ?, ?)`, leaseID, runID, req.TaskPath, string(raw), now, now); err != nil {
179 return "", err
180 }
181 decision, err := (scheduler.Scheduler{DB: s.DB}).Admit(scheduler.Request{
182 RunID: runID,
183 SessionID: sessionID,
184 Runtime: s.runtimeName(),
185 RiskTier: task.RiskTier,
186 CPURequest: task.CPURequest,
187 MemoryMB: task.MemoryMB,
188 SnapshotID: req.ParentSnapshotID,
189 })
190 if err != nil {
191 return "", err
192 }
193 if !decision.Admitted {
194 return "", fmt.Errorf("admission rejected: reject_reason=%s effective_cpu=%.3f debt=%.3f burst_risk=%s overcommit_ratio=%.2f queue_pressure=%s memory_pressure=%s memory_allocated_mb=%d memory_request_mb=%d memory_capacity_mb=%d",
195 decision.RejectReason, decision.EffectiveCPU, decision.ActiveCPUDebt, decision.BurstRisk, decision.OvercommitRatio, decision.QueuePressure, decision.MemoryPressure, decision.MemoryAllocatedMB, decision.MemoryRequestMB, decision.MemoryCapacityMB)
196 }
197 var egressProxy egress.ProxyInfo
198 if s.isDockerRuntime() {
199 egressProxy, err = (egress.Service{DB: s.DB, Paths: s.Paths}).EnsureSessionProxy(runID, sessionID)
200 if err != nil {
201 return "", err
202 }
203 }
204 start := time.Now()
205 containerID, err := s.createRuntimeSession(runtimeplane.CreateSessionRequest{
206 SessionID: sessionID,
207 LeaseID: leaseID,
208 RunID: runID,
209 Image: task.Image,
210 WorkspaceHostPath: req.WorkspacePath,
211 MemoryMB: task.MemoryMB,
212 CPURequest: task.CPURequest,
213 NetworkMode: task.NetworkMode,

Callers 1

runDockerAttemptMethod · 0.95

Calls 9

runtimeNameMethod · 0.95
isDockerRuntimeMethod · 0.95
createRuntimeSessionMethod · 0.95
NewFunction · 0.92
LoadTaskFunction · 0.85
AdmitMethod · 0.80
EnsureSessionProxyMethod · 0.80
ExecMethod · 0.65

Tested by

no test coverage detected