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

Method agentHeartbeatStatus

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

Source from the content-addressed store, hash-verified

2064}
2065
2066func (n *daemonNativeTools) agentHeartbeatStatus(
2067 ctx context.Context,
2068 _ toolspkg.Scope,
2069 req toolspkg.CallRequest,
2070) (toolspkg.ToolResult, error) {
2071 var input agentHeartbeatStatusInput
2072 if err := decodeNativeInput(req, &input); err != nil {
2073 return toolspkg.ToolResult{}, err
2074 }
2075 target, err := n.authoredAgentTarget(ctx, req.ToolID, input.WorkspaceID, input.AgentName)
2076 if err != nil {
2077 return toolspkg.ToolResult{}, err
2078 }
2079 sessionID := strings.TrimSpace(input.SessionID)
2080 if sessionID != "" {
2081 if _, err := n.nativeSessionInWorkspace(ctx, req.ToolID, target.workspaceID, sessionID); err != nil {
2082 return toolspkg.ToolResult{}, err
2083 }
2084 }
2085 status, err := n.deps.HeartbeatStatus.Status(ctx, heartbeat.StatusRequest{
2086 Target: target.heartbeatAuthoringTarget(),
2087 SessionID: sessionID,
2088 IncludeSessionHealth: input.IncludeSessionHealth,
2089 })
2090 if err != nil {
2091 return toolspkg.ToolResult{}, err
2092 }
2093 payload, err := contract.HeartbeatStatusResponseFromResult(&status)
2094 if err != nil {
2095 return toolspkg.ToolResult{}, err
2096 }
2097 if input.IncludeRecentWakeEvents && n.deps.WakeEvents != nil {
2098 events, err := n.deps.WakeEvents.ListHeartbeatWakeEvents(ctx, heartbeat.WakeEventListQuery{
2099 WorkspaceID: target.workspaceID,
2100 AgentName: target.agentName,
2101 SessionID: sessionID,
2102 Limit: defaultNativeWakeEventLimit,
2103 })
2104 if err != nil {
2105 return toolspkg.ToolResult{}, err
2106 }
2107 payload.WakeEvents = make([]contract.HeartbeatWakeEventPayload, 0, len(events))
2108 for _, event := range events {
2109 converted, convertErr := contract.HeartbeatWakeEventPayloadFromDomain(event)
2110 if convertErr != nil {
2111 return toolspkg.ToolResult{}, convertErr
2112 }
2113 payload.WakeEvents = append(payload.WakeEvents, converted)
2114 }
2115 }
2116 if err := contract.ValidateAuthoredContextRedacted(payload); err != nil {
2117 return toolspkg.ToolResult{}, err
2118 }
2119 return structuredResult(map[string]any{"heartbeat": payload}, string(payload.ValidationStatus))
2120}
2121
2122func (n *daemonNativeTools) agentHeartbeatWake(
2123 ctx context.Context,

Callers

nothing calls this directly

Calls 8

authoredAgentTargetMethod · 0.95
decodeNativeInputFunction · 0.85
appendFunction · 0.85
structuredResultFunction · 0.85
StatusMethod · 0.65

Tested by

no test coverage detected