MCPcopy Create free account
hub / github.com/compozy/agh / handleSandboxExec

Method handleSandboxExec

internal/extension/host_api.go:1126–1167  ·  view source on GitHub ↗
(ctx context.Context, raw json.RawMessage)

Source from the content-addressed store, hash-verified

1124}
1125
1126func (h *HostAPIHandler) handleSandboxExec(ctx context.Context, raw json.RawMessage) (any, error) {
1127 if h.sessions == nil {
1128 return nil, errors.New("extension: session manager is not configured")
1129 }
1130 var params hostAPISandboxExecParams
1131 if err := decodeHostAPIParams(raw, &params); err != nil {
1132 return nil, err
1133 }
1134 sessionID := strings.TrimSpace(params.SessionID)
1135 if sessionID == "" {
1136 return nil, invalidParamsRPCError(errors.New("session_id is required"))
1137 }
1138 command := strings.TrimSpace(params.Command)
1139 if command == "" {
1140 return nil, invalidParamsRPCError(errors.New("command is required"))
1141 }
1142 if params.Timeout < 0 {
1143 return nil, invalidParamsRPCError(errors.New("timeout must be non-negative"))
1144 }
1145 if _, err := h.requireHostAPISessionWorkspace(ctx, params.WorkspaceID, sessionID); err != nil {
1146 return nil, err
1147 }
1148 result, err := h.sessions.ExecSandbox(ctx, session.SandboxExecRequest{
1149 SessionID: sessionID,
1150 Command: command,
1151 Timeout: time.Duration(params.Timeout) * time.Second,
1152 })
1153 if err != nil {
1154 if errors.Is(err, session.ErrSessionNotFound) {
1155 return nil, notFoundRPCError("session", sessionID, err)
1156 }
1157 if errors.Is(err, session.ErrSessionNotActive) {
1158 return nil, unavailableRPCError(err)
1159 }
1160 return nil, err
1161 }
1162 return hostAPISandboxExecResult{
1163 ExitCode: result.ExitCode,
1164 Stdout: result.Stdout,
1165 Stderr: result.Stderr,
1166 }, nil
1167}
1168
1169func (h *HostAPIHandler) resolveSandboxWorkspaceFilter(
1170 ctx context.Context,

Callers

nothing calls this directly

Calls 7

decodeHostAPIParamsFunction · 0.85
invalidParamsRPCErrorFunction · 0.85
notFoundRPCErrorFunction · 0.85
unavailableRPCErrorFunction · 0.85
ExecSandboxMethod · 0.65
IsMethod · 0.45

Tested by

no test coverage detected