using Microsoft.AspNetCore.Http;

namespace ClaudeDo.Worker.Runner;

// Per-request caller identity for the task-run MCP surface, populated by the auth
// middleware from the run's token (mirrors PlanningMcpContext).
public sealed class TaskRunMcpContext
{
    public required string CallerTaskId { get; init; }
}

public sealed class TaskRunMcpContextAccessor
{
    private readonly IHttpContextAccessor _http;
    public TaskRunMcpContextAccessor(IHttpContextAccessor http) => _http = http;

    public TaskRunMcpContext Current =>
        (_http.HttpContext?.Items["TaskRunContext"] as TaskRunMcpContext)
        ?? throw new InvalidOperationException("No task-run context on request.");
}
