Skip to main content

CASFA (Content-Addressable Storage for Agents) Python SDK

Project description

CASFA Python SDK

Python client for CASFA (Content-Addressable Storage for Agents).

Installation

pip install casfa-client

Quick Start

Agent Token Authentication

import asyncio
from casfa import create_casfa_client, CasfaClientConfig, TokenAuthConfig

async def main():
    # Create client with agent token
    client = create_casfa_client(CasfaClientConfig(
        base_url="https://casfa.example.com",
        auth=TokenAuthConfig(type="token", token="casfa_xxx"),
        realm_id="user:ABC123",
    ))

    # Get realm usage
    result = await client.realm.get_usage()
    if result.ok:
        print(f"Nodes: {result.data.node_count}")
        print(f"Bytes: {result.data.total_bytes}")
    else:
        print(f"Error: {result.error.message}")

    # List depots
    result = await client.depots.list()
    if result.ok:
        for depot in result.data.items:
            print(f"Depot: {depot.title} (v{depot.version})")

    await client.close()

asyncio.run(main())

Ticket Authentication

from casfa import create_casfa_client, CasfaClientConfig, TicketAuthConfig

async def process_with_ticket(ticket_id: str):
    client = create_casfa_client(CasfaClientConfig(
        base_url="https://casfa.example.com",
        auth=TicketAuthConfig(type="ticket", ticket_id=ticket_id),
    ))

    # Read nodes allowed by ticket scope
    result = await client.nodes.get(key="node:abc123...")
    if result.ok:
        data = result.data  # bytes
        # Process data...

    # Commit output
    result = await client.tickets.commit(
        ticket_id=ticket_id,
        output="node:result123...",
    )

    await client.close()

API Reference

Client Creation

from casfa import create_casfa_client, CasfaClientConfig

client = create_casfa_client(CasfaClientConfig(
    base_url="https://casfa.example.com",
    auth=auth_config,  # TokenAuthConfig, TicketAuthConfig, etc.
    realm_id="user:ABC123",  # Optional
))

API Namespaces

Namespace Description
client.oauth OAuth/Cognito authentication
client.auth AWP clients and Agent tokens
client.admin Admin user management
client.mcp MCP JSON-RPC tool calls
client.realm Realm info and usage
client.tickets Ticket management
client.depots Depot management
client.nodes Node storage operations

Result Pattern

All API methods return FetchResult[T]:

result = await client.tickets.create(...)

if result.ok:
    ticket = result.data  # TicketInfo
    print(ticket.ticket_id)
else:
    error = result.error  # CasfaError
    print(f"Error: {error.code} - {error.message}")

Authentication Types

Type Config Header
Agent Token TokenAuthConfig AgentToken {token}
Ticket TicketAuthConfig Ticket {ticketId}
User OAuth UserAuthConfig Bearer {accessToken}
P256 (AWP) P256AuthConfig X-AWP-* headers

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Type check
mypy casfa

# Lint
ruff check casfa

License

MIT

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

casfa_client-0.1.5.tar.gz (41.8 kB view details)

Uploaded Source

Built Distribution

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

casfa_client-0.1.5-py3-none-any.whl (47.3 kB view details)

Uploaded Python 3

File details

Details for the file casfa_client-0.1.5.tar.gz.

File metadata

  • Download URL: casfa_client-0.1.5.tar.gz
  • Upload date:
  • Size: 41.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for casfa_client-0.1.5.tar.gz
Algorithm Hash digest
SHA256 140e9ea70a261eb6dfb1d9f8d2336a2c96f82db1badd2d607473299cac1db7cf
MD5 aacbe7eebcdba477426e3a75b9629ef7
BLAKE2b-256 19ad2d5d3eab2e247098d8dc3d8b6302e43510980743bc19978175ca687db4ae

See more details on using hashes here.

File details

Details for the file casfa_client-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: casfa_client-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 47.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for casfa_client-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0bba2ef84f2130adf7cb72f7b0029ae758000adf5bbe4e1cc983ea98bd5e8b35
MD5 4c64737191af364ef6c5d0e203b1710d
BLAKE2b-256 84828ca879a0aa9266f4e42b673b314d4f9dd2968a403e5129b76f77c7ac1923

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