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

Method networkSend

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

Source from the content-addressed store, hash-verified

1424}
1425
1426func (n *daemonNativeTools) networkSend(
1427 ctx context.Context,
1428 scope toolspkg.Scope,
1429 req toolspkg.CallRequest,
1430) (toolspkg.ToolResult, error) {
1431 var input networkSendInput
1432 if err := decodeNativeInput(req, &input); err != nil {
1433 return toolspkg.ToolResult{}, err
1434 }
1435 bound, err := n.nativeBoundSession(ctx, scope)
1436 if err != nil {
1437 return toolspkg.ToolResult{}, err
1438 }
1439 channel := strings.TrimSpace(input.Channel)
1440 if !nativeBoundSessionAllowsChannel(bound, channel) {
1441 return toolspkg.ToolResult{}, nativeBoundChannelDenied(req.ToolID, channel)
1442 }
1443 sessionID := nativeBoundSessionID(bound, input.SessionID, req.SessionID, scope.SessionID)
1444 resolved, err := n.nativeResolvedWorkspace(
1445 ctx,
1446 req.ToolID,
1447 nativeBoundWorkspaceRef(bound, input.WorkspaceID),
1448 scope,
1449 )
1450 if err != nil {
1451 return toolspkg.ToolResult{}, err
1452 }
1453 workspaceID, err := nativeResolvedNetworkWorkspaceID(&resolved)
1454 if err != nil {
1455 return toolspkg.ToolResult{}, nativeNetworkInputError(req.ToolID, err)
1456 }
1457 sessionWorkspaceID, err := nativeResolvedRegistryWorkspaceID(&resolved)
1458 if err != nil {
1459 return toolspkg.ToolResult{}, nativeNetworkInputError(req.ToolID, err)
1460 }
1461 if err := n.requireNativeSessionWorkspace(ctx, req.ToolID, sessionWorkspaceID, sessionID); err != nil {
1462 return toolspkg.ToolResult{}, err
1463 }
1464 sendReq, err := core.NetworkSendRequestFromPayload(contract.NetworkSendRequest{
1465 WorkspaceID: workspaceID,
1466 SessionID: sessionID,
1467 Channel: channel,
1468 Surface: strings.TrimSpace(input.Surface),
1469 ThreadID: strings.TrimSpace(input.ThreadID),
1470 DirectID: strings.TrimSpace(input.DirectID),
1471 Kind: strings.TrimSpace(input.Kind),
1472 To: strings.TrimSpace(input.To),
1473 Mentions: cloneTrimmedStrings(input.Mentions),
1474 Body: cloneJSON(input.Body),
1475 WorkID: strings.TrimSpace(input.WorkID),
1476 ReplyTo: strings.TrimSpace(input.ReplyTo),
1477 TraceID: strings.TrimSpace(input.TraceID),
1478 CausationID: strings.TrimSpace(input.CausationID),
1479 ExpiresAt: input.ExpiresAt,
1480 ID: strings.TrimSpace(input.ID),
1481 Ext: map[string]json.RawMessage(cloneExtensionMap(input.Ext)),
1482 })
1483 if err != nil {

Callers

nothing calls this directly

Tested by

no test coverage detected