Lexicons#
The protocol nucleus: two lexicons built around the (verb, subject, handler)
triple, with a delivery field that decides whether a capability is actionable
at all.
dev/at-intent/capability.json— the per-app descriptor. Authored once by the app, stored in the app's own authority repo, one record per capability.dev/at-intent/usage.json— the per-user discovery signal, written into the user's repo by the app.
See ../docs/overview.md for the model and
../docs/capability-spec.md for a field-by-field
reference.
Namespace#
These use dev.at-intent.* (authority domain at-intent.dev) as a working
namespace; the likely long-term home is community.lexicon.*. The NSIDs are
defined in exactly two places — these files' id fields and
../tools/lib/nsid.mjs — so re-homing is mechanical.
delivery — the one design move worth knowing#
A "Save to X" capability can look like a zero-cost reader and silently not work,
because some apps' canonical store is their own backend, not the PDS. A record
written to the user's repo never reaches them. So delivery is not an
afterthought — it decides whether a capability is actionable:
delivery |
Meaning | produces |
scope |
|---|---|---|---|
passive |
Handler reads a primitive already in the repo; consumer writes nothing. | empty | none |
repo |
Consumer writes the produced record(s); handler reads them. | the record(s) | include:<nsid> |
service |
Consumer must call endpoint; a PDS write won't reach the handler. |
empty | none |