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

Method taskPromoteFromThread

internal/daemon/native_tools.go:2982–3040  ·  view source on GitHub ↗
(
	ctx context.Context,
	scope toolspkg.Scope,
	req toolspkg.CallRequest,
)

Source from the content-addressed store, hash-verified

2980}
2981
2982func (n *daemonNativeTools) taskPromoteFromThread(
2983 ctx context.Context,
2984 scope toolspkg.Scope,
2985 req toolspkg.CallRequest,
2986) (toolspkg.ToolResult, error) {
2987 var input taskPromoteFromThreadInput
2988 if err := decodeNativeInput(req, &input); err != nil {
2989 return toolspkg.ToolResult{}, err
2990 }
2991 source, err := n.nativeThreadPromotionSource(ctx, scope, req.ToolID, input)
2992 if err != nil {
2993 return toolspkg.ToolResult{}, err
2994 }
2995 actor, err := actorContextFromScope(scope)
2996 if err != nil {
2997 return toolspkg.ToolResult{}, err
2998 }
2999 spec := taskpkg.CreateTask{
3000 Scope: taskpkg.ScopeWorkspace,
3001 WorkspaceID: source.workspaceID,
3002 NetworkChannel: source.channel,
3003 Title: nativePromotedThreadTaskTitle(input, source),
3004 Description: firstNonEmpty(strings.TrimSpace(input.Description), source.digest),
3005 Priority: taskpkg.Priority(strings.TrimSpace(input.Priority)).Normalize(),
3006 Metadata: cloneJSON(input.Metadata),
3007 }
3008 taskRecord, err := n.deps.Tasks.CreateTask(ctx, spec, actor)
3009 if err != nil {
3010 return toolspkg.ToolResult{}, err
3011 }
3012 now := time.Now().UTC()
3013 origin := store.NetworkTaskThreadOrigin{
3014 TaskID: taskRecord.ID,
3015 WorkspaceID: source.workspaceID,
3016 Channel: source.channel,
3017 ThreadID: source.threadID,
3018 OriginMessageID: source.originMessageID,
3019 Digest: source.digest,
3020 SourceMessageIDs: source.sourceMessageIDs,
3021 CreatedAt: now,
3022 UpdatedAt: now,
3023 }
3024 if err := origin.Validate(); err != nil {
3025 return toolspkg.ToolResult{}, nativeNetworkInputError(
3026 req.ToolID,
3027 n.rollbackPromotedThreadTask(ctx, taskRecord.ID, actor, err),
3028 )
3029 }
3030 if err := n.deps.NetworkStore.PutNetworkTaskThreadOrigin(ctx, origin); err != nil {
3031 return toolspkg.ToolResult{}, nativeNetworkInputError(
3032 req.ToolID,
3033 n.rollbackPromotedThreadTask(ctx, taskRecord.ID, actor, err),
3034 )
3035 }
3036 return structuredResult(
3037 map[string]any{"task": taskRecord, "origin": core.NetworkTaskThreadOriginPayloadFromStore(origin)},
3038 taskRecord.Title,
3039 )

Callers

nothing calls this directly

Calls 15

ValidateMethod · 0.95
decodeNativeInputFunction · 0.85
actorContextFromScopeFunction · 0.85
nativeNetworkInputErrorFunction · 0.85
structuredResultFunction · 0.85
firstNonEmptyFunction · 0.70
cloneJSONFunction · 0.70
PriorityMethod · 0.65

Tested by

no test coverage detected