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

Method mutateTaskTriage

internal/task/manager.go:1000–1041  ·  view source on GitHub ↗
(
	ctx context.Context,
	id string,
	actor ActorContext,
	mutate func(state *TriageState, latestActivity time.Time),
)

Source from the content-addressed store, hash-verified

998}
999
1000func (m *Service) mutateTaskTriage(
1001 ctx context.Context,
1002 id string,
1003 actor ActorContext,
1004 mutate func(state *TriageState, latestActivity time.Time),
1005) (TriageState, error) {
1006 if err := requireWriteAuthority(actor); err != nil {
1007 return TriageState{}, err
1008 }
1009
1010 trimmedID := strings.TrimSpace(id)
1011 if trimmedID == "" {
1012 return TriageState{}, fmt.Errorf("%w: task id is required", ErrValidation)
1013 }
1014
1015 record, err := m.store.GetTask(ctx, trimmedID)
1016 if err != nil {
1017 return TriageState{}, err
1018 }
1019 runs, err := m.store.ListTaskRuns(ctx, RunQuery{TaskID: trimmedID})
1020 if err != nil {
1021 return TriageState{}, err
1022 }
1023 events, err := m.store.ListTaskEvents(ctx, EventQuery{TaskID: trimmedID, Limit: 1})
1024 if err != nil {
1025 return TriageState{}, err
1026 }
1027
1028 state, err := m.loadTaskTriageState(ctx, trimmedID, actor.Actor)
1029 if err != nil {
1030 return TriageState{}, err
1031 }
1032 mutate(&state, latestTaskActivityAt(record, runs, events))
1033 state.TaskID = trimmedID
1034 state.Actor = actor.Actor
1035 state.UpdatedAt = m.now().UTC()
1036 if err := m.store.UpsertTaskTriageState(ctx, state); err != nil {
1037 return TriageState{}, err
1038 }
1039
1040 return state, nil
1041}
1042
1043func (m *Service) loadTaskTriageState(
1044 ctx context.Context,

Callers 3

MarkTaskReadMethod · 0.95
ArchiveTaskMethod · 0.95
DismissTaskMethod · 0.95

Calls 8

loadTaskTriageStateMethod · 0.95
requireWriteAuthorityFunction · 0.85
latestTaskActivityAtFunction · 0.85
GetTaskMethod · 0.65
ListTaskRunsMethod · 0.65
ListTaskEventsMethod · 0.65
UpsertTaskTriageStateMethod · 0.65
nowMethod · 0.45

Tested by

no test coverage detected