@cueai/omni-reader-mcp 1.7.0 → 1.7.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 +24 -22
- package/dist/cli/agent-config.js +2 -2
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/cube-client.js +1 -1
- package/dist/path-security.js +27 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,9 +47,11 @@ agent workspace remains the default allowed scope.
|
|
|
47
47
|
|
|
48
48
|
For a local file, Bridge requests a Cube parse grant and uses the returned controlled
|
|
49
49
|
granted-data-plane URL to upload the file and stream the result. A `BRIDGE_UPGRADE_REQUIRED`
|
|
50
|
-
error means the running Bridge release
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
error means the service does not accept the running Bridge release for direct local-file
|
|
51
|
+
parsing. Install the latest published `@cueai/omni-reader-mcp` release using the official
|
|
52
|
+
setup instructions, then retry once. If you are already running the latest published release,
|
|
53
|
+
do not reinstall or retry; run `doctor --json` and ask the service operator to verify Bridge
|
|
54
|
+
admission.
|
|
53
55
|
|
|
54
56
|
## Billing and free credits
|
|
55
57
|
|
|
@@ -86,7 +88,7 @@ authoritative billing/policy facts rather than estimating a charge from copied a
|
|
|
86
88
|
Always use an audited exact version, never an implicit `latest`:
|
|
87
89
|
|
|
88
90
|
```sh
|
|
89
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
91
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 setup
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
The interactive setup supports Hermes, Cursor, Claude Desktop, and generic stdio
|
|
@@ -94,9 +96,9 @@ configuration. Non-interactive installation uses the same argument parsing and w
|
|
|
94
96
|
logic:
|
|
95
97
|
|
|
96
98
|
```sh
|
|
97
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
98
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
99
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
99
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 setup --client hermes --allowed-root /absolute/minimum/root --yes --json
|
|
100
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 setup --client cursor --add-root /absolute/minimum/root --yes --json
|
|
101
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 setup --client claude-desktop --allowed-root /absolute/minimum/root --yes --json
|
|
100
102
|
```
|
|
101
103
|
|
|
102
104
|
When an agent or script runs under a pty (stdin is still a TTY), declare non-interactive
|
|
@@ -104,7 +106,7 @@ mode explicitly with `--headless` (alias `--non-interactive`): no `--yes` is req
|
|
|
104
106
|
stdin is never read:
|
|
105
107
|
|
|
106
108
|
```sh
|
|
107
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
109
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 setup --client cursor --allowed-root /absolute/minimum/root --headless --json
|
|
108
110
|
```
|
|
109
111
|
|
|
110
112
|
## Windows configuration
|
|
@@ -123,14 +125,14 @@ automatically; the second is the most robust when you configure by hand.
|
|
|
123
125
|
1. **`cmd` + `npx` (what `setup` writes on Windows)** — `cmd.exe` is a real executable,
|
|
124
126
|
so a client's no-shell spawn works:
|
|
125
127
|
```json
|
|
126
|
-
{ "command": "cmd", "args": ["/d", "/c", "npx", "-y", "@cueai/omni-reader-mcp@1.7.
|
|
128
|
+
{ "command": "cmd", "args": ["/d", "/c", "npx", "-y", "@cueai/omni-reader-mcp@1.7.2"] }
|
|
127
129
|
```
|
|
128
130
|
2. **`node` + the package entry (most robust)** — skips `npx` entirely; the absolute
|
|
129
131
|
path must be a stable install you control:
|
|
130
132
|
```json
|
|
131
133
|
{ "command": "node", "args": ["C:\\path\\to\\node_modules\\@cueai\\omni-reader-mcp\\dist\\index.js"] }
|
|
132
134
|
```
|
|
133
|
-
A deliberate local `npm install @cueai/omni-reader-mcp@1.7.
|
|
135
|
+
A deliberate local `npm install @cueai/omni-reader-mcp@1.7.2` gives you that stable
|
|
134
136
|
path. Do not point the entry at an `_npx` cache directory — its hash subdirectory
|
|
135
137
|
changes between installs.
|
|
136
138
|
3. **Never use a session/timestamp directory** — such paths are cleaned up, and the
|
|
@@ -304,16 +306,16 @@ satisfies the constraints.
|
|
|
304
306
|
## Commands
|
|
305
307
|
|
|
306
308
|
```sh
|
|
307
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
308
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
309
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
310
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
309
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 doctor
|
|
310
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 doctor --json
|
|
311
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 clean
|
|
312
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 uninstall --yes --json
|
|
311
313
|
```
|
|
312
314
|
|
|
313
315
|
Running the pinned version without a command starts the stdio MCP server:
|
|
314
316
|
|
|
315
317
|
```sh
|
|
316
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
318
|
+
npx -y @cueai/omni-reader-mcp@1.7.2
|
|
317
319
|
```
|
|
318
320
|
|
|
319
321
|
Default `doctor --json` reports `inspection_scope: "current_process_env"`: its Key and
|
|
@@ -321,7 +323,7 @@ allowed-root facts describe the doctor process, not a separately running agent c
|
|
|
321
323
|
inspect one caller-selected JSON entry without scanning or writing configuration, use:
|
|
322
324
|
|
|
323
325
|
```sh
|
|
324
|
-
npx -y @cueai/omni-reader-mcp@1.7.
|
|
326
|
+
npx -y @cueai/omni-reader-mcp@1.7.2 doctor --json --config-path /absolute/client-config.json --server-name omni-reader
|
|
325
327
|
```
|
|
326
328
|
|
|
327
329
|
The optional `explicit_config` block reports only closed redacted facts: entry/transport
|
|
@@ -339,7 +341,7 @@ definitively "available" until a real local-file parse validates the route.
|
|
|
339
341
|
|
|
340
342
|
## Network diagnostics
|
|
341
343
|
|
|
342
|
-
Run `npx -y @cueai/omni-reader-mcp@1.7.
|
|
344
|
+
Run `npx -y @cueai/omni-reader-mcp@1.7.2 doctor --json` first. Diagnose failures by
|
|
343
345
|
stage instead of guessing an endpoint:
|
|
344
346
|
|
|
345
347
|
| Failure | Stage | Meaning |
|
|
@@ -349,7 +351,7 @@ stage instead of guessing an endpoint:
|
|
|
349
351
|
| `DETAIL_CAPABILITIES_UNAVAILABLE` | before grant | this service does not currently advertise grounded/layout parsing; use text only when Markdown without grounding/layout sidecars is acceptable |
|
|
350
352
|
| `UNSUPPORTED_DETAIL` | before upload | the requested parsing representation/profile is unavailable; do not retry unchanged or describe the account as text-only |
|
|
351
353
|
| `PRINCIPAL_CONCURRENCY_LIMIT` | before upload | the principal already has the maximum active parses; wait for `retry_after`, then retry the same parse |
|
|
352
|
-
| `BRIDGE_UPGRADE_REQUIRED` | before upload |
|
|
354
|
+
| `BRIDGE_UPGRADE_REQUIRED` | before upload | install the latest published `@cueai/omni-reader-mcp` release, then retry once; if already running latest, do not reinstall or retry—run `doctor --json` and ask the service operator to verify Bridge admission |
|
|
353
355
|
| a secure upload-stage failure | after grant creation | the file was granted, but the secure upload stage did not complete |
|
|
354
356
|
| `CUBE_PROTOCOL_ERROR` | control-plane response | the response did not match the required contract |
|
|
355
357
|
| `MCP error -32000: Connection closed` | before Bridge starts | the client launcher shape is invalid; see Windows configuration |
|
|
@@ -368,16 +370,16 @@ the same way from every client.
|
|
|
368
370
|
|
|
369
371
|
## Uninstall and rollback
|
|
370
372
|
|
|
371
|
-
`uninstall --yes --json` removes only a trusted 1.
|
|
373
|
+
`uninstall --yes --json` removes only a trusted 1.7.1 or 1.7.2 Bridge entry, plus
|
|
372
374
|
the exact broken bare-`npx` Windows entry written by 1.5.1. When a matching trusted
|
|
373
375
|
backup exists, it restores the original URL-only `omni-reader` entry. Uninstall never
|
|
374
376
|
deletes user source files and never silently removes unexpired local results.
|
|
375
377
|
|
|
376
|
-
To roll back from 1.7.
|
|
378
|
+
To roll back from 1.7.2 to 1.7.1:
|
|
377
379
|
|
|
378
|
-
1. stop recommending or installing 1.7.
|
|
380
|
+
1. stop recommending or installing 1.7.2;
|
|
379
381
|
2. run `uninstall --yes --json` to restore the trusted URL-only entry;
|
|
380
|
-
3. if the local facade is still required, run `npx -y @cueai/omni-reader-mcp@1.
|
|
382
|
+
3. if the local facade is still required, run `npx -y @cueai/omni-reader-mcp@1.7.1 setup`;
|
|
381
383
|
4. for already-uploaded operations, continue using status recovery so settlement and
|
|
382
384
|
cleanup complete;
|
|
383
385
|
5. keep local results, or have the user explicitly run `discard_result` / `clean`.
|
package/dist/cli/agent-config.js
CHANGED
|
@@ -7,7 +7,7 @@ const PACKAGE_SPEC = `@cueai/omni-reader-mcp@${BRIDGE_RELEASE_VERSION}`;
|
|
|
7
7
|
// The release that the current version is a trusted upgrade from: normal upgrade,
|
|
8
8
|
// uninstall, and rollback recognize exactly {previous, current}. Bump this to the
|
|
9
9
|
// version we just published when BRIDGE_RELEASE_VERSION advances.
|
|
10
|
-
const PREVIOUS_RELEASE_VERSION = "1.
|
|
10
|
+
const PREVIOUS_RELEASE_VERSION = "1.7.1";
|
|
11
11
|
const PREVIOUS_PACKAGE_SPEC = `@cueai/omni-reader-mcp@${PREVIOUS_RELEASE_VERSION}`;
|
|
12
12
|
// Preserve the one evidenced two-release migration exception: 1.5.1 setup wrote a
|
|
13
13
|
// bare `npx` launcher on Windows, so later setup/uninstall versions must still be able
|
|
@@ -641,7 +641,7 @@ export function expectedBridgeVersion(target, value, platform) {
|
|
|
641
641
|
}
|
|
642
642
|
function isLegacyBridgeEntry(target, value, platform) {
|
|
643
643
|
// Defer the entire invocation-shape decision to the single platform policy:
|
|
644
|
-
// exact pinned {1.
|
|
644
|
+
// exact pinned {1.7.0 previous, 1.7.1 current} plus the exact Windows 1.5.1
|
|
645
645
|
// bare-npx migration source. The historical platform-agnostic acceptance of a
|
|
646
646
|
// bare unpinned `npx -y @cueai/omni-reader-mcp` is removed: it widened the
|
|
647
647
|
// frozen trust set to a floating latest on every OS, which expectedBridgeVersion
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
|
|
|
6
6
|
export declare const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
|
|
7
7
|
export declare const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
|
|
8
8
|
export declare const DEFAULT_IIIS_GRANTED_BASE_URL = "https://omni-upload.cuecue.cn/omni/granted/";
|
|
9
|
-
export declare const BRIDGE_RELEASE_VERSION = "1.7.
|
|
9
|
+
export declare const BRIDGE_RELEASE_VERSION = "1.7.2";
|
|
10
10
|
export declare const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
|
|
11
11
|
export declare const FOREGROUND_BUDGET_MS = 15000;
|
|
12
12
|
export declare const STATUS_LONG_POLL_MAX_MS = 20000;
|
package/dist/constants.js
CHANGED
|
@@ -6,7 +6,7 @@ export const CUBE_GRANT_PROTOCOL_VERSION = "omni.parse_grant.v1";
|
|
|
6
6
|
export const GRANTED_STREAM_PROTOCOL_VERSION = "omni.granted_parse_stream.v1";
|
|
7
7
|
export const DEFAULT_CUBE_BASE_URL = "https://mcp.cuecue.cn";
|
|
8
8
|
export const DEFAULT_IIIS_GRANTED_BASE_URL = "https://omni-upload.cuecue.cn/omni/granted/";
|
|
9
|
-
export const BRIDGE_RELEASE_VERSION = "1.7.
|
|
9
|
+
export const BRIDGE_RELEASE_VERSION = "1.7.2";
|
|
10
10
|
export const REMOTE_OMNI_MCP_URL = "https://mcp.cuecue.cn/api/omni-reader/mcp/";
|
|
11
11
|
export const FOREGROUND_BUDGET_MS = 15_000;
|
|
12
12
|
export const STATUS_LONG_POLL_MAX_MS = 20_000;
|
package/dist/cube-client.js
CHANGED
|
@@ -371,7 +371,7 @@ async function grantResponseError(response) {
|
|
|
371
371
|
return bridgeError("BRIDGE_UPGRADE_REQUIRED", "This Bridge release is not accepted for direct local-file parsing.", false, {
|
|
372
372
|
failureScope: "service",
|
|
373
373
|
sourceKind: "local",
|
|
374
|
-
userAction:
|
|
374
|
+
userAction: "Install the latest published @cueai/omni-reader-mcp release using the official Omni setup instructions, then retry once. If you are already running the latest published release, do not reinstall or retry; run doctor --json and ask the service operator to verify Bridge admission.",
|
|
375
375
|
});
|
|
376
376
|
}
|
|
377
377
|
}
|
package/dist/path-security.js
CHANGED
|
@@ -15,6 +15,11 @@ const CONTENT_TYPES = {
|
|
|
15
15
|
".xls": "application/vnd.ms-excel",
|
|
16
16
|
".ppt": "application/vnd.ms-powerpoint",
|
|
17
17
|
".zip": "application/zip",
|
|
18
|
+
".rar": "application/vnd.rar",
|
|
19
|
+
".tar": "application/x-tar",
|
|
20
|
+
".tgz": "application/gzip",
|
|
21
|
+
".gz": "application/gzip",
|
|
22
|
+
".bz2": "application/x-bzip2",
|
|
18
23
|
".jpg": "image/jpeg",
|
|
19
24
|
".jpeg": "image/jpeg",
|
|
20
25
|
".png": "image/png",
|
|
@@ -40,8 +45,30 @@ const CONTENT_TYPES = {
|
|
|
40
45
|
".txt": "text/plain",
|
|
41
46
|
".md": "text/markdown",
|
|
42
47
|
".csv": "text/csv",
|
|
48
|
+
".tsv": "text/tab-separated-values",
|
|
49
|
+
".json": "application/json",
|
|
50
|
+
".yaml": "application/yaml",
|
|
51
|
+
".yml": "application/yaml",
|
|
52
|
+
".toml": "application/toml",
|
|
53
|
+
".xml": "application/xml",
|
|
54
|
+
".ini": "text/plain",
|
|
55
|
+
".cfg": "text/plain",
|
|
56
|
+
".conf": "text/plain",
|
|
57
|
+
".log": "text/plain",
|
|
58
|
+
".rdf": "application/rdf+xml",
|
|
59
|
+
".ttl": "text/turtle",
|
|
60
|
+
".nt": "application/n-triples",
|
|
61
|
+
".n3": "text/n3",
|
|
62
|
+
".jsonld": "application/ld+json",
|
|
63
|
+
".mm": "application/x-freemind",
|
|
43
64
|
".html": "text/html",
|
|
44
65
|
".htm": "text/html",
|
|
66
|
+
// Deliberately excluded: .parquet — not text, not any of the magic-byte formats above,
|
|
67
|
+
// so L1's detect_format() falls through to "other" and it is rejected as an unsupported
|
|
68
|
+
// media type either way. (deploy/k8s/omni-reader-deploy.yaml sets an OMNI_PARQUET_POLICY
|
|
69
|
+
// env var, but nothing in pipeline/ currently reads it — the actual rejection is the
|
|
70
|
+
// generic fallback, not that policy.) Accepting it here would only move the rejection
|
|
71
|
+
// from Bridge to the server.
|
|
45
72
|
};
|
|
46
73
|
const SUPPORTED_EXTENSIONS = [...new Set(Object.keys(CONTENT_TYPES).map((extension) => extension.slice(1)))].sort();
|
|
47
74
|
const NODE_FILE_SYSTEM = {
|