FSharp.ATProto.DRISL
0.1.0
See the version list below for details.
dotnet add package FSharp.ATProto.DRISL --version 0.1.0
NuGet\Install-Package FSharp.ATProto.DRISL -Version 0.1.0
<PackageReference Include="FSharp.ATProto.DRISL" Version="0.1.0" />
<PackageVersion Include="FSharp.ATProto.DRISL" Version="0.1.0" />
<PackageReference Include="FSharp.ATProto.DRISL" />
paket add FSharp.ATProto.DRISL --version 0.1.0
#r "nuget: FSharp.ATProto.DRISL, 0.1.0"
#:package FSharp.ATProto.DRISL@0.1.0
#addin nuget:?package=FSharp.ATProto.DRISL&version=0.1.0
#tool nuget:?package=FSharp.ATProto.DRISL&version=0.1.0
<p align="center"> <img src="docs/assets/header.svg" alt="FSharp.ATProto" width="400"/> </p>
<p align="center"> <a href="https://github.com/Arrow7000/atproto-fsharp/actions/workflows/ci.yml"><img src="https://github.com/Arrow7000/atproto-fsharp/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <img src="https://img.shields.io/badge/.NET-10.0-512BD4?logo=dotnet" alt=".NET 10"> <img src="https://img.shields.io/badge/tests-1%2C761-brightgreen" alt="Tests: 1,761"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License: MIT"></a> </p>
<p align="center"> A native F# library for <a href="https://bsky.app">Bluesky</a> and the <a href="https://atproto.com">AT Protocol</a>. <br/> Built from the ground up in F#. No C# wrappers. Functional-first. </p>
open FSharp.ATProto.Bluesky
taskResult {
let! agent = Bluesky.login "https://bsky.social" "my-handle.bsky.social" "app-password"
let! post = Bluesky.post agent "Hello from F#! 🦋"
let! like = Bluesky.like agent post // PostRef -> LikeRef (the compiler prevents mix-ups)
let! reply = Bluesky.replyTo agent "Nice thread!" post // thread root resolved automatically
let! _ = Bluesky.undo agent like // generic undo — works on any ref type
return reply
}
// : Task<Result<PostRef, XrpcError>> — no exceptions, ever
Design
- If it compiles, it's correct -- distinct types for every domain concept (
PostRef,LikeRef,FollowRef,BlockRef...) mean the compiler catches your mistakes. - The library handles protocol complexity -- thread roots, rich text facets, chat proxy headers -- all resolved automatically.
- Results, not exceptions -- every public function returns
Result. Nofailwith, no try/catch. - Rich domain types --
PostRef,Profile,FeedItem,ConvoSummary,Page<'T>, and more. Plus convenience functions for search, bookmarks, muting, notifications, and moderation. - Generated from the spec -- 324 Lexicon schemas compiled to F# types + 237 typed XRPC endpoint wrappers.
Getting Started
See the Quickstart to get up and running in 5 minutes.
Features
- Posts -- create, reply, quote, delete, with automatic rich text detection (guide)
- Rich text -- mentions, links, and hashtags detected and resolved automatically (guide)
- Images -- upload and attach with typed
ImageMimeand alt text (guide) - Social graph -- follow, block, like, repost, mute, with typed refs and generic undo (guide)
- Feeds -- timeline, author feed, actor likes, bookmarks (guide)
- Profiles -- get, search, typeahead, batch fetch, upsert (guide)
- Chat / DMs -- conversations, messages, reactions, with automatic proxy headers (guide)
- Notifications -- fetch, count unread, mark seen (guide)
- Moderation -- report content, mute threads and mod lists (guide)
- Identity -- DID resolution, handle verification, PDS discovery (guide)
- Pagination -- lazy
IAsyncEnumerablepaginators for timeline, followers, notifications (guide) - Full XRPC access -- all 237 Bluesky endpoints available as typed wrappers (guide)
Documentation
- Quickstart -- zero to first post
- Build a Bot -- end-to-end tutorial
- Concepts -- AT Protocol terms explained (DID, Handle, AT-URI, PDS, Lexicon)
- Guides -- posts, social, feeds, profiles, media, chat, notifications, moderation, rich text, identity, error handling, pagination, raw XRPC
Building & Testing
Requires .NET 10 SDK.
dotnet build && dotnet test
1,761 tests across six projects.
AI Transparency
This project was built with heavy use of AI coding assistants, mostly Claude Opus 4.6.
To ensure correctness the project validates against ground truth at every layer:
- Syntax parsing -- tested against the official AT Protocol interop test vectors (valid and invalid inputs for DIDs, Handles, NSIDs, TIDs, AT-URIs, and more)
- CBOR & CID -- tested against the interop data-model fixtures (known JSON → CBOR → CID round-trips), plus property-based tests for encoding invariants
- Lexicon schemas -- all 324 real lexicon files from the official atproto repo are parsed and validated; the code generator is tested against them
- Rich text -- property-based tests verify byte-range correctness and facet ordering
- XRPC / Bluesky -- tested via mock HTTP handlers that verify request construction, multi-step orchestration (e.g. thread root resolution), error handling, and domain type mapping (note: the mocks don't validate against real Bluesky API responses -- that contract is covered by the generated types matching the lexicon schemas above)
All told, 1,761 tests across six projects, with zero reliance on manual testing or live API calls.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.ATProto.Syntax (>= 0.1.0)
- FSharp.Core (>= 10.0.103)
- System.Formats.Cbor (>= 9.0.3)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on FSharp.ATProto.DRISL:
| Package | Downloads |
|---|---|
|
FSharp.ATProto.Core
XRPC client, session authentication, rate limiting, and cursor-based pagination for the AT Protocol. |
|
|
FSharp.ATProto.Bluesky
Native F# client for Bluesky and the AT Protocol. Type-safe, functional-first, exception-free. Posts, social graph, chat, feeds, profiles, notifications, moderation, and full XRPC access via 237 typed endpoint wrappers generated from 324 Lexicon schemas. |
|
|
FSharp.ATProto.Streaming
Jetstream event streaming client for the AT Protocol. |
|
|
FSharp.ATProto.Repo
AT Protocol repository data structures: Merkle Search Tree (MST), signed commits, and CAR import/export. |
GitHub repositories
This package is not used by any popular GitHub repositories.