@muvon/octofs 0.14.1 → 0.15.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 +16 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,6 +58,7 @@ Your AI coding assistant (Cursor, Claude, Windsurf, etc.) is smart — but it's
|
|
|
58
58
|
| **Transport** | STDIO + Streamable HTTP | STDIO only |
|
|
59
59
|
| **Shell Integration** | Automatic foreground-to-background handoff | Limited or none |
|
|
60
60
|
| **Remote Files** | Transparent SSH/SFTP on every file tool | None |
|
|
61
|
+
| **Re-reads** | Delta views — re-viewing a file returns only the hunks changed since | Full file every time |
|
|
61
62
|
| **Safety** | Gitignore-aware, stale-write detection, path validation | Full filesystem access |
|
|
62
63
|
|
|
63
64
|
---
|
|
@@ -234,7 +235,10 @@ Edit tools take these ids back as targets and verify the hash against the file
|
|
|
234
235
|
before applying anything. A stale id (the file changed since it was viewed) fails
|
|
235
236
|
with the current content around the target and where the expected content moved —
|
|
236
237
|
so the model retargets from the error instead of re-reading the file. Edit results
|
|
237
|
-
are diffs with fresh ids, so edits chain without re-viewing.
|
|
238
|
+
are diffs with fresh ids, so edits chain without re-viewing. Removed lines collapse
|
|
239
|
+
to their old id range (`-12:a3..15:f1 (4 lines)`), and a trailing
|
|
240
|
+
`shift: lines after 40:b2 +3` line says how original line numbers below each edit
|
|
241
|
+
moved, so ids the model still holds can be adjusted without a failed call.
|
|
238
242
|
|
|
239
243
|
This is the single line-id format — there is no mode switch. Plain line numbers
|
|
240
244
|
are still accepted where a position alone is safe: `view` ranges (negative counts
|
|
@@ -301,6 +305,7 @@ octofs mcp --path ssh://deploy@example.com/var/www/app --ssh-key ~/.ssh/id_ed255
|
|
|
301
305
|
view path="ssh://deploy@example.com/etc/nginx/nginx.conf"
|
|
302
306
|
```
|
|
303
307
|
|
|
308
|
+
- **Login home** — `ssh://host` (no path) and `ssh://host/~/dir` resolve against the login user's home, like `ssh host` / `scp host:dir`. `ssh://host/dir` stays absolute.
|
|
304
309
|
- **OpenSSH config** — host aliases are resolved through the local OpenSSH config (including `Include` and `Match`) and honor `HostName`, `User`, `Port`, and a single `ProxyJump`. Explicit URL values win, so both `ssh://dev/path` and `ssh://user@example.com:2222/path` work as expected. Multi-hop `ProxyJump` and `ProxyCommand` routing are rejected with a clear error.
|
|
305
310
|
- **Authentication** — uses the host's `IdentityAgent` (e.g. 1Password) or `$SSH_AUTH_SOCK`, then key files — `--ssh-key` if given, the host's `IdentityFile` entries, then the defaults in `~/.ssh` (`id_ed25519`, `id_ecdsa`). Passphrase-protected key files are not supported directly; use an agent instead.
|
|
306
311
|
- **RSA keys are not supported** — the Rust `rsa` crate has an unfixed timing side-channel (Marvin attack, [RUSTSEC-2023-0071](https://rustsec.org/advisories/RUSTSEC-2023-0071)), so octofs is built without RSA entirely. Use an ed25519 key instead (`ssh-keygen -t ed25519`); ecdsa also works. RSA-only setups fail with a clear error naming the key.
|
|
@@ -329,6 +334,16 @@ that `batch_edit` and `extract_lines` take as targets.
|
|
|
329
334
|
|
|
330
335
|
To read several files, make multiple `view` calls — they run in parallel.
|
|
331
336
|
|
|
337
|
+
**Delta views:** a whole-file view of a file the session already served returns
|
|
338
|
+
only the hunks changed since — the same `...`/`-`/`+` style as edit results, with
|
|
339
|
+
removed lines collapsed to their old id range — or
|
|
340
|
+
`[unchanged since you last viewed or edited it: N lines. Pass full: true to re-read.]`.
|
|
341
|
+
Octofs' own edits keep the cache current, so a re-view after your own `batch_edit`
|
|
342
|
+
costs one line. Ranged views and content search always render exactly what was asked.
|
|
343
|
+
```json
|
|
344
|
+
{"path": "src/main.rs", "full": true} // force the complete file (e.g. after context compaction)
|
|
345
|
+
```
|
|
346
|
+
|
|
332
347
|
**Directory listing:**
|
|
333
348
|
```json
|
|
334
349
|
{"path": "src/"}
|