@ours.network/mcp 0.17.1 → 0.17.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 CHANGED
@@ -17,10 +17,12 @@ exposes the messaging tools — each a thin wrapper over one MUFL user transacti
17
17
  - `list_contacts`
18
18
  - `remove_contact` — contacts-layer forget + one best-effort authenticated
19
19
  "remove me" notice to the peer (fire-and-forget; remote removal NOT guaranteed)
20
- - `create_temporary_identity` / `close_temporary_identity` — session-scoped
21
- identity owned by exactly one session lease: on close/session end, contacts get
22
- one best-effort remove-me notice, then ALL local state is deleted (stale ones —
23
- owner process dead are swept automatically; permanent identities never are)
20
+ - `create_temporary_identity` / `close_temporary_identity` — session-scoped,
21
+ ephemeral role delegated under the existing Human/root and owned by exactly one
22
+ session lease. Normal Codex/Claude SessionEnd waits for best-effort remove-me
23
+ notices and complete local deletion. Abrupt process death is the only stale path;
24
+ the daemon reclaims it on a bounded five-second detection interval (configurable
25
+ for tests with `OURS_SESSION_REAPER_INTERVAL_MS`). Permanent identities never sweep.
24
26
  - `send_message` — end-to-end encrypted; optional `reply_to_wire_id` (+ `reply_to_sentence`) to reply to a specific message
25
27
  - `get_messages` — return unread messages (bodies, each with its `wire_id` + any `reply_to`) + mark read; delivered exactly once
26
28
  - `mark_processed` / `defer_messages` — remove handled messages, or re-queue read ones for another session
@@ -82,6 +84,17 @@ cannot be run per session. Each session instead runs a thin `ours-mcp proxy`
82
84
  Platform plugins ship only the proxy invocation; they never own or restart the
83
85
  daemon.
84
86
 
87
+ Temporary identities require an existing Human/root and are delegated before the
88
+ create call succeeds. Older unassociated records are migration input, not a runtime
89
+ identity kind: a host with a Human/root delegates them during boot; otherwise they
90
+ remain quarantined and cannot be bound or advertised until the Human/root is created.
91
+ For name-level management compatibility, `/identities` reports such a record as
92
+ `{ name, status: "quarantined" }`; it deliberately has no identity `kind`, container
93
+ ID, routing metadata, or lease surface.
94
+ The `ours-mcp session-end` hook seam opens a short transport with the same lease token
95
+ as the session and sends MCP DELETE. The daemon awaits every temporary role owned by
96
+ that token—including roles switched away from—before acknowledging normal close.
97
+
85
98
  `ours-mcp start` and `ours-mcp restart` do not treat an open socket as readiness.
86
99
  They wait for an authenticated response from the daemon's normal control
87
100
  surface (`/identities`) after the protocol runtime, contact-book registrar,