[READ-ONLY] Mirror of https://github.com/ewanc26/wolfram. Primarily C AT Protocol SDK: client-side, wire-level implementation (XRPC, OAuth/DPoP, identity, repos/MST/CAR, firehose/Jetstream, moderation, CLI, generated clients). Not a port of the PDS/AppView/Ozone backends.
ansi-c api-client at-protocol atproto bluesky c c-sdk decentralized decentralized-social embedded lexicon libwolfram memory-management oauth2 posix sdk shared-library static-library systems-programming xrpc

fix(actor-status): parse statusView's createdAt/durationMinutes from record, implement agent wrappers master

wf_actor_status_parse_view read createdAt/durationMinutes at the top level of a statusView, but lexicons/app/bsky/actor/defs.json defines statusView.record as an opaque "unknown" blob holding the actual app.bsky.actor.status record -- a real AppView response never carries those two fields at the top level, so they were always left unset. wf_agent_get_actor_status/get_status/put_status were permanent honest stubs waiting for getActorStatus/getStatus/putStatus RPCs that do not exist in the reference and never will: bluesky-social/social-app's liveNow feature reads the status from an ordinary getProfile(s) response and writes it via a plain com.atproto.repo.putRecord (collection app.bsky.actor.status, rkey "self"). Implemented all three through the existing wf_agent_get_profile_raw/ wf_agent_put_record primitives instead. Added test_actor_status_typed_httpd.c (mock-PDS integration coverage for all three wrappers, including the no-live-status and record-nesting cases) since the prior stub-argument-validation tests exercised none of this. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LFuczSYk8BJUHJPZW7vogJ