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

Method ClaimRun

internal/task/manager.go:1892–1948  ·  view source on GitHub ↗

ClaimRun transitions one queued run into the claimed state.

(
	ctx context.Context,
	runID string,
	claim ClaimRun,
	actor ActorContext,
)

Source from the content-addressed store, hash-verified

1890
1891// ClaimRun transitions one queued run into the claimed state.
1892func (m *Service) ClaimRun(
1893 ctx context.Context,
1894 runID string,
1895 claim ClaimRun,
1896 actor ActorContext,
1897) (*Run, error) {
1898 if err := requireWriteAuthority(actor); err != nil {
1899 return nil, err
1900 }
1901
1902 normalizedClaim, err := normalizeClaimRun(claim)
1903 if err != nil {
1904 return nil, err
1905 }
1906 if err := requireLifecycleIdempotency(actor, normalizedClaim.IdempotencyKey, "claim_run"); err != nil {
1907 return nil, err
1908 }
1909
1910 run, taskRecord, err := m.loadRunWithTask(ctx, runID)
1911 if err != nil {
1912 return nil, err
1913 }
1914 if err := m.ensureTaskExecutable(ctx, taskRecord); err != nil {
1915 return nil, err
1916 }
1917 if err := requireRunTransition(run, TaskRunStatusClaimed); err != nil {
1918 return nil, err
1919 }
1920 if err := validateExplicitRunClaimOwner(taskRecord, actor); err != nil {
1921 return nil, err
1922 }
1923 if err := m.dispatchTaskRunPreClaim(ctx, run, taskRecord, actor); err != nil {
1924 return nil, err
1925 }
1926
1927 run.Status = TaskRunStatusClaimed
1928 run.ClaimedBy = &ActorIdentity{Kind: actor.Actor.Kind, Ref: actor.Actor.Ref}
1929 run.ClaimedAt = m.now().UTC()
1930 if err := m.store.UpdateTaskRun(ctx, run); err != nil {
1931 return nil, err
1932 }
1933
1934 reconciledTask, err := m.reconcileTaskCascade(ctx, run.TaskID)
1935 if err != nil {
1936 return nil, err
1937 }
1938 if err := m.recordTaskEvent(ctx, run.TaskID, run.ID, taskEventRunClaimed, actor, runClaimedPayload{
1939 Status: run.Status,
1940 TaskStatus: reconciledTask.Status,
1941 ClaimedBy: *run.ClaimedBy,
1942 }); err != nil {
1943 return nil, err
1944 }
1945 m.dispatchTaskRunPostClaim(ctx, run, reconciledTask, actor)
1946
1947 return &run, nil
1948}
1949

Callers

nothing calls this directly

Calls 13

loadRunWithTaskMethod · 0.95
ensureTaskExecutableMethod · 0.95
reconcileTaskCascadeMethod · 0.95
recordTaskEventMethod · 0.95
requireWriteAuthorityFunction · 0.85
normalizeClaimRunFunction · 0.85
requireRunTransitionFunction · 0.85
UpdateTaskRunMethod · 0.65

Tested by

no test coverage detected