registryFromDiscoveredLink function

Future<InMemoryAgentRegistry> registryFromDiscoveredLink(
  1. AgentLinkAnnouncement announcement
)

Registry whose handlers forward to a discovered owner.

Used by intentcall mcp serve --scheme. Calling a tool does not copy the owner's handler into this process.

Implementation

Future<InMemoryAgentRegistry> registryFromDiscoveredLink(
  final AgentLinkAnnouncement announcement,
) async {
  final tools = await listAgentWebSocketTools(
    uri: Uri.parse(announcement.websocket),
  );
  final registry = InMemoryAgentRegistry();
  for (final tool in tools) {
    final name = '${tool['name'] ?? ''}';
    if (name.isEmpty) {
      continue;
    }
    final parts = name.split('_');
    final namespace = parts.length > 1 ? parts.first : 'app';
    final bare = parts.length > 1 ? parts.skip(1).join('_') : name;
    final schema = tool['inputSchema'];
    registry.register(
      RegisteredAgentIntent(
        descriptor: AgentIntentDescriptor(
          namespace: namespace,
          name: bare,
          description: '${tool['description'] ?? name}',
          kind: AgentIntentKind.tool,
          inputSchema: schema is Map
              ? Map<String, Object?>.from(schema)
              : const <String, Object?>{'type': 'object'},
        ),
        execute: (final invocation) => invokeAgentWebSocket(
          uri: Uri.parse(announcement.websocket),
          envelope: IntentCallInvocationEnvelope(
            id: 'mcp-proxy-${DateTime.now().microsecondsSinceEpoch}',
            qualifiedName: name,
            arguments: invocation.arguments,
            source: IntentCallInvocationSource.websocket,
          ),
        ),
      ),
      qualifiedNameOverride: name,
    );
  }
  return registry;
}