// mcp_bridge.go 实现 mcp.OrchestratorBridge：把 request_subtask MCP 工具的调用转译到
// 本包 Service.RequestSubtask。放在 orchestrator 包内（orchestrator 已 import mcp 间接
// 无需，故这里只 import mcp 接口），避免 mcp → orchestrator 的循环依赖。
package orchestrator

import (
	"context"

	"github.com/google/uuid"

	"github.com/yan1h/agent-coding-workflow/internal/mcp"
	"github.com/yan1h/agent-coding-workflow/internal/project"
)

// MCPBridge 适配 Service 到 mcp.OrchestratorBridge。
type MCPBridge struct {
	svc Service
}

// NewMCPBridge 构造桥接适配器，由 app.go 装配 mcp.ServerDeps 时调用。
func NewMCPBridge(svc Service) *MCPBridge { return &MCPBridge{svc: svc} }

var _ mcp.OrchestratorBridge = (*MCPBridge)(nil)

// RequestSubtask 透传到 Service.RequestSubtask；返回新建子 step 的 id 字符串。
func (b *MCPBridge) RequestSubtask(ctx context.Context, parentACPSessionID uuid.UUID,
	phase string, prompt string, agentKindID *uuid.UUID) (string, error) {
	step, err := b.svc.RequestSubtask(ctx, parentACPSessionID, SubtaskInput{
		Phase:       project.Phase(phase),
		Prompt:      prompt,
		AgentKindID: agentKindID,
	})
	if err != nil {
		return "", err
	}
	return step.ID.String(), nil
}
