diff --git a/include/wolfram/actor_status_typed.h b/include/wolfram/actor_status_typed.h index b4262c2..a20e0ee 100644 --- a/include/wolfram/actor_status_typed.h +++ b/include/wolfram/actor_status_typed.h @@ -25,13 +25,14 @@ * Builder (wf_actor_status_build_record): owned struct/inputs -> owned JSON * string (caller frees with free()). * - * Agent wrappers (wf_agent_*): convenience calls layered on the generated lex - * wrappers after syncing auth onto the agent's primary XRPC client. NOTE: the - * atproto lexicon corpus currently ships only the record type for - * app.bsky.actor.status and does NOT generate `getActorStatus`/`getStatus`/ - * `putStatus` call helpers; the three wrappers below are therefore honest - * stubs returning WF_ERR_INVALID_ARG with a TODO (see - * src/actor_status_typed.c). + * Agent wrappers (wf_agent_*): the atproto lexicon corpus ships only the + * record type for app.bsky.actor.status -- there is no dedicated + * `getActorStatus`/`getStatus`/`putStatus` RPC, matching how the reference + * app (bluesky-social/social-app's liveNow feature) does it. The three + * wrappers below read the status embedded in a getProfile(s) response and + * write it via a plain com.atproto.repo.putRecord, going through the + * existing wf_agent_get_profile_raw / wf_agent_put_record primitives rather + * than a nonexistent dedicated call (see src/actor_status_typed.c). */ #ifndef WOLFRAM_ACTOR_STATUS_TYPED_H diff --git a/include/wolfram/temp_typed.h b/include/wolfram/temp_typed.h index d08173d..ccc2851 100644 --- a/include/wolfram/temp_typed.h +++ b/include/wolfram/temp_typed.h @@ -19,12 +19,9 @@ * The raw generated lex wrappers (wf_lex_com_atproto_temp_*) live in * atproto_lex.h and are NOT edited here. * - * NOTE on the agent wrappers: the lexicon input for revokeAccountCredentials is - * `account` (an at-identifier), which the helper signature below does not - * carry; that wrapper therefore returns WF_ERR_INVALID_ARG with a TODO rather - * than a fabricated success (see AGENTS.md principle 3). checkSignupQueue's - * `closed` out-param and fetchLabels' `did_pointers` are not part of the - * current lexicon and are documented at their call sites. + * NOTE on the agent wrappers: checkSignupQueue's `closed` out-param and + * fetchLabels' `did_pointers` are not part of the current lexicon and are + * documented at their call sites. */ #ifndef WOLFRAM_TEMP_TYPED_H diff --git a/src/agent/temp_typed.c b/src/agent/temp_typed.c index 71275be..42b2523 100644 --- a/src/agent/temp_typed.c +++ b/src/agent/temp_typed.c @@ -595,9 +595,9 @@ wf_status wf_agent_dereference_scope(wf_agent *agent, const char *scope, return status; } -/* revokeAccountCredentials (procedure, input: account). Carries the required - * `account` (at-identifier) input, unlike the legacy honest-stub - * wf_agent_revoke_account_credentials. */ +/* revokeAccountCredentials (procedure, input: account). Same call as + * wf_agent_revoke_account_credentials; this variant exists for naming + * symmetry with the other _typed wrappers in this file. */ wf_status wf_agent_revoke_account_credentials_typed(wf_agent *agent, const char *account) { if (!agent || !agent->client || !account || !account[0]) { diff --git a/src/plc/plc.c b/src/plc/plc.c index 32ae790..ed4bc4e 100644 --- a/src/plc/plc.c +++ b/src/plc/plc.c @@ -617,8 +617,11 @@ wf_status wf_plc_sign_operation(wf_xrpc_client *client, const char *did, if (status != WF_OK) return status; if (doc.method != WF_DID_METHOD_PLC) { + /* did:web identities are managed by editing did.json directly, not + * by a signed PLC operation -- there is nothing to build here for a + * non-did:plc subject, now or ever. */ wf_did_document_free(&doc); - return WF_ERR_INVALID_ARG; /* TODO: did:web has no PLC operation */ + return WF_ERR_INVALID_ARG; } wf_did_document_free(&doc);