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

Method ensureTaskExecutable

internal/task/manager.go:3320–3344  ·  view source on GitHub ↗
(ctx context.Context, record Task)

Source from the content-addressed store, hash-verified

3318}
3319
3320func (m *Service) ensureTaskExecutable(ctx context.Context, record Task) error {
3321 dependencies, err := m.store.ListDependencies(ctx, record.ID)
3322 if err != nil {
3323 return err
3324 }
3325 runs, err := m.store.ListTaskRuns(ctx, RunQuery{TaskID: record.ID})
3326 if err != nil {
3327 return err
3328 }
3329 status, err := m.canonicalTaskStatus(ctx, record, dependencies, runs)
3330 if err != nil {
3331 return err
3332 }
3333
3334 switch status.Normalize() {
3335 case TaskStatusBlocked:
3336 return fmt.Errorf("%w: task %q is blocked", ErrInvalidStatusTransition, record.ID)
3337 case TaskStatusDraft:
3338 return fmt.Errorf("%w: task %q is draft", ErrInvalidStatusTransition, record.ID)
3339 case TaskStatusCanceled:
3340 return fmt.Errorf("%w: task %q is canceled", ErrInvalidStatusTransition, record.ID)
3341 default:
3342 return nil
3343 }
3344}
3345
3346func (m *Service) requireSessionExecutor(action string) error {
3347 if m.sessions == nil {

Callers 5

publishTaskIntentMethod · 0.95
ClaimRunMethod · 0.95
StartRunMethod · 0.95
AttachRunSessionMethod · 0.95

Calls 4

canonicalTaskStatusMethod · 0.95
ListDependenciesMethod · 0.65
ListTaskRunsMethod · 0.65
NormalizeMethod · 0.45

Tested by

no test coverage detected