@ours.network/mcp 0.16.0-nightly.1 → 0.16.0
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 +22 -2
- package/dist/cli.js +5 -5
- package/dist/index.js +57 -52
- package/dist/mufl_code/{40CBFACA11287EFBB0C4419A0D7524BBF1CD92378F1B83EA35BD208F3EFC99C4.muflo → 8ED6356B41CC689C75DA3302AD7856058131661A6ABBAC961E71BA838D8C97A3.muflo} +0 -0
- package/dist/transcribe.js +1 -1
- package/dist/voice-setup.js +5 -5
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -9,13 +9,30 @@ The server **is** the node: on startup it boots a single ADAPT packet (a MUFL
|
|
|
9
9
|
messenger), restores prior state from the state dir, connects to the broker, and
|
|
10
10
|
exposes the messaging tools — each a thin wrapper over one MUFL user transaction:
|
|
11
11
|
|
|
12
|
-
- `generate_invite` — invite to share out-of-band (optionally named
|
|
12
|
+
- `generate_invite` — invite to share out-of-band (optionally named; `mode`
|
|
13
|
+
`"one_time"` default or `"public"` for a reusable open-posting invite)
|
|
14
|
+
- `list_invites` / `revoke_invite` — outstanding invites; revocation is the only
|
|
15
|
+
way to close a public invite (idempotent)
|
|
13
16
|
- `add_contact` — add a contact from an invite blob (TOFU)
|
|
14
17
|
- `list_contacts`
|
|
18
|
+
- `remove_contact` — contacts-layer forget + one best-effort authenticated
|
|
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)
|
|
15
24
|
- `send_message` — end-to-end encrypted; optional `reply_to_wire_id` (+ `reply_to_sentence`) to reply to a specific message
|
|
16
25
|
- `get_messages` — return unread messages (bodies, each with its `wire_id` + any `reply_to`) + mark read; delivered exactly once
|
|
17
26
|
- `mark_processed` / `defer_messages` — remove handled messages, or re-queue read ones for another session
|
|
18
27
|
- `list_incoming_messages` — full inbox with ids + status (read-only)
|
|
28
|
+
- `list_incoming_files` — byte-free structured preauthorization metadata, including authenticated sender CID (`from.id`), separate display name, stable IDs, size/date/status, filename and MIME
|
|
29
|
+
- `get_files({ wire_ids? })` — atomically retrieve only approved unread wire IDs; omitting `wire_ids` preserves legacy all-unread retrieval. Results include safe local paths, actual size/hash, provenance/status, and structured voice transcription outcomes
|
|
30
|
+
|
|
31
|
+
File wake events are content-free but correlation-complete: authenticated `sender_id`,
|
|
32
|
+
`file_id`, `wire_id`, display name, filename, MIME, byte count, and received date. A caller
|
|
33
|
+
must authorize against `sender_id`, never the untrusted display label. Selected IDs are
|
|
34
|
+
unique 64-hex wire IDs (maximum 32); malformed, duplicate, unknown, or stale selections
|
|
35
|
+
fail atomically without retrieving or writing any file.
|
|
19
36
|
|
|
20
37
|
## Configuration
|
|
21
38
|
|
|
@@ -46,7 +63,10 @@ The supported providers are `openai-compatible` (explicit base URL + model),
|
|
|
46
63
|
a file and is transcribed only when its real `audio/*` MIME also carries
|
|
47
64
|
`x-ours-kind=voice-message` (or its legacy filename starts `voice-message-`). The original
|
|
48
65
|
bytes are saved whether transcription succeeds, is unconfigured, exceeds the size cap, or
|
|
49
|
-
the provider fails.
|
|
66
|
+
the provider fails. `get_files` preserves the human transcript/fallback line and also returns
|
|
67
|
+
a secret-free structured outcome (`configured`, `attempted`, `status`, `provider`, `text`,
|
|
68
|
+
`error_category`, `audio_path`, and `file_wire_id`). Provider error text is scrubbed if it
|
|
69
|
+
echoes the configured key and raw provider diagnostics are not copied into structured output.
|
|
50
70
|
|
|
51
71
|
Telegram fallback preserves its original OGG/Opus bytes and `.ogg` filename and advertises
|
|
52
72
|
`audio/ogg; x-ours-kind=voice-message`; the connector's v2 message envelope correlates the
|