( ctx context.Context, toolID toolspkg.ToolID, workspaceRef string, agentName string, )
| 3613 | } |
| 3614 | |
| 3615 | func (n *daemonNativeTools) authoredAgentTarget( |
| 3616 | ctx context.Context, |
| 3617 | toolID toolspkg.ToolID, |
| 3618 | workspaceRef string, |
| 3619 | agentName string, |
| 3620 | ) (nativeAuthoredAgentTarget, error) { |
| 3621 | workspaceID, err := requiredNativeString(toolID, "workspace_id", workspaceRef) |
| 3622 | if err != nil { |
| 3623 | return nativeAuthoredAgentTarget{}, err |
| 3624 | } |
| 3625 | name, err := requiredNativeString(toolID, "agent_name", agentName) |
| 3626 | if err != nil { |
| 3627 | return nativeAuthoredAgentTarget{}, err |
| 3628 | } |
| 3629 | if n.deps.WorkspaceResolver == nil { |
| 3630 | return nativeAuthoredAgentTarget{}, errors.New("daemon: workspace resolver is required") |
| 3631 | } |
| 3632 | resolved, err := n.deps.WorkspaceResolver.Resolve(ctx, workspaceID) |
| 3633 | if err != nil { |
| 3634 | return nativeAuthoredAgentTarget{}, err |
| 3635 | } |
| 3636 | root := strings.TrimSpace(resolved.RootDir) |
| 3637 | if root == "" { |
| 3638 | return nativeAuthoredAgentTarget{}, workspacepkg.ErrWorkspaceRootMissing |
| 3639 | } |
| 3640 | resolvedWorkspaceID, err := nativeResolvedNetworkWorkspaceID(&resolved) |
| 3641 | if err != nil { |
| 3642 | return nativeAuthoredAgentTarget{}, err |
| 3643 | } |
| 3644 | return nativeAuthoredAgentTarget{ |
| 3645 | workspaceID: resolvedWorkspaceID, |
| 3646 | workspaceRoot: root, |
| 3647 | agentName: name, |
| 3648 | agentPath: nativeAuthoredAgentPath(&resolved, name), |
| 3649 | heartbeatConfig: resolved.Config.Agents.Heartbeat, |
| 3650 | }, nil |
| 3651 | } |
| 3652 | |
| 3653 | func (t nativeAuthoredAgentTarget) heartbeatAuthoringTarget() heartbeat.AuthoringTarget { |
| 3654 | return heartbeat.AuthoringTarget{ |
no test coverage detected