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.4.tar.gz (41.5 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.4-py3-none-any.whl (47.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: casfa_client-0.1.4.tar.gz
  • Upload date:
  • Size: 41.5 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.4.tar.gz
Algorithm Hash digest
SHA256 3e4c8d73bfd6cc34e17785ed6fe5ec5132ef4138c464ee5db3be15e6a9fcc900
MD5 9daeea1ae431a7bd2225bf619de2aa10
BLAKE2b-256 877842ce49623e81c71d47ed7820aa2288e13e93f5b4841ec7f4c2adaa15350d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: casfa_client-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 47.0 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 31e24bc65f02c519d0e71a359c7ea736e330b8a2df28b823e400d632e7deff6d
MD5 db54a80821e1babdb39985d53b1383cd
BLAKE2b-256 67ebd3bc7100e14d541384b91b65a64ffda2224728d2ab72cca68f471970c4d0

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