Skip to content

/experimental/resource endpoint ignores ResourceAccess Protocol (list_resources) #307

Description

@Leoyzen

Problem

The /experimental/resource endpoint in agent_routes.py only checks for the legacy _ResourceProviding Protocol (get_resources() method). It does NOT check for the ResourceAccess Protocol (list_resources() method).

This means capabilities that implement ResourceAccess (like VikingCapability and McpServerCap) don't appear in the OpenCode TUI's @ mention resource list.

Affected Code

File: src/agentpool_server/opencode_server/routes/agent_routes.py

# Current — only checks get_resources():
@runtime_checkable
class _ResourceProviding(Protocol):
    async def get_resources(self) -> Any: ...

for cap in caps:
    if isinstance(cap, _ResourceProviding):
        coros.append(cap.get_resources())

Only FunctionToolsetCapability implements get_resources(). Both McpServerCap and VikingCapability implement list_resources() (ResourceAccess Protocol), not get_resources().

Fix

Also check for ResourceAccess Protocol and include those resources. ResourceEntry objects from list_resources() lack a .client field, so use the capability class name as the client identifier.

@runtime_checkable
class _ResourceProviding(Protocol):
    async def get_resources(self) -> Any: ...

@runtime_checkable
class _ResourceAccess(Protocol):
    async def list_resources(self) -> Any: ...

for cap in caps:
    if isinstance(cap, _ResourceProviding):
        coros.append(cap.get_resources())
        caps_with_resources.append(cap)
    elif isinstance(cap, _ResourceAccess):
        coros.append(cap.list_resources())
        caps_with_resources.append(cap)

# When processing results:
client = getattr(resource, "client", None) or type(cap).__name__

Impact

Affects all ResourceAccess implementations — currently McpServerCap and VikingCapability. MCP server resources also don't show in the @ list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions