(lang dune 3.20) (name atproto) (version 0.1.2) (generate_opam_files true) (source ; (tangled @gdiazlo.tngl.sh/atproto) (uri git+https://tangled.org/gdiazlo.tngl.sh/atproto)) (authors "Gabriel Díaz") (maintainers "Gabriel Díaz") (license ISC) (homepage https://tangled.org/gdiazlo.tngl.sh/atproto) (bug_reports https://tangled.org/gdiazlo.tngl.sh/atproto/issues) (documentation https://tangled.org/gdiazlo.tngl.sh/atproto) ; Foundation packages (package (name atproto-multibase) (synopsis "Base encoding utilities for AT Protocol") (description "Multibase encoding/decoding including base32-sortable for TIDs and base58btc for did:key") (depends (ocaml (>= 5.4)) (alcotest :with-test)) (tags (atproto encoding multibase base32 base58))) (package (name atproto-syntax) (synopsis "Syntax validation for AT Protocol identifiers") (description "Parser-based validation for handles, DIDs, NSIDs, TIDs, AT-URIs, and other AT Protocol syntax") (depends (ocaml (>= 5.4)) (atproto-multibase (= :version)) (alcotest :with-test)) (tags (atproto syntax parser validation))) (package (name atproto-crypto) (synopsis "Cryptographic operations for AT Protocol") (description "P-256 and K-256 elliptic curve support with low-S normalization, did:key encoding") (depends (ocaml (>= 5.4)) (atproto-multibase (= :version)) (atproto-json (= :version)) (mirage-crypto-ec (>= 2.0.2)) (mirage-crypto-rng (>= 2.0.2)) (digestif (>= 1.0)) (zarith (>= 1.12)) (alcotest :with-test)) (tags (atproto crypto ecdsa))) ; Data layer packages (package (name atproto-ipld) (synopsis "IPLD support for AT Protocol") (description "Content Identifiers (CID) and DAG-CBOR encoding for AT Protocol") (depends (ocaml (>= 5.4)) (atproto-multibase (= :version)) (atproto-json (= :version)) (digestif (>= 1.0)) (zarith (>= 1.12)) (cbor (>= 0.5)) (base64 (>= 3.5)) (alcotest :with-test)) (tags (atproto ipld cid dag-cbor))) (package (name atproto-mst) (synopsis "Merkle Search Tree for AT Protocol") (description "Content-addressed key-value storage for AT Protocol repositories") (depends (ocaml (>= 5.4)) (atproto-ipld (= :version)) (digestif (>= 1.0)) (alcotest :with-test)) (tags (atproto mst merkle repository))) (package (name atproto-repo) (synopsis "Repository support for AT Protocol") (description "Repository structure, commits, and record operations for AT Protocol") (depends (ocaml (>= 5.4)) (atproto-syntax (= :version)) (atproto-crypto (= :version)) (atproto-ipld (= :version)) (atproto-mst (= :version)) (digestif (>= 1.0)) (alcotest :with-test)) (tags (atproto repository commit signing))) (package (name atproto-lexicon) (synopsis "Lexicon schema support for AT Protocol") (description "Lexicon schema parsing and validation for AT Protocol") (depends (ocaml (>= 5.4)) (atproto-syntax (= :version)) (atproto-json (= :version)) (alcotest :with-test)) (tags (atproto lexicon schema))) ; Network layer packages (package (name atproto-json) (synopsis "JSON utilities for AT Protocol") (description "JSON wrapper used across AT Protocol packages (currently backed by simdjsont)") (depends (ocaml (>= 5.4)) (simdjsont (>= 0.1.0)) (alcotest :with-test)) (tags (atproto json simdjson))) (package (name atproto-xrpc) (synopsis "XRPC client/server for AT Protocol") (description "XRPC HTTP API protocol implementation for AT Protocol client-server communication") (depends (ocaml (>= 5.4)) (atproto-effects (= :version)) (atproto-syntax (= :version)) (atproto-lexicon (= :version)) (atproto-json (= :version)) (uri (>= 4.0)) (alcotest :with-test)) (tags (atproto xrpc api http))) ; Identity layer packages (package (name atproto-identity) (synopsis "DID and Handle resolution for AT Protocol") (description "DID and Handle resolution including did:plc, did:web, and DNS/HTTPS handle resolution") (depends (ocaml (>= 5.4)) (atproto-effects (= :version)) (atproto-syntax (= :version)) (atproto-crypto (= :version)) (atproto-json (= :version)) (uri (>= 4.0)) (alcotest :with-test)) (tags (atproto identity did handle resolution))) ; Sync layer packages (package (name atproto-sync) (synopsis "Repository sync and event streams for AT Protocol") (description "Firehose event stream client and repository synchronization for AT Protocol") (depends (ocaml (>= 5.4)) (atproto-effects (= :version)) (atproto-syntax (= :version)) (atproto-ipld (= :version)) (uri (>= 4.0)) (alcotest :with-test)) (tags (atproto sync firehose websocket))) ; High-level API package (package (name atproto-api) (synopsis "High-level API client for AT Protocol") (description "User-friendly API client for AT Protocol with session management, posting, and social actions") (depends (ocaml (>= 5.4)) (atproto-syntax (= :version)) (atproto-xrpc (= :version)) (atproto-identity (= :version)) (atproto-ipld (= :version)) (atproto-json (= :version)) (uri (>= 4.0)) (alcotest :with-test)) (tags (atproto bluesky api client))) ; Effects abstraction package (package (name atproto-effects) (synopsis "Effects-based I/O abstraction for AT Protocol") (description "Unified effect types for HTTP, DNS, WebSocket, time, and random operations. Allows libraries to be runtime-agnostic.") (depends (ocaml (>= 5.4)) (uri (>= 4.0)) (ptime (>= 1.0)) (alcotest :with-test)) (tags (atproto effects io abstraction))) ; Main package (umbrella) (package (name atproto) (synopsis "AT Protocol implementation in OCaml") (description "Complete AT Protocol implementation including syntax validation, cryptography, IPLD, and identity resolution") (depends (ocaml (>= 5.4)) (atproto-multibase (= :version)) (atproto-syntax (= :version)) (atproto-crypto (= :version)) (atproto-ipld (= :version)) (atproto-mst (= :version)) (atproto-repo (= :version)) (atproto-json (= :version)) (atproto-lexicon (= :version)) (atproto-effects (= :version)) (atproto-xrpc (= :version)) (atproto-identity (= :version)) (atproto-sync (= :version)) (atproto-api (= :version)) (odoc :with-doc)) (tags (atproto bluesky decentralized)))