Content-Addressed Capability Manifest

content-addressed-capability-manifest · discovery-registry · 561 B runtime · registry-info

scores

source

pragma solidity ^0.8.13;

contract CapabilityRegistry {
    mapping(address => bytes32) private manifestDigest;
    mapping(address => uint32) private capabilities;

    function publish(bytes32 digest, uint32 caps) external {
        manifestDigest[msg.sender] = digest;
        capabilities[msg.sender] = caps;
    }

    function resolve(address agent) external view returns (bytes32 digest, uint32 caps) {
        digest = manifestDigest[agent];
        caps = capabilities[agent];
    }

    function hasCapability(address agent, uint32 required) external view returns (bool supported) {
        supported = manifestDigest[agent] != 0 && (capabilities[agent] & required) == required;
    }
}