A human-friendly DSL for ATProto Lexicons
26
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add mlf-plugin-host + mlf-dns-cloudflare #10

open opened by stavola.xyz targeting main from feat/publishing

Create the subprocess plugin protocol and the runtime that drives plugins from the host side. Line-delimited JSON over stdin/stdout: hello handshake (with options_schema, capabilities), init (for host-assembled credentials), typed ops per plugin kind, and a multi-turn ask/answer/ack mechanism for flows that can't reduce to a simple schema (OAuth device codes, magic-link confirmations). The host does capability gating before sending ops and refuses ask messages under a DenyInteractiveUi for --non-interactive callers.

Plugin-side scaffolding lives in plugin.rs as a small Server that binds to stdio and wraps the per-message bookkeeping, so individual plugins implement only their op dispatch.

Ship mlf-dns-cloudflare as the first real plugin — a binary that translates the five DNS ops (login/resolve_zone/list_txt/upsert_txt/ delete_txt) into Cloudflare API calls via reqwest. Options schema is one secret field, api_token. Zone lookup walks parent domains so _lexicon.forum.example.com finds the example.com zone automatically.

End-to-end tests use tokio::io::duplex pipes to wire a Server and a PluginHandle to each other in-process and cover the handshake, capability gating, happy-path round-trips, multi-turn flows, non-interactive refusal, and early-exit handling.

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:tahmjtpwnkuhopngqe5q7jp2/sh.tangled.repo.pull/3mjqnd22z3t22
Diff #0

No differences found between the selected revisions.

History

1 round 0 comments
sign up or login to add to the discussion
stavola.xyz submitted #0
patch application failed: error: No valid patches in input (allow with "--allow-empty")
expand 0 comments