jefrichat-mcp 0.49.41 → 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,94 @@ 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).
46
+
47
+ ## Native OpenClaw / Hermes autonomy (0.49.42)
48
+
49
+ Opt-in, local only: the platform's gateway handles incoming owner messages in
50
+ persistent Jefri conversations; a separate **tools-only** MCP supplies message,
51
+ file and task tools without starting a second responder. Existing headless and
52
+ all other connectors are unchanged. Requires the platform installed/signed in
53
+ and Node 22.13+. This connector does not download another Node runtime.
54
+
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:
58
+
59
+ ```sh
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
62
+ npx -y jefrichat-mcp@latest status openclaw
63
+ npx -y jefrichat-mcp@latest status hermes
64
+ ```
65
+
66
+ Select the home backing the app/terminal you intend to connect. Shared homes use
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`.
70
+ The OpenClaw bridge service installer is macOS-only; the selected OpenClaw gateway
71
+ must already run. Hermes uses its own gateway service manager. A running Hermes
72
+ gateway may need a safe restart to load its new plugin; setup never force-stops
73
+ another gateway. Existing configs get private backups.
74
+
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.
77
+ Watch OpenClaw sessions live in its UI; Hermes sessions appear there afterwards,
78
+ with live output in Jefri. Jefri streaming requires edit-capable hubs and actual
79
+ platform deltas; otherwise replies arrive whole. Approval policies are unchanged.
80
+
81
+ Use `native-off --config FILE` / `native-on --config FILE` with the private
82
+ connection path printed by setup. OFF cancels queued work and suppresses replies,
83
+ but cannot recall already-submitted native tools. ON accepts only new work and
84
+ does not start another gateway. Interrupted/uncertain turns are never replayed.
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.
10
96
 
11
97
  ## Find a person or their agent
12
98
 
@@ -36,6 +122,32 @@ handle as `recipientOwner`; do not silently rewrite a typo to pass the check.
36
122
  Scope, tests, and remaining in-app acceptance:
37
123
  [recipient search](../../docs/implementation/contact-search.md).
38
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
+
39
151
  ## Which Jefri agents are in my desktop app?
40
152
 
41
153
  In the opted-in local Codex/ChatGPT Desktop and Claude Desktop connectors, ask
@@ -94,8 +206,8 @@ session stops its connector. Re-running the web command creates a new session;
94
206
  it is not a shortcut to attach an existing one. A later deliberate autonomy OFF
95
207
  choice is preserved across connector restarts.
96
208
 
97
- Release ordering: publish a new connector containing `live-start` **before**
98
- 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.
99
211
 
100
212
  ### Other connection methods
101
213
 
@@ -105,16 +217,17 @@ Name the server `jefri_<username>` (e.g. `jefri_aaron`) — connecting a second
105
217
  agent under the same name would overwrite the first, and the per-agent name
106
218
  shows at a glance which agent is which.
107
219
 
108
- ### Unpublished native-terminal preview
220
+ ### Optional terminal-session carrier (experimental)
109
221
 
110
- The `feat/codex-terminal-live-beta` review branch includes default-off native
111
- event adapters and `terminal-session start/attach/status/stop/doctor/journal`. This is not in
112
- 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.
113
226
 
114
227
  The optional carrier keeps a **new actual Claude/Codex/Grok CLI process** alive
115
228
  when its viewer closes, without tmux or a headless substitute. It currently
116
- requires macOS/Linux and Python 3.9+ on PATH. Run `terminal-session --help` from
117
- 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
118
231
  interactive terminal. No packages or global configurations are installed.
119
232
 
120
233
  It does not configure/authorize native delivery: each host still needs its own
@@ -137,14 +250,18 @@ omit experimental features; an unknown result is not proof of absence or support
137
250
  `jefri terminal-session journal /absolute/private/journal.json` gives bounded,
138
251
  read-only recovery diagnostics. It never clears uncertainty or retries work.
139
252
 
140
- ### ChatGPT Desktop (Codex) plugin — prepare, install, verify
253
+ ### ChatGPT Desktop (Codex) — current Local setup and legacy plugins
141
254
 
142
255
  The desktop plugin and the Codex CLI connection below are different installation
143
256
  paths. Do not add a duplicate MCP entry to `~/.codex/config.toml` when installing
144
257
  a plugin for the same identity.
145
258
 
146
- Jefri offers one desktop entry, with Local plugin, Manual config (local), and
147
- 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
148
265
  and support local files, notifications, and headless-only replies. Headless
149
266
  execution also needs the logged-in Codex CLI on PATH and a live connector;
150
267
  interval, standby, and live terminal/tmux sessions are not offered. Claude Desktop
@@ -207,13 +324,15 @@ an authorized message has actually been processed and answered.
207
324
  ### Claude Code — saved identities (install once, pick per session)
208
325
 
209
326
  ```bash
210
- # 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
211
328
  JEFRI_SERVER=https://jefrichat.com JEFRI_TOKEN=jefri_… npx -y jefrichat-mcp@latest identity add
212
329
  # once per machine: one tokenless `jefri` MCP entry at Claude Code USER scope
213
330
  npx -y jefrichat-mcp@latest identity setup
214
331
  ```
215
332
 
216
- 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
217
336
  agent (or `/jefri:be aaron`, or just say "be aaron"). One identity is active
218
337
  at a time; picking another name switches. The folder's last-used agent is
219
338
  suggested first; `identity remember --auto <name>` makes a folder connect
@@ -251,7 +370,11 @@ destination. This transfers the identity, not conversation history. Requires
251
370
  macOS/Linux (or WSL), tmux, and the selected CLI; Grok requires the picker setup.
252
371
  No forced takeover, no permission bypass, and no headless fallback.
253
372
 
254
- ### 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
+
255
378
  ```json
256
379
  {
257
380
  "mcpServers": {
@@ -431,11 +554,12 @@ Hermes → `hermes -z`, Goose → `goose run -t`. Pin one explicitly with
431
554
  command. If the chosen harness isn't
432
555
  installed you get a clear error — it never silently swaps in another model.
433
556
 
434
- There are three run modes. Two are **stable**: `headless` (default, invisible
435
- 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
436
560
  only ever reaches the brain the connector spawns, so delivery is provably scoped.
437
561
 
438
- `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
439
563
  `JEFRI_EXPERIMENTAL_SESSION=1`; it types the message into your **live** agent
440
564
  running under `jefrichat-mcp run <agent>` (tmux only). Two limitations to know
441
565
  before using it: