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

Method startRunSession

internal/task/manager.go:1246–1298  ·  view source on GitHub ↗
(
	ctx context.Context,
	taskRecord Task,
	startingTask Task,
	run Run,
	actor ActorContext,
)

Source from the content-addressed store, hash-verified

1244}
1245
1246func (m *Service) startRunSession(
1247 ctx context.Context,
1248 taskRecord Task,
1249 startingTask Task,
1250 run Run,
1251 actor ActorContext,
1252) (string, *Run, error) {
1253 profile, err := m.startTaskExecutionProfile(ctx, startingTask.ID)
1254 if err != nil {
1255 message := fmt.Sprintf("load execution profile: %v", err)
1256 failedRun, failErr := m.failRunAfterSessionStartError(ctx, taskRecord, run, actor, message)
1257 if failErr != nil {
1258 return "", nil, errorsJoin(err, failErr)
1259 }
1260 return "", failedRun, fmt.Errorf("task: load execution profile for run %q: %w", run.ID, err)
1261 }
1262 sessionRef, err := m.sessions.StartTaskSession(ctx, &StartTaskSession{
1263 Task: startingTask,
1264 Run: run,
1265 ExecutionProfile: &profile,
1266 Actor: actor,
1267 })
1268 if err != nil {
1269 message := fmt.Sprintf("start task session: %v", err)
1270 failedRun, failErr := m.failRunAfterSessionStartError(ctx, taskRecord, run, actor, message)
1271 if failErr != nil {
1272 return "", nil, errorsJoin(err, failErr)
1273 }
1274 return "", failedRun, fmt.Errorf("task: start task session for run %q: %w", run.ID, err)
1275 }
1276 if sessionRef == nil {
1277 failedRun, failErr := m.failRunAfterSessionStartError(
1278 ctx,
1279 taskRecord,
1280 run,
1281 actor,
1282 "start task session: nil session reference",
1283 )
1284 if failErr != nil {
1285 return "", nil, failErr
1286 }
1287 return "", failedRun, fmt.Errorf("%w: start_task_session returned nil session reference", ErrValidation)
1288 }
1289 if err := sessionRef.Validate(); err != nil {
1290 message := fmt.Sprintf("start task session: %v", err)
1291 failedRun, failErr := m.failRunAfterSessionStartError(ctx, taskRecord, run, actor, message)
1292 if failErr != nil {
1293 return "", nil, errorsJoin(err, failErr)
1294 }
1295 return "", failedRun, err
1296 }
1297 return strings.TrimSpace(sessionRef.SessionID), nil, nil
1298}
1299
1300func (m *Service) startTaskExecutionProfile(ctx context.Context, taskID string) (ExecutionProfile, error) {
1301 profile, err := m.store.GetExecutionProfile(ctx, taskID)

Callers 1

Calls 5

errorsJoinFunction · 0.85
StartTaskSessionMethod · 0.65
ValidateMethod · 0.65

Tested by

no test coverage detected