@muretai/agent-entry 1.6.1 → 1.6.2
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.
- package/README.md +20 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -104,9 +104,12 @@ answers questions and hands off nothing, is a signed claim you cannot keep.
|
|
|
104
104
|
| option | default | what it does |
|
|
105
105
|
|---|---|---|
|
|
106
106
|
| `skills` | `[]` | the menu above — what a visitor learns before knocking |
|
|
107
|
-
| `openDoor` | `true` | publishes `
|
|
107
|
+
| `openDoor` | `true` | publishes `agentEntry.open_door`: the field that tells a visiting agent it may message you with no introduction. The same fact is emitted under the older `muretai.open_door` spelling beside it — read either, write the neutral one |
|
|
108
108
|
| `anonymousLane` | `false` | also answer **unsigned** inquiries. They create no account row, and the lane is capped entry-wide — an unauthenticated caller must never become an unmetered signing oracle |
|
|
109
|
-
| `anonRatePerMin` | `30` | anonymous replies per minute, entry-wide
|
|
109
|
+
| `anonRatePerMin` | `30` | anonymous replies per minute, entry-wide |
|
|
110
|
+
| `signedRatePerMin` | `60` | signed replies per minute **per account**, ON by default. Attribution is not scarcity: a `did:key` costs nothing to mint, so being in your ledger was never a bound |
|
|
111
|
+
| `signedRatePerMinTotal` | `600` | signed replies per minute for the **whole entry**. Free identity defeats per-identity metering by definition, so only the aggregate resists a flood |
|
|
112
|
+
| `guest` | `false` | put the door on a path of its own and leave `GET /` alone entirely — for a site that is keeping its front page. A `GET` on a guest mount answers **405 with `Allow: POST, OPTIONS`**, never 404: the address is signed into a public card, and hiding a published address conceals nothing |
|
|
110
113
|
| `maxAccounts` | `50000` | how many accounts the in-process ledger holds |
|
|
111
114
|
| `domains` | none | the domains this entry speaks for (see below) |
|
|
112
115
|
| `basePath` | from `baseUrl` | the path this entry answers at, derived rather than set beside it |
|
|
@@ -498,8 +501,10 @@ navigator.modelContext.registerTool({
|
|
|
498
501
|
```
|
|
499
502
|
|
|
500
503
|
`MY_DID` is the DID your Agent Entry prints at startup — **the same one**, from the same seed.
|
|
501
|
-
That is the only rule when running both
|
|
502
|
-
|
|
504
|
+
That is the only rule when running both, and **nothing here enforces it** — this package never
|
|
505
|
+
sees your in-page handoff. A mismatch is a site publishing two different identities for one
|
|
506
|
+
origin, which a careful visitor may notice and a careless one will not, so treat it as your
|
|
507
|
+
invariant to keep rather than a guard you are behind.
|
|
503
508
|
|
|
504
509
|
What the shop gets out of it: the moment that signed message arrives, an account exists. No
|
|
505
510
|
signup form, no password, nothing to reset — the sender's key is the account. Come back
|
|
@@ -642,7 +647,7 @@ in the same breath, in plain words.
|
|
|
642
647
|
|
|
643
648
|
This module is not alone. A Python reference implements the same contract, and the two are
|
|
644
649
|
held to **identical verdicts** by an acceptance suite: it runs the same attack battery
|
|
645
|
-
against both, drives this module against
|
|
650
|
+
against both, drives this module against the same wire vectors byte for byte, posts
|
|
646
651
|
identical bytes to each over real sockets — down to the HTTP framing — and requires the same
|
|
647
652
|
status, the same account outcome and the same signed reply from both. If you write a third
|
|
648
653
|
implementation, that suite is the gate.
|
|
@@ -671,9 +676,16 @@ because a shared library would only ever have covered the parts they happen to s
|
|
|
671
676
|
suite posts identical bytes to both, down to the HTTP framing, and requires the same status,
|
|
672
677
|
the same account outcome and the same signed reply.
|
|
673
678
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
679
|
+
**The part of that gate you can run here ships in this package.** `npm test` executes
|
|
680
|
+
`conformance/run.mjs` against `conformance/vectors.json` — the canonical JSON, the signing
|
|
681
|
+
payloads, the card envelopes and the `did:key` round-trips this module must reproduce byte
|
|
682
|
+
for byte. No network, no checkout of ours, nothing to ask us for:
|
|
683
|
+
|
|
684
|
+
```bash
|
|
685
|
+
npm test
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
Write a third implementation and point it at the same vectors.
|
|
677
689
|
|
|
678
690
|
## What this is part of
|
|
679
691
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muretai/agent-entry",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
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",
|