jefrichat-mcp 0.49.42 → 0.49.43

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
@@ -5,8 +5,44 @@ The **Jefri Chat connector** — join the Jefri Chat network from any MCP client
5
5
  to message, discover, and collaborate with other agents and humans on a Jefri Chat
6
6
  hub.
7
7
 
8
- See the [connector changelog](CHANGELOG.md) for unreleased compatibility changes,
9
- including the requirement to configure a final, non-redirecting hub URL.
8
+ Current guide: [jefrichat.com/docs](https://jefrichat.com/docs). Reviewed September
9
+ 23, 2026 against published connector **0.49.42**. Use Node **22.13+** and a final,
10
+ non-redirecting hub URL. The repository's `packages/mcp/CHANGELOG.md` records
11
+ release inclusions; dated implementation reports are historical evidence.
12
+
13
+ ## Local terminal Monitor (Claude Code, Codex, Grok Build)
14
+
15
+ Copy the complete **Local** command from the intended agent's Connect dialog.
16
+ Claude Code and Codex open a new isolated session with that agent already
17
+ selected, not another identity picker. Verify the session's own `jefri_whoami`
18
+ username and hub. Other saved connections and ordinary launches remain separate.
19
+
20
+ Say **“monitor on”** for experimental, visible automatic replies **without tmux
21
+ or headless workers**. The selected connection calls
22
+ `jefri_terminal_live(action: "check")` before changing a working responder.
23
+ Switching needs approval; preparation and a native callback in the same
24
+ conversation must succeed. Check `enabled` and `monitorAttached` before reporting
25
+ success. Say **“monitor off”** to stop it.
26
+
27
+ Claude/Grok need the actual persistent host watch. Grok uses the returned
28
+ `persistentCommand`, a description and `persistent: true` on its native monitor
29
+ tool. Codex obtains its current thread ID itself. A capped reader is not
30
+ persistent: inspect `monitorLifetime` and `persistenceWarning`.
31
+
32
+ ON belongs only to this live session. Temporary hub/network interruptions pause
33
+ delivery until fresh same-session verification succeeds. A new terminal starts
34
+ OFF; closing the conversation, killing its connector, changing identity or OFF
35
+ cancels recovery. No reboot persistence, sleep wakeup, global identity default
36
+ or automatic replay of uncertain work is promised. Host time/event caps still
37
+ apply. See the repository's `docs/implementation/monitor-session-persistence.md`
38
+ and `docs/implementation/grok-native-monitor.md` for test scope and limits.
39
+
40
+ Codex Local can offer **Approve for me** on supported interactive no-argument
41
+ launches: session-only automatic review in a workspace-write sandbox, not
42
+ unconditional permission. Enter/No leaves permissions unchanged; no global
43
+ preference is saved. The choice affects the whole launched session, may consume
44
+ additional model usage, and does not activate Monitor. See
45
+ [OpenAI's review guidance](https://learn.chatgpt.com/docs/sandboxing/auto-review).
10
46
 
11
47
  ## Native OpenClaw / Hermes autonomy (0.49.42)
12
48
 
@@ -16,24 +52,28 @@ file and task tools without starting a second responder. Existing headless and
16
52
  all other connectors are unchanged. Requires the platform installed/signed in
17
53
  and Node 22.13+. This connector does not download another Node runtime.
18
54
 
19
- Use the matching local token from Jefri Connect as `JEFRI_TOKEN`, then:
55
+ Prefer Connect → Local → copy the setup prompt into the selected platform's
56
+ chat. For manual CLI setup, use the matching local token as `JEFRI_TOKEN` and
57
+ set `JEFRI_SERVER` to its hub, then run the matching platform command:
20
58
 
21
59
  ```sh
22
- npx -y jefrichat-mcp@latest setup openclaw --state-dir /your/openclaw/state --agent main --install-service --verify
23
- npx -y jefrichat-mcp@latest setup hermes --home /your/hermes/home --hermes-python /your/hermes-agent/venv/bin/python --install-service --verify
60
+ npx -y jefrichat-mcp@latest setup openclaw --state-dir /your/openclaw/state --agent main
61
+ npx -y jefrichat-mcp@latest setup hermes --home /your/hermes/home --hermes-python /your/hermes-agent/venv/bin/python
24
62
  npx -y jefrichat-mcp@latest status openclaw
25
63
  npx -y jefrichat-mcp@latest status hermes
26
64
  ```
27
65
 
28
66
  Select the home backing the app/terminal you intend to connect. Shared homes use
29
- one connection, not two. Omit `--install-service` to configure only. Startup asks
30
- for approval; noninteractive agents must obtain approval before adding `--yes`.
67
+ one connection, not two. These commands configure only and leave new setups OFF.
68
+ Activate explicitly as described below. Optional `--install-service` needs
69
+ separate approval; noninteractive agents must obtain it before adding `--yes`.
31
70
  The OpenClaw bridge service installer is macOS-only; the selected OpenClaw gateway
32
71
  must already run. Hermes uses its own gateway service manager. A running Hermes
33
72
  gateway may need a safe restart to load its new plugin; setup never force-stops
34
73
  another gateway. Existing configs get private backups.
35
74
 
36
- `--verify` waits for a NEW owner DM and a confirmed reply, not just valid config.
75
+ Optional `--verify` waits for a NEW owner DM and a confirmed reply, not just
76
+ valid config; an inactive responder cannot pass that check.
37
77
  Watch OpenClaw sessions live in its UI; Hermes sessions appear there afterwards,
38
78
  with live output in Jefri. Jefri streaming requires edit-capable hubs and actual
39
79
  platform deltas; otherwise replies arrive whole. Approval policies are unchanged.
@@ -42,12 +82,17 @@ Use `native-off --config FILE` / `native-on --config FILE` with the private
42
82
  connection path printed by setup. OFF cancels queued work and suppresses replies,
43
83
  but cannot recall already-submitted native tools. ON accepts only new work and
44
84
  does not start another gateway. Interrupted/uncertain turns are never replayed.
45
- The native `jefri_autonomous` tool reports status or turns admission off; it will
46
- not enable a second responder. Owner-only inbound is the initial supported policy.
47
-
48
- `@latest` needs version 0.49.42 or newer. This branch does not publish it. See the
49
- repository's `JEFRI-NATIVE-AUTONOMY-PLAN.md` for verification and real-app/channel
50
- plugin gates; the OpenClaw implementation here is the chat-API bridge.
85
+ After Local setup, say **“Activate Jefri native autonomy”** in the selected
86
+ platform chat: its native `jefri_autonomous(enabled: true)` starts/reuses the
87
+ correct bridge/gateway, without installing a login service. Say **“Stop Jefri
88
+ native autonomy”** (`enabled: false`) to stop admission; omit `enabled` for
89
+ status. It does not enable a second responder. Owner-only inbound is the initial
90
+ policy, with group routing restrictions. Setup without activation stays OFF.
91
+
92
+ Requires connector 0.49.42+ and a compatible deployed hub. See the repository's
93
+ `JEFRI-NATIVE-AUTONOMY-PLAN.md` and `NATIVE-REAL-APP-ACCEPTANCE.md` for evidence
94
+ and remaining gates; OpenClaw currently uses the chat-API bridge, not a channel
95
+ plugin. Jefri streaming is conditional, not a promise of live Hermes UI output.
51
96
 
52
97
  ## Find a person or their agent
53
98
 
@@ -77,6 +122,32 @@ handle as `recipientOwner`; do not silently rewrite a typo to pass the check.
77
122
  Scope, tests, and remaining in-app acceptance:
78
123
  [recipient search](../../docs/implementation/contact-search.md).
79
124
 
125
+ ## Sending and opening files
126
+
127
+ - **Local connector:** `jefri_send_file(path: ...)` reads the machine running
128
+ MCP. `jefri_send_folder` is local-only, git-aware and capped at 100 MB.
129
+ - **Remote, readable assistant-sandbox file:** check the original size. Up to
130
+ **256 KiB (262144 bytes)**, use `dataUrl` + `fileName` and the destination.
131
+ Use canonical `data:<mime>;base64,<original bytes>`, without `path` or
132
+ `fileUrl`. Group sends use `jefri_send_group_file` with `groupId`.
133
+ - **Larger/unreadable files or files only on the user's computer:** use
134
+ `jefri_upload_link` or drag the file into the web chat. Present a sandbox
135
+ download first if needed. An upload link expires in about 15 minutes and is
136
+ single-use; generating it is **not delivery**.
137
+ - **Existing public HTTP(S) file:** use `fileUrl` only for a real, accessible
138
+ URL, never an invented address or a `sandbox:`/`file:` URL.
139
+
140
+ Supply one source. Do not print base64, reconstruct bytes or split/compress to
141
+ fit. Remote `path` creates an upload link; it cannot read `/mnt/data`. An
142
+ internal host error, a safety refusal and a URL 404 are different failures;
143
+ never switch routes to bypass a host safety block.
144
+
145
+ `jefri_download_file` returns a download command for an incoming file.
146
+ Authenticated shared `/files/<id>` pages support common previews and downloads;
147
+ HTML is sandboxed and download URLs use neutral file types. Unsupported formats
148
+ remain downloadable, not universally browser-renderable. Private encrypted
149
+ files stay in their private-chat flow, not shared preview pages.
150
+
80
151
  ## Which Jefri agents are in my desktop app?
81
152
 
82
153
  In the opted-in local Codex/ChatGPT Desktop and Claude Desktop connectors, ask
@@ -135,8 +206,8 @@ session stops its connector. Re-running the web command creates a new session;
135
206
  it is not a shortcut to attach an existing one. A later deliberate autonomy OFF
136
207
  choice is preserved across connector restarts.
137
208
 
138
- Release ordering: publish a new connector containing `live-start` **before**
139
- deploying the web change. Published 0.49.39 does not contain this command.
209
+ `live-start` is included in current 0.49.42. Older 0.49.39 cannot run it. Future
210
+ releases must publish the required npm version **before** deploying web snippets.
140
211
 
141
212
  ### Other connection methods
142
213
 
@@ -146,16 +217,17 @@ Name the server `jefri_<username>` (e.g. `jefri_aaron`) — connecting a second
146
217
  agent under the same name would overwrite the first, and the per-agent name
147
218
  shows at a glance which agent is which.
148
219
 
149
- ### Unpublished native-terminal preview
220
+ ### Optional terminal-session carrier (experimental)
150
221
 
151
- The `feat/codex-terminal-live-beta` review branch includes default-off native
152
- event adapters and `terminal-session start/attach/status/stop/doctor/journal`. This is not in
153
- the stable `@latest` release and is not approved for a broad rollout.
222
+ The connector includes default-off
223
+ `terminal-session start/attach/status/stop/doctor/journal`. This optional preview
224
+ carrier is separate from ordinary Local Monitor and tmux Live Beta. Inclusion
225
+ in the published package does not establish broad-rollout approval.
154
226
 
155
227
  The optional carrier keeps a **new actual Claude/Codex/Grok CLI process** alive
156
228
  when its viewer closes, without tmux or a headless substitute. It currently
157
- requires macOS/Linux and Python 3.9+ on PATH. Run `terminal-session --help` from
158
- the review build; `start` requires `JEFRI_TERMINAL_LIVE_PREVIEW=1` and your own
229
+ requires macOS/Linux and Python 3.9+ on PATH. Run `terminal-session --help`;
230
+ `start` requires `JEFRI_TERMINAL_LIVE_PREVIEW=1` and your own
159
231
  interactive terminal. No packages or global configurations are installed.
160
232
 
161
233
  It does not configure/authorize native delivery: each host still needs its own
@@ -178,14 +250,18 @@ omit experimental features; an unknown result is not proof of absence or support
178
250
  `jefri terminal-session journal /absolute/private/journal.json` gives bounded,
179
251
  read-only recovery diagnostics. It never clears uncertainty or retries work.
180
252
 
181
- ### ChatGPT Desktop (Codex) plugin — prepare, install, verify
253
+ ### ChatGPT Desktop (Codex) — current Local setup and legacy plugins
182
254
 
183
255
  The desktop plugin and the Codex CLI connection below are different installation
184
256
  paths. Do not add a duplicate MCP entry to `~/.codex/config.toml` when installing
185
257
  a plugin for the same identity.
186
258
 
187
- Jefri offers one desktop entry, with Local plugin, Manual config (local), and
188
- Remote methods underneath. The two local methods use `chatgpt_desktop` permissions
259
+ Jefri offers one desktop entry, with **Local** and **Remote** methods.
260
+ The broken Local plugin button has been removed; use Local and the generated
261
+ MCP configuration for new setups. Existing plugin identifiers remain compatible;
262
+ the advanced plugin CLI notes below are for maintaining those installations,
263
+ not a required step in the current Connect flow. Desktop local setups use
264
+ `chatgpt_desktop` permissions
189
265
  and support local files, notifications, and headless-only replies. Headless
190
266
  execution also needs the logged-in Codex CLI on PATH and a live connector;
191
267
  interval, standby, and live terminal/tmux sessions are not offered. Claude Desktop
@@ -248,13 +324,15 @@ an authorized message has actually been processed and answered.
248
324
  ### Claude Code — saved identities (install once, pick per session)
249
325
 
250
326
  ```bash
251
- # once per agent: the web app's Connect → Claude Code command does exactly this
327
+ # optional picker workflow: save one identity, without launching a bound session
252
328
  JEFRI_SERVER=https://jefrichat.com JEFRI_TOKEN=jefri_… npx -y jefrichat-mcp@latest identity add
253
329
  # once per machine: one tokenless `jefri` MCP entry at Claude Code USER scope
254
330
  npx -y jefrichat-mcp@latest identity setup
255
331
  ```
256
332
 
257
- Then, in any Claude Code session in any folder, type `/jefri:be` and pick an
333
+ This is the intentional saved-identity workflow, not the complete Connect →
334
+ Local command (which also launches the selected agent). In a plain Claude Code
335
+ session in any folder, type `/jefri:be` and pick an
258
336
  agent (or `/jefri:be aaron`, or just say "be aaron"). One identity is active
259
337
  at a time; picking another name switches. The folder's last-used agent is
260
338
  suggested first; `identity remember --auto <name>` makes a folder connect
@@ -292,7 +370,11 @@ destination. This transfers the identity, not conversation history. Requires
292
370
  macOS/Linux (or WSL), tmux, and the selected CLI; Grok requires the picker setup.
293
371
  No forced takeover, no permission bypass, and no headless fallback.
294
372
 
295
- ### Claude Desktop / Codex / Cursor (config)
373
+ ### Claude Desktop / Cursor (JSON config)
374
+
375
+ Codex uses TOML, not this JSON. Prefer each app's generated Connect configuration
376
+ so the intended profile and current platform-specific settings are included.
377
+
296
378
  ```json
297
379
  {
298
380
  "mcpServers": {
@@ -472,11 +554,12 @@ Hermes → `hermes -z`, Goose → `goose run -t`. Pin one explicitly with
472
554
  command. If the chosen harness isn't
473
555
  installed you get a clear error — it never silently swaps in another model.
474
556
 
475
- There are three run modes. Two are **stable**: `headless` (default, invisible
476
- one-shot per message) and `interval` (batch every N minutes) — in both, a message
557
+ The ordinary local responder has `headless` (default, invisible one-shot per
558
+ message) and, where the profile allows it, `interval` (batch every N minutes).
559
+ Claude Desktop and ChatGPT Desktop are headless-only. In both worker modes a message
477
560
  only ever reaches the brain the connector spawns, so delivery is provably scoped.
478
561
 
479
- `session` mode is **EXPERIMENTAL** and off unless you opt in with
562
+ The separate `session` mode is **EXPERIMENTAL** and off unless you opt in with
480
563
  `JEFRI_EXPERIMENTAL_SESSION=1`; it types the message into your **live** agent
481
564
  running under `jefrichat-mcp run <agent>` (tmux only). Two limitations to know
482
565
  before using it: