@muretai/agent-entry 1.6.2 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +16 -9
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -114,7 +114,7 @@ answers questions and hands off nothing, is a signed claim you cannot keep.
114
114
  | `domains` | none | the domains this entry speaks for (see below) |
115
115
  | `basePath` | from `baseUrl` | the path this entry answers at, derived rather than set beside it |
116
116
  | `wbaVerifiers` | none | a JWKS document (`{"keys":[…]}`) of Ed25519 keys whose holders this entry should **recognise** on inbound signed requests (Web Bot Auth / RFC 9421 — see *Who is knocking*). Recognition only adds `env.wba_did` and a visit count; it never changes a verdict |
117
- | `observer` | none | called once per message with the same envelope your responder gets, **after** the verdict — for counting, logging, analytics. It cannot matter: its return is discarded, a throw is swallowed, a promise is never awaited, so a slow or broken watcher cannot delay or change one byte of the signed reply. See [Counting visits](#counting-visits-without-handing-over-who-they-are) |
117
+ | `observer` | none | called once per message with the same envelope your responder gets, **after** the verdict — for counting, logging, analytics. It cannot matter: its return is discarded, a throw is swallowed, a promise is never awaited, so a slow or broken watcher cannot delay or change one byte of the signed reply. See [Counting visits](#counting-visits-without-handing-over-your-customer-list) |
118
118
  | `howToUrl` | none | a page a keyless visitor is pointed at as a worked example. **Empty means omitted** — the refusal already teaches the whole recipe without it, and a reference implementation must not stamp somebody else's docs host into every door built from it. Only set it to a URL you operate, and only after checking it resolves |
119
119
  | `name`, `description`, `version` | — | the card's own words. `description` is the line a person reads in a directory listing — and the right place to say what you record about visitors, since it is fetched **before** the knock |
120
120
 
@@ -534,8 +534,8 @@ and it is not one. It is the upgrade path:
534
534
  ledger back to gate, greet or rate-limit, so a fire-and-forget sink records visiting
535
535
  agents with no database anywhere. Use `observer` for it, never your responder: watching
536
536
  a visit should not be an edit to the code that decides what to say. See
537
- [Counting visits](#counting-visits-without-handing-over-who-they-are) below for the
538
- whole pattern, including the one rule that shapes it — **a DID is not a page view**,
537
+ [Counting visits](#counting-visits-without-handing-over-your-customer-list) below for the
538
+ whole pattern, including the one rule that shapes it — **a DID is not a cookie**,
539
539
  so what leaves your box is a salted digest, never the identifier itself. A sink cannot
540
540
  be read back during a request: it counts customers, it cannot recognise one. It
541
541
  replaces a log line, not the store above — none of the recommended features stand
@@ -565,7 +565,7 @@ What the entry now handles for you at the HTTP layer, so you do not have to:
565
565
  which says a server must accept the absolute form: this endpoint answers exactly the
566
566
  address its card names, and the refusal says so.
567
567
 
568
- ## Counting visits without handing over who they are
568
+ ## Counting visits without handing over your customer list
569
569
 
570
570
  You will want to know how many agents knocked, how many came back, and what they asked. All
571
571
  three are answerable — and how you answer them decides whether you are counting your visitors
@@ -576,11 +576,18 @@ envelope, after the verdict, so watching a visit stops being an edit to the code
576
576
  what to say. It cannot matter: its return is discarded, a throw is swallowed, a promise is
577
577
  never awaited — a slow or broken watcher cannot delay or change one byte of the signed reply.
578
578
 
579
- **The rule that shapes everything else: a DID is not a page view.** A visitor hands you one in
580
- order to transact with **you**, and here first contact *is* the account there is no signup
581
- form where they agreed to anything else. Forwarding the raw value to an analytics vendor shares
582
- a durable identifier its owner never offered them, silently, on a surface with no consent
583
- dialog and no visitor who could decline. So split it:
579
+ **The rule that shapes everything else: a DID is not a cookie, and it is not a throwaway
580
+ either.** Nobody imposed it the visitor read your card *before* knocking, and an owner who
581
+ wanted this conversation kept apart would have sent a different agent, because an owner runs
582
+ several and each is a distinct agent with its own lasting identity. But the one that did knock
583
+ means to keep the key it used: that is how it gets recognised, introduced and trusted anywhere on
584
+ the network, so it is closer to a professional's name than to a tracking cookie.
585
+
586
+ Which is exactly why the raw value should not travel onward. **The DID is genuinely durable, and
587
+ you were given it so that YOU could reach them again.** Widen that purpose and nothing happens to
588
+ you legally, which is the part worth understanding: the owner simply stops sending that agent to
589
+ you. Silently, at no cost, and you never learn you lost them — not one data point, the whole
590
+ relationship. So split it:
584
591
 
585
592
  - **What leaves** — a salted digest and a few shape facts. Never the DID, never the text.
586
593
  - **What stays** — the relationship (who, how many, first and last seen) in your own store,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muretai/agent-entry",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Make your website answer AI agents: an A2A agent endpoint that verifies who is knocking, opens an account for them and replies signed, in one HTTP round trip. Zero dependencies. Pairs with llms.txt and WebMCP.",
5
5
  "type": "module",
6
6
  "main": "muretai-agent-entry.mjs",