Skip to main content

AgentMesh adapter for structural authorization gates — consumes external policy decisions, trust grades, and delegation scope chains as AGT trust signals

Project description

Structural Authorization Gates — AgentMesh Adapter

AgentMesh adapter that consumes external policy decisions, trust grades, and delegation scope chains as AGT trust signals. Provides Ed25519 signature verification for incoming trust artifacts.

Features

  • TrustGrade: Six-level external grade enum (VERIFIEDREVOKED) mapped to AGT scores (0–1000)
  • TrustArtifact: Signed external policy decision with Ed25519 verification and canonical JSON payload
  • DelegationChain: Multi-hop scope chain validation (contiguity, scope narrowing, cycle detection, expiry)
  • AuthzGate: Trust-gated task authorization consuming artifacts and delegation chains
  • TrustTracker: Tracks agent trust scores from external authorization outcomes

Installation

# Without cryptographic verification (limited — verify_signature() returns False)
pip install structural-authz-agentmesh

# With Ed25519 signing and verification (recommended)
pip install 'structural-authz-agentmesh[crypto]'

Quick Start

from datetime import datetime, timedelta, timezone
from structural_authz_agentmesh import (
    AgentProfile, AuthzGate, TrustArtifact, TrustGrade, generate_keypair,
)

# Generate keys (dev/test only — use your PKI in production)
authority_priv, authority_pub = generate_keypair()

# Define an agent
agent = AgentProfile(
    did="did:authz:analyst",
    name="Data Analyst",
    capabilities=["read:data", "analyze:reports"],
    trust_score=700,
)

# Issue a signed trust artifact from your external authority
artifact = TrustArtifact.sign(
    did=agent.did,
    grade=TrustGrade.TRUSTED,
    scopes=["read:data", "analyze:reports"],
    expires_at=datetime.now(timezone.utc) + timedelta(hours=8),
    private_key_b64=authority_priv,
    issuer_public_key_b64=authority_pub,
    issuer_id="my-policy-authority",
)

# Evaluate authorization
gate = AuthzGate(min_trust_score=500)
decision = gate.evaluate(
    agent=agent,
    task="Generate quarterly report",
    artifact=artifact,
    required_scopes=["read:data", "analyze:reports"],
)

print(decision.allowed)   # True
print(decision.artifact_grade)  # TrustGrade.TRUSTED

Delegation Scope Chains

from structural_authz_agentmesh import DelegationChain, DelegationLink

chain = DelegationChain(
    root_did="did:authz:analyst",
    root_scopes=["read:data", "analyze:reports"],
)

link = DelegationLink(
    delegator_did="did:authz:analyst",
    delegatee_did="did:authz:sub-analyst",
    scopes=["read:data"],          # must be a subset of root scopes
    delegator_public_key=analyst_pub,
    signature="...",               # Ed25519 signature from delegator
    expires_at=datetime.now(timezone.utc) + timedelta(hours=2),
)
chain.add_link(link)

valid, reason = chain.validate(required_scopes=["read:data"])

Trust Score Tracking

from structural_authz_agentmesh import TrustTracker

tracker = TrustTracker(success_reward=10, failure_penalty=50)
tracker.record_success(agent, task="Generate quarterly report")
tracker.record_failure(agent, task="Delete records", reason="Unauthorized scope")

history = tracker.get_history(did=agent.did)

Trust Grade → AGT Score Mapping

Grade AGT Score Meaning
VERIFIED 950 Fully attested, cryptographically proven
TRUSTED 750 Policy-approved, no flags
PROVISIONAL 500 Conditionally approved, pending attestation
RESTRICTED 300 Allowed but scope-limited
UNTRUSTED 100 Policy denied
REVOKED 0 Previously trusted, now invalidated — always blocked

Running Tests

pip install -e '.[dev]'
pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

structural_authz_agentmesh-3.6.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structural_authz_agentmesh-3.6.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file structural_authz_agentmesh-3.6.0.tar.gz.

File metadata

File hashes

Hashes for structural_authz_agentmesh-3.6.0.tar.gz
Algorithm Hash digest
SHA256 e56120db582c714ab157e9ff21d7b48fe1d1cf1e94e6e462c452e85733f77dac
MD5 6b470310f3f174864b11ee4244e31f22
BLAKE2b-256 8ffd83382d8179f5e3140c7f4450ff1c6b320b7bd9e9e37c73f3f19e4f0fe258

See more details on using hashes here.

File details

Details for the file structural_authz_agentmesh-3.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for structural_authz_agentmesh-3.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4212f234413286fb908b3531043a41ce105ab2d125071c5f9c71361739a855ab
MD5 fcbf6e7bd31f89bbe7bff8151a9539ad
BLAKE2b-256 1d34b04e236af9c7cf27bd5de4b4ee97d9eb10ee3eaa5381aab33e00a356681e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page